Armv8-A 기반의 프로젝트를 진행하시면, 먼저 Armv8-A 관련 강의를 들으시면 됩니다. Armv7-A는 레퍼런스로 참고하시면 되는데요. 그 이유는 다음과 같습니다: Armv8-A에서 확인되는 많은 용어는 Armv7-A에서 사용된 용어를 이어서 사용하는 경우가 많습니다. Armv8-A 기반의 Cortex 프로세스에서 시스템의 설정에 따라 유저 스페이스를 32비트로 사용하는 경우도 있습니다. 이 점 참고하셨으면 좋겠습니다. 감사합니다.
(늦게 답변을 드려서 죄송합니다.) 제가 진행한 이번 강의는 너무 Arm 아키텍처 관점으로만 SPn와 SP를 설명드린 것 같습니다. 일반적으로 EL0이나 EL1, EL2 그리고 EL3에서는 소프트웨어 관점으로 바라보는 스택은 SP 레지스터로만 관리됩니다. 함수를 C 언어로 프로그램한 다음에 해당 코드를 어셈블리 명령어로 분석하면 SP 레지스터만 보일 뿐입니다. 예를 들어, 아래 코드를 보겠습니다. NUX:FFFFFFC010B05F90|__smccc_workaround.:hint #0x10 ; #16 NUX:FFFFFFC010B05F94| sub sp,sp,#0x20 ; sp,sp,#32 'sub sp,sp,#0x20' 명령어는 실행되는 위 코드가 실행되는 익셉션 레벨에 따라 아래 레지스터가 함께 업데이트 됩니다 - EL0: sp, sp_el0 - EL1: sp, sp_el1 - EL2: sp, sp_el2 - EL3: sp, sp_el3 감사합니다.
늦게 답신드려서 죄송합니다. 펩리스 업체에서 개발하는 주요 정보는 외부에 공유되어 있지 않아 구체적으로 답변을 드리기는 어렵습니다. 일반화하면 - 현업 Video IP/DSP는 대부분 아래 흐름으로 처리됩니다. Linux driver probe: 리눅스 플렛폼 디바이스 구조 파악 + 디바이스 트리 firmware binary loading: request_firmware() 등등의 커널 API 사용 방법 reserved memory mapping: 디바이스 트리로 메모리 매핑을 설명 mailbox/interrupt communication: request_irq() 함수를 사용해서 인터럽트 등록 DSP start 위와 같은 시나리오로 코드를 분석하시고, 간단한 mock firmware loading project를 진행하시면 좋겠습니다. 조금 더 구체적인 답변을 드리지 못하는 점 양해 부탁드립니다.
(제가 늦게 질문을 확인해서, 늦게 답변 드리는 점 양해 부탁합니다.) 에러가 발생한 이유는 T32/ELF 폴더에 vmlinux_aarch64 파일이 존재하지 않기 때문입니다. 아래 강의에 업로드한 ELF.zip 파일의 압축을 푸신 후에, '강의 7: 추가 ELF 파일 업데이트 (T32/ELF 폴더)' C:T32/ELF 폴더에 ELF 파일을 위치시키면 잘 동작할 것입니다. * 참고로 vmlinux_aarch64 파일은 다른 Arm 아키텍처 강의에서 활용된 ELF 파일입니다.