Guillermo Austin Kim
Posts
998 posts[ARM] 익셉션이 발생하면 프로세스는 어떻게 동작할까 - ARMv7
많은 학생이나 SW 개발자들은 "ARM의 익셉션 벡터 테이블을 열심히 읽어도 잘 모르겠다", 혹은 "무슨 내용인지 와 닿지 않는다"라는 불만을 토로합니다. 또한 "ARM 익셉션의 개념이 어렵다"라고 말하기도 합니다. 그 이유에 대해 곰곰히 생각해 봤는데, 소프트웨어 관점으로 익셉션이 무엇인지 분석하지 않았기 때문이라는 결론에 이르게 됐습니다. 여기서 말하는 소프트웨어란 용어는 조금 애매하고 추상적인 의미를 내포하는듯 합니다. 그런데 소프트웨어란 용어를 구체적으로 표현하면 "운영체제의 프로세스"라고 말할 수 있습니다. 소프트웨어 개발자가 입력한 코드는 CPU에 가까운 어셈블리 명령어로 실행되는데, 이를 실행하는 주인공은 프로세스이기 때문입니다. 익셉션이 발생하면 프로세스는 어떻게 동작할까요? 어떤 익셉션
[ARM프로세서] 소프트웨어 관점에서 익셉션(Exception)이란
소프트웨어 입장에서 익셉션이란 무엇일까요? 소프트웨어 입장에서는 익셉션의 종류에 따라 익셉션을 2가지 관점으로 볼 수 있습니다. ❑ 치명적인 오류: 메모리 어보트 타입 익셉션(Prefetch Abort, Data Abort, Undefined Instruction) ❑ 운영체제 커널에서 지원하는 기능: IRQ(인터럽트 서비스 루틴), SW 인터럽트(시스템 콜) 메모리 어보트 타입 익셉션이란 첫 번째, 메모리 어보트 타입 익셉션을 소프트웨어 관점으로 보면, 소프트웨어적으로 치명적인 오류가 발생했다고 볼 수 있습니다. 여기서 말하는 치명적인 오류가 발생하면 시스템이 리셋되는데, 이를 “크래시가 발생했다”라고 말합니다. 프로젝트를 개발하는 도중에 이런 치명적인 오류를 만나
[문의] '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' 책의 질문을 받습니다
'디버깅을 통해 배우는 리눅스 커널의 구조와 원리' 책에 대한 질문을 받기 위한 포스트입니다.질문이나 궁금한 점이 있으면 본 포스트에 댓글로 질문을 남겨주시면 됩니다. 감사합니다. 책 저자 올림
임베디드 리눅스 BSP 공부를 시작하기 전의 마음 가짐
"임베디드 리눅스와 관련된 실무 능력을 키우기 위해서는 뭘 배워야 하나요?"라는 질문을 종종 받습니다. 특히 취준생 분들이 이런 질문을 많이 하시는 것 같습니다. 이 분들께 "어떤 어떤 책과 블로그를 먼저 보세요"라고 이미 말씀드렸는데, 먼저 다음과 같은 말씀을 드렸어야 했다라고 자책할 때가 많았습니다. "전공 과목을 벼락치기 공부하듯, 임베디드 리눅스를 단기간에 마스터하겠다는 생각은 안 하시는 게 좋습니다." 임베디드 리눅스 BSP 개발자로 +12년에 접어든 저도 지금 공부해야 할 지식이 바다와 같이 끝도 없다는 생각이 많이 듭니다. 그러니 3~6개월 만에 임베디드 리눅스를 요리하겠다고 결심했다면 "당장 그만 두세요"라고 말씀드리고 싶어요. 만약 여러분이 당장 그만 두지 않더라도
[ARM프로세서] 익셉션(Exception)과 관련된 레지스터
실전 SW 개발자 입장에서 익셉션이 발생했을 때 확인해야 할 가장 중요한 정보는 레지스터입니다. ARM 프로세서는 익셉션을 감지하면 레지스터에 익셉션과 관련된 정보를 업데이트하기 때문입니다. 그렇다면 레지스터를 통해 SW 개발자는 어떤 정보를 얻을 수 있을까요? 먼저, 익셉션이 발생했을 때 실행된 명령어의 정확한 주소를 확인할 수 있습니다. ARMv7 아키텍처에서는 r14_ 레지스터, ARMv8에서는 ELR_ELx 레지스터에 익셉션이 발생한 주소를 저장합니다. 이 정보를 참고로 함수의 호출 흐름까지 파악할 수 있습니다. 만약 익셉션의 타입이 메모리 어보트이면 레지스터 정보를 참고로 정확히 어떤 이유로 익셉션이 발생했는지 디버깅할 수 있습니다. 이 밖에도 ARMv7와 ARMv8 아키

![[CV] [Comi] 'あかね噺'(아카네 이야기) 22권. 아카네의 첫 전력 승부](https://img.zoomtrend.com/2026/06/08/1780982081-EC9D8CEC9585EC9D98EBA6ACEB93ACEC9CBCEBA19C.jpg)

