시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
안녕하세요, 섹션15. AAPCS : TRACE32 디버깅 실습 (2024년 버전) 의 119. Armv7-A: BL 명령어 실행 후 스택 Push 및 Pop 디버깅 실습 (Practice1-Part2) 강의에 3분10초쯤에서 push {r4,r5,r11,r12,r14,pc} 명령을 실행하는데, 왜 스택에 push 되는 pc 값이 C0253990 인지를 모르겠습니다. 그러니까 스택 화면(d.v 윈도우)에서 스택 주소(CC181BFC)에 push되는 값이 pc 값이 C0253990으로 확인되는데, 해당 push 명령은 C0253988 이고, 명령 실행시 레지스터 화면(r 윈도우)에서도 pc 값이 C0253988에서 C025398C로 변경되는데 스택에 push되는 pc 값은 왜 C0253990 ... 인가요 ... ? ++++ 개인적으로 조사해보니... ARMv7에서 파이프라인 성능향상을 위해 2개의 명령어를 prefetch 해놓았기 때문이라고 하는 것 같은데요 ... 그럼 trace32의 레지스터 화면(r 윈도우)의 값이 잘못되고, 스택 메모리 화면(d.v 윈도우)의 값이 맞다는걸...까요?
안녕하세요, exception handler 에서 vectors: 라고 붙어있는 태그의 주소는 가상주소인가요? 0xFFFF .. 로 시작하는 것으로 보아 가상주소 같은데, 그런데 만약 page fault 가 나게 되면 exception handler 를 실행하는데 시간이 추가로 더 걸려서 좋지 않을 수도 있지 않나요?
안녕하세요, virtualization hypervisor 도 보통 context switching 기능을 탑재하고 있나요? 자동차 쪽에서 많이 사용된다고 하는데, 어떻게 전환이 되는지 잘 연상이 안 되네요 계기판, 네비게이션 예시를 드셨는데, 계기판 같은 경우 RTOS 구현이 되게 되면 Virtualization context switching 기능이 있으면 위험성이 있을 것 같습니다. 또 계기판 기능을 돌다가 네비게이션이 작동하면 계기판이 안돌아서 위험할 것 같은데요..
exception handler 는 어느 공간에서 실행될까? 를 듣고 hypervisor, trusted zone 을 듣고 나니 일단 process 가 EL0 에서 실행되고 있었을 때 에는 프로세스 공간에서 스택에 쌓아 나간다는 사실(이게 프로세스 스택인가요, 커널 스택인가요?)을 알았는데요, 이 때 과연 hypervisor , trusted zone 의 level EL2, EL3 에서는 어떻게 처리가 되는지? 궁금해졌습니다. EL0 -> EL1 의 흐름에서는 유저 프로세스 스택에서 다 담을 수 있다고 해도, EL1 이나 EL2, EL3 가 관여하게 되면 프로세스라는 개념이 사실 커널(EL1) 단에서 에러 처리한다는 개념하고는 조금 달라져야 할 것 같아서요,
3가지 EL2 로 가는 instruction 이 있다고 했는데요, 이 세 가지는 굳이 왜 나누었고, (찾아보니 이 질문은 동 강의 "트랩 명령어 질문" 에 나와 있네요) 또 WFE, WFI 에 저전력 기능이 왜 같이 포함되어 있는지 궁금합니다. 추가로 저전력모드가 hypervisor 모드 관련해서만 있는 것 같은데 하드웨어적으로 무슨 연관이 있는 건지.. 궁금합니다 감사합니다.
안녕하세요, 가상화에 대해서 질문이 있습니다. 가상화를 하드웨어 단에서 지원을 해준다는 것은, 여러가지 지원을 해준 다는 의미인 것 같습니다. hypervisor 에서 os 를 바꿀 때 각 os 별로 메모리 공간을 관리해주어야 하는 데, 각 os 는 다른 os 의 존재를 모를 테니 마치 context switching 하는 것 처럼 모든 os 의 정보를 백업하고 스위칭 해야 할 것 같은데요.. 이것을 hypervisor 에서 구현하고 있는지 궁금합니다.
시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
안녕하세요, ldm 명령어가 수업 중 몇번 등장하는데요, 본론은, ldm r13, {r4, r5, r11, r13, pc} 에서 r13위치 기준으로 쭉 읽어오는 것 같은데요, (맞겠죠?) 이 명령어도 stack 의 pointer 를 바꾸는 것 같은데요 , 그럼 사실상 POP 과 같은 명령어라고 보면 되는 건가요?
시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
안녕하세요, ARM architecture 와 동떨어질 수 도 있는 질문입니다.. interrupt service routine 나 exception handler 는 user 가 직접 구현해야 하는 데요, 만약 리눅스를 설치한다고 했을 때, 리눅스에서 어디까지 제공해 주는 것인가요? 언급해주신 카메라 센서나, 터치 센서 같은 경우.. ESR 에서 EC 가 어떻게 들어오는지는 모르겠지만, 유저가 직접 EC 를 보고 해석하는 코드를 짤 것 같지는 않아서요. arm architecture 의 exception handler 분기 후 리눅스와 유저가 어떻게 처리하는지 궁금해져서 질문드립니다 감사합니다
시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
안녕하세요, memory mapped i/o 라는 것이 msr 명령어를 통해 core 에서 특정 주소 값을 변경하면 해당 gic 나 interface register 값을 변경할 수 있다는 뜻인가요? 그리고 memory mapped 라는 것은 hardware 적으로 메모리 스토어만 하면 알아서 주변 gic 나 cpu interface 의 레지스터가 자동으로 바뀌게 되는 회로(메모리와 연결되는)가 있는 것인가요? (그리고 바뀌는 타이밍은 즉시 바뀌나요?) 감사합니다.
시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)
안녕하세요 ARM 에서 sys mode 나 undef 모드나 이런 것들은 virtual memory 를 사용하지 못할 것 같은데, (kernel 이 virtual memory를 지원할 것 같아서요) 그러면 다른 모드는 physical memory 기반 assembly code 로 작성이 되나요? 감사합니다