묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
Exception Level 설정 관련 질문
안녕하세요! Exception Level 관련 질문이 있습니다. 질문) Exception Level을 프로그래머가 직접 설정하는 것인가요?Exception 발생하는 경우를 예시로H/W설계자가 결정 한 것VBAR 레지스터에 설정된 주소 + Offset 위치로 분기하도록 설계Exception 유발 직전 상태의 PSTATE값 백업PSATE 값 변경 : 현재 EL0인 경우 EL1로 변경ELR, ESR 업데이트 프로그래머가 설정하는 부분VBAR 레지스터의 값은 프로그래머가 미리 초기화Exception Vector 주소로 분기 한 경우, 어떻게 동작할지 코드 작성 → Exception Handler 작성결국 프로그래머가 Exception Handler를 작성하는 것으로 이해했는데, 프로그래머가 자신이 작성하는 코드의 Exception Level을 설정할 수 있나요?프로그래머가 작성하는 코드의 Exception Level이 어떻게 결정되는지 궁금합니다.
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
Current EL 관련 질문
안녕하세요! 우선 너무 좋은 강의 잘 보고 있습니다. 질문Current Exception Level 정의를 어떻게 내리는지 질문드립니다. 제가 처음에 이해하기로는 리눅스OS 위에서 User App이 실행 중 Exception이 발생했다면 Current El = EL0 라고 생각했습니다.하지만 강의를 듣다보니 Exception handler가 어느 EL에 정의 되어있는지에 따라 Current EL을 정의해야하는 것이라고 이해했는데,위와 같이 이해하면 문제가 없을까요?
-
해결됨시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
TRACE32 사용 실습에서 RASPIAN KERNEL DEBUG
3.2.1.4, 5 강의에서 TRACE32 사용 실습을 해주시는데요. 강의 내용을 익히기 위해 범용 레지스터를 설정을 하면서 실습을 해보려고 합니다. 이때 실행하고 계시는 RASPBIAN KERNEL DEBUG를 어떻게 실행하나요?또는 실습을 위해 첨부해주신 T32 파일에서 실행할수 있는 데모앱이 있을까요?
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
강의 내용 짤린건가요?
안녕하세요. 5.1.2강의를 보는데 20분정도 마지막쯤에 PL에 대해서 설명하는 부분이 1초정도 나왔다가 짤린듯합니다?
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
TRACE32 프로그램
안녕하세요3.2.1.4 강의에서 나오는 TRACE32 프로그램이랑 인프런에있는 프로그램이랑 켰을때 뜨는게 다릅니다인프런에서 다운받은거는 실행시키고 r명령을 입력하면 위의 그림처럼 뜹니다.강의에서는 RASPBIAN KERNEL DEBUG이름이고 r을입력하면 레지스트 목록이 뜹니다.강의랑 같은 환경설정을 하려면 어떻게 해야합니까?
-
미해결Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
메모리 맵드 I/O에 대해서
안녕하세요 강의를 정말 잘 듣고 있습니다!!메모리 맵드 I/O에 대해 궁금한게 있어서 질문을 남깁니다.강의 내용 중 메모리 맵드 I/O 된 영역은 device memory라고 말씀을 하시면서 메모리 맵드 I/O가 된 경우 ldr str와 같은 명령어에 의해 그 영역에 값을쓰면 그와 연결된 포트를 통해 I/O장치 또는 레지스터에 값이 쓰여진다라고 말씀을 하셨는데요, 그러면 mcr mrc msr mrs와 같은 명령어를 통해 레지스터에 값을 써야 하는 것들은 메모리 맵드 I/O가 아닌건가요? 메모리 맵드 I/O된 것들은 전부 ldr str과 같은 명령어를 사용하여 값을 읽고 쓸 수 있는건가요??? 추가로 궁금한것이, 제가 잘못 알고있는것일 수도 있지만, 임베디드 레시피라는 책에 보면 메모리 맵드 I/O 같은 경우 Register 크기 만큼씩 Access 가능하다고 나와있습니다. 그렇다면 memory mapped I/O된 영역에 레지스터 크기가 4바이트인데 strb 또는 strh와 같은 명령어를 통해 read를 하면 에러가 난다고 이해하면 될까요??? 만약에 strb strh와 같은 명령어를 통해 에러가 발생한다면 그때 발생하건 exception인가요 아니면 그냥 ignore 되는건가요???
-
미해결Arm 아키텍처: 캐시(Cache) [저자직강 3부-4]
캐시의 친화적인 코드
안녕하세요, 선생님 시스템 소프트웨어의 개발의 모든 것 강의에 이어서 이번 강의도 정말 잘 보았습니다. 강의 내용과, 강의 소개란에 보면"둘째, 캐시의 구조를 잘 알면 캐시 히트를 활용한 캐시의 친화적인 코드를 작성할 수 있습니다. 예를 들어, 자주 사용되는 루틴은 특정 CPU 코어에서만 실행되도록 설계할 수 있습니다." 라는 문구가 잘 이해가 안되어 질문 드립니다.실무에서 어떤 상황에 캐시 친하적인 코드를 실제로 작성하게 되는지, 자주 사용되는 루틴은 어떤 것이 있고 어떤 업무(?)를 주로 맡았을 때 저런 개발을 하게 되는지 궁금합니다.가능하시다면 조금 더 구체적인 사례를 선생님께 듣고 싶습니다.미리 감사드립니다
-
미해결시스템 소프트웨어 개발을 위한 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 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
ISB 배리어에 대한 질문입니다.
ISB배리어에 대해 학습을 하면서 제가 생각했을 때는 이해가 잘되지 않은 부분이 있어 질문을 드립니다. 제가 이해한 ISB배리어의 사용 이유는 다음과 같습니다.명령어는 파이프라인을 통해 페치, 디코드, 실행을 단계를 걸쳐 병렬적으로 실행된다.ISB 배리어는 시스템 레지스터를 설정한 후에 주로 사용된다.그 이유는 시스템 레지스터을 설정한 명령어가 실행되기 전에 페치된 명령어에서 잘못 설정된 시스템 레지스터 설정 값을 읽을 수 있기 때문에파이프라인에서 플러시를 통해 비우고 시스템 레지스터를 설정하는 명령어가 실행단계까지 완료된 다음에 다음 명령어를 페치를 한다. 그리고 여기서 생긴 의문은 그렇다면 굳이 시스템 레지스터가 아니라 노멀 레지스터를 읽고 쓸 때도 이런 문제가 생길테니 ISB 명령어를 사용해야하는가? 입니다. 위 글에서 부족한 부분이 있다면 그 부분에 대해서도 설명해주시면 감사하겠습니다.
-
해결됨시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
강의 자료 관련 문의
안녕하세요.강의 자료와 관련된 질문이 있어 문의드립니다. 교안 파일을 열었을 때, 아래와 같이 글씨가 점으로 나타나는 현상이 있습니다.확인 부탁드립니다.감사합니다.
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
강의자료
안녕하세요, 강의 자료 pdf 어디서 다운로드 받을수있을까요? 아직 업로드가 안된거라면 언제쯤 업로드가될까요. 감사합니다.
-
해결됨시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
LDP 명령어 사용예시
위에서 SP레지스터의 값과 오프셋을 더한 주소에 있는 값을 기준으로 레지스터에 저장한다고 되어 있는데그림을 확인하면 SP레지스터의 값을 기준으로 레지스터에 저장한 후에 SP 레지스터의 값을 업데이트하는 것으로 보입니다.둘 중 어느 것이 맞는 건가요?
-
해결됨시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
강의하신 강의자료
안녕하세요 해당 강의들에 대한 강의자료는 강사님께서 언제쯤 올려주시는지 여쭤봅니다~~!
-
해결됨시스템 소프트웨어 개발을 위한 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값이 들어갈 수도 있나요? 좋은 강의 감사합니다
-
미해결Arm 아키텍처: 메모리 매니지먼트(MMU) [저자직강 3부-5]
폴트 설정 비트 필드 질문
폴트 설정하는 레지스터들의 값을 0으로 설정하여 EL0에서 EL1, EL2로 트랩되도록 허용하는 것이 보안수준을 왜 올리는 것인지 문의드립니다. 제가 생각했을 때는 사용자 레벨(EL0)에서 더 상위 익셉션 레벨(EL1, EL2)로 접근할 수 있도록 설정하는 것이 보안 수준을 낮춘다고 생각해서 문의드립니다.
-
해결됨Arm 아키텍처: 메모리 매니지먼트(MMU) [저자직강 3부-5]
멀티레벨테이블로 운영하는 이유
안녕하세요. 가상메모리를 물리주소로 변환하기 위해서 멀티레벨페이지로 운영하는 이유가 궁금합니다. 멀티레벨페이지로 운영했을때 어떤 장점들이 있는지 궁금합니다.
-
해결됨Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]
MMIO 질문
MMIO는 다바이스 포트를 제어하기 위해서 DRAM의 일부 메모리공간을 사용하는 방식이 맞는지 문의드립니다.
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
익셉션 벡터 베이스 주소 질문
07:20 시각의 강의에서 "익셉션 벡터 베이스 주소" 라는것은 각 레벨별 베이스 주소가 맞는지 문의드립니다. 예를 들어서 다음과 같은지 문의드립니다.EL1에서 IRQ 인터럽트 익셉션 발생: VBAR_EL1 + 0x280EL0(Aarch64)에서 IRQ익셉션 발생: VBAR_EL0 + 0x480EL0(Aarch32)에서 IRQ익셉션 발생: VBAR_EL0 + 0x680