묻고 답해요
140만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
강의자료 요청
안녕하세요! 수업 정말 잘 듣고 있습니다.1부는 강의 자료가 제공이 됐는데(1장에서 6장까지의 내용), 2부에서부터는 강의 자료가 제공 되지 않는것 같은데요, 혹시 강의 자료가 제공이 안되나요??? 아니면 제가 강의 자료의 위치를 못 찾은 걸까요???
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
[3.2.2.4] Exception 발생시 CPSR <-> SPSR의 동작 질문
안녕하세요? 재미있게 강의를 듣고 있는 수강생입니다. 강의에서 보여주신 Flow에서 어느 부분이 HW 적으로 처리되고 어느 부분이 SW 적으로 처리되는지 여부가 불분명 되지 않아 질문드립니다. 1) Exception에 의해 Mode 전환이 되는 경우, Exception발생시 C/SPSR간 Copy는 HW적으로 되지만, 실제 Mode 전환은 CPSR의 Mode Bit 설정에 의해 이루어질 것으로 생각됩니다. 이 과정에서 "CPSR.M = 0x12" 이 부분은 ARM이 자동으로 해줘야할 것으로 생각되는데 맞는지요?2) ISR에서 SPSRs이나 R14_s 등을 백업해야해 둬야하는 이유가 명확하지 않아 질문을 드립니다. Link Register인 R14의 경우에는 ISR에서 함수 호출이 있을 경우 변경이 생길 수 있어 후에 Return을 위해 백업을 해두어야할 것 같은데, SPSR은 Exception 발생시에만 HW가 자동으로 Copy하기 때문에 굳이 백업이 필요한가라는 생각이 듭니다. 2-1) 혹시 모를 SW Bug에 의한 Corruption에 대한 대응책인지요? 2-2) 그렇다면 이 Register가 Read-Only가 아니라는 것인데, 이 Register를 SW가 조작해야하는 Case가 있는지요? 없다면 아예 bug 방지를 위해 Read-Onlly로 만드는 편이 좋을 것 같은 생각이 들어 질문드립니다. 3) 복귀시에 전환 Mode에서 원 Mode로의 복귀는 CPSR.M이 원 모드로 설정이 되어야할 것 같은데, SPSR_irq.M=0x13으로 원복하는 것만 있어서 질문드립니다. MOVS PC R14_irq를 하면 ARM이 SPSR_irq.M의 원복된 내용을 CPSR로 자동으로 Copy를 해주는 것인지요? 감사합니다.
-
해결됨ARM Cortex-M 프로세서 프로그래밍
파이프라인과 명령어
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님, 안녕하세요! 아래의 내용은 강사님께서 다른 분의 질문에 답변 해주신 부분인데 이해가 안되서 질문 남깁니다.(1)번을 처리하고 난 후, (2)(3)번을 한번에 페치하여 처리할 것을 짐작할 수 있겠죠. 그렇기에 (2)번 라인을 실행할 때는 페치를 건너뛸 것(쉬고 간다는 뜻)을 예상할 수 있을 겁니다.(1)thumb2 명령어(32비트 명령어)(2)thumb 명령어(16비트 명령어)(3)thumb 명령어(16비트 명령어)(4)thumb2 명령어(32비트 명령어)cortex-m4에서 명령어 fetch 단위가 32bit인가요?파이프라인 구조에서 1 clock마다 메모리에서 32bit를 fetch 하는 게 맞나요?2-1. 이때 16bit thumb2 명령어 2개라면 각각의 명령어가 decode → execute가 진행되는건가요?위 답변에서 (1)번 라인을 실행(즉, (2)번 라인을 decode))할 때 페치를 건너 뛰는게 아닌가요?답변 부탁드립니다.
-
미해결Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
ISB 배리어에 대한 질문입니다.
ISB배리어에 대해 학습을 하면서 제가 생각했을 때는 이해가 잘되지 않은 부분이 있어 질문을 드립니다. 제가 이해한 ISB배리어의 사용 이유는 다음과 같습니다.명령어는 파이프라인을 통해 페치, 디코드, 실행을 단계를 걸쳐 병렬적으로 실행된다.ISB 배리어는 시스템 레지스터를 설정한 후에 주로 사용된다.그 이유는 시스템 레지스터을 설정한 명령어가 실행되기 전에 페치된 명령어에서 잘못 설정된 시스템 레지스터 설정 값을 읽을 수 있기 때문에파이프라인에서 플러시를 통해 비우고 시스템 레지스터를 설정하는 명령어가 실행단계까지 완료된 다음에 다음 명령어를 페치를 한다. 그리고 여기서 생긴 의문은 그렇다면 굳이 시스템 레지스터가 아니라 노멀 레지스터를 읽고 쓸 때도 이런 문제가 생길테니 ISB 명령어를 사용해야하는가? 입니다. 위 글에서 부족한 부분이 있다면 그 부분에 대해서도 설명해주시면 감사하겠습니다.
-
해결됨시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
강의 자료 관련 문의
안녕하세요.강의 자료와 관련된 질문이 있어 문의드립니다. 교안 파일을 열었을 때, 아래와 같이 글씨가 점으로 나타나는 현상이 있습니다.확인 부탁드립니다.감사합니다.
-
미해결ARM Cortex-M 프로세서 프로그래밍
명령어 fetch
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님 안녕하세요? 위의 질문과 유사하지만 더 명확하게 하고 싶어 질문 남깁니다. 강의에서 CORTEX-M 시리즈는 명령어를 항상 32bit 단위로 fetch. 여기서 1)명령어가 Thumb-2 32bit이면 명령어 1개가 실행. 2)명령어가 Thumb or Thumb-2 16bit 명령이면 명령어 2개가 동시에(순차적으로) 실행. 제가 이해한게 맞을까요?3)32bit 단위로 fetch하니깐 PC 레지스터의 값은 항상 4씩 증가하나요? 감사합니다.
-
미해결Arm 아키텍처: 트러스트존(TrustZone) [저자직강 3부-1]
Current Exception Level 설정
안녕하세요. 익셉션 벡터 테이블에서 Current Exception Level이 어떤 경우에는 EL1이 되고 EL3가 되는지 궁금합니다. 예를 들면, 시큐어 모니터가 포함된 시스템에서는 무조건 Current Exception Level이 EL3로 설정되는 것인지 입니다.
-
해결됨ARM Cortex-M 프로세서 프로그래밍
lr 레지스터 LSB 값
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 꼼꼼한 강의에 항상 감사드립니다!강의 중에 lr 레지스터에 저장된 값의 LSB가 1이면 Thumb 명령어라고 하셨는데 Thumb2 명령어는 따로 구분하는게 있나요?
-
미해결ARM Cortex-M 프로세서 프로그래밍
Disassembly 창 문제
Debug를 하고 처음 Disassembly 창을 열면 정상적으로 코드들이 보이지만 여기서 추가로 Debug나 Terminate And Relaunch를 하게 되면 아래 그림과 같이 No debug context라고 뜨면서 코드들이 보이지 않습니다. 이를 해결하는 방법이 있을까요?
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
강의자료
안녕하세요, 강의 자료 pdf 어디서 다운로드 받을수있을까요? 아직 업로드가 안된거라면 언제쯤 업로드가될까요. 감사합니다.
-
미해결Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]
익셉션 모델을 이용한 하이퍼바이저를 구현 질문
안녕하세요.익셉션 모델을 이용해서 하이퍼바이저를 구현하는 방식말고 다른 방법,모델로 하이퍼바이저를 구현하는 방법이 더 있는지 문의드립니다.익셉션 모델을 이용해서 하이퍼바이저를 구현한다라는 포괄적인 의미가 잘 이해되지 않아서 이런 질문이 발생한 것 같습니다.감사합니다.
-
미해결Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]
lower exception level 핸들러 질문
다음 두가지중에 어떤 것이 맞는지 문의드립니다.1. wfe, wfi, hvc를 이용해서 guest exit을 했을때 익셉션이 발생하면 synchronous 익셉션 주소로 분기2. wfe, wfi, hvc를 이용해서 guest exit을 하면 무조건 synchronous 익셉션 주소로 분기
-
미해결Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]
익셉션 벡터 테이블 질문
안녕하세요. 강의 내용을 다음과 같이 이해했는데 맞는지 문의드립니다. "현재 하이퍼바이저 모드(EL2)가 동작하는 시스템인데, 게스트 OS 커널(EL1)에서 Synchronous 익셉션이 발생하면 VBAR_EL2 + 0x400 으로 PC를 설정한다" 감사합니다.
-
해결됨Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]
트랩 명령어 질문
안녕하세요.HVC, TWI, TWE 명령어에서 각각의 용도 및 차이점이 궁금합니다. 즉 어떤 상황에서 HVC, TWI, TWE가 사용하도록 권장되는지 궁금합니다.감사합니다.
-
미해결ARM Cortex-M 프로세서 프로그래밍
s702 강좌에서 사용한 technical reference manual 문서
GPIOG 의 레지스터 주소를 알기 위해서 Technical Reference Manual 문서 : RM0090 문서를 사용하셨는데 해당 문서는 STM32F429 뿐만 아니라 STM32F407에도 사용가능한가요? 감사합니다 현정호 드림
-
해결됨시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
LDP 명령어 사용예시
위에서 SP레지스터의 값과 오프셋을 더한 주소에 있는 값을 기준으로 레지스터에 저장한다고 되어 있는데그림을 확인하면 SP레지스터의 값을 기준으로 레지스터에 저장한 후에 SP 레지스터의 값을 업데이트하는 것으로 보입니다.둘 중 어느 것이 맞는 건가요?
-
해결됨시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
강의하신 강의자료
안녕하세요 해당 강의들에 대한 강의자료는 강사님께서 언제쯤 올려주시는지 여쭤봅니다~~!
-
미해결ARM Cortex-M 프로세서 프로그래밍
s702에 원자적 Access 를 위한 BSRR 코드작성 부분에 대해서
LED 점등을 위해 if 문 작성을 한 부분에 문의사항이 있습니다. if 문 조건을 보면 ODR 레지스터의 값을 조회하고서 BSRR 레지스터에 값을 입력하는 것으로 LED 점등을 하는데요 (GPIOG_13번) BSRR 레지스터에 값을 기록하면 ODR 레지스터에 값을 기록할 때와 다르게 바로 값만 입력하게 되어서 코드 블럭이 생기지 않는다고 하였는데 작성한 코드 전체에서 BSRR 에 값을 Write 하도록 작성되어있지만 if문 조건에서는 ODR 레지스터의 값을 Read 하는 동작이 섞여있어서 여전히 ODR 레지스터를 Read 하는 과정이 도중 중지되지 않을까 합니다?? 그런일이 안발생되는 BSRR 레지스터 Write 동작이 독립적/개별적으로 이루어진다고 말씀하신다면 확신할 수 있게 Disassembly를 통해 직접 확인하는 것을 영상추가해주실 순 없나요? 관련내용 사진 첨부드립니다.
-
해결됨시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
CMP 명령어 예제 중
CMP 명령어의 예제 설명 부분에서CMP R2, 0x13 일때 R2가 0x14인 경우 결과에 CPSR.{N,Z,C,V} 라고 해주셨는데 0x14 - 0x13의 경우 연산의 결과가 0이 아닌데 어째서 Z flag가 업데이트 된다는 것인가요?
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
MVN 명령어 사용이유 질문
MVN R0, #7 명령어를 통해 MVN을 공부하다 생긴 궁금증입니다MOV R0, 0xFFFFFF8 과 같은 의미가 아닐까 하고 생각해보았는데 Armv7기준 32bit 단위로 명령어를 가져오는데 이 경우 상수로 전달되는 값이 32bit이기 때문에 명령어를 올바르게 해석하지 못하지 않을까 라는 결론을 가졌습니다. 제가 올바르게 생각한게 맞나요? 만약 맞다면 SUB 명령어를 통해 음수값을 만드는 것과 차이점이 있나요?또한 상수값이 아닌 Operand Register값이 들어갈 수도 있나요? 좋은 강의 감사합니다