[ARM프로세서] ARMv7: 메모리 어보트 타입 익셉션의 실행 흐름
By Guillermo Austin Kim | 2020년 11월 23일 |
메모리 어보트 타입 익셉션이 발생하면 익셉션 핸들러에서 디버깅 정보를 출력하고 시스템을 리셋시킵니다. 소프트웨어적으로 시스템이 치명적인 오류가 있는 상태로 판단하기 때문입니다. 다음 그림을 보면서 메모리 어보트 타입 익셉션의 전체 실행 흐름을 알아봅시다. 그림 8.2 메모리 어보트 타입 익셉션이 발생할 때 전체 흐름 익셉션의 전체 실행 흐름도는 4단계로 분류할 수 있는데, 각 단계 별로 어떤 동작을 수행하는지 알아봅시다. 1단계: 프로세스가 실행하는 도중에 익셉션을 유발하는 명령어 실행 먼저 ①로 표시된 부분을 눈으로 따라가 봅시다. 프로세스가 메모리 어보트를 유발하는 명령어를 실행하는 부분입니다. 2단계: ARM 프로세서가 익셉션을 감지 ② 로 표시된 부분은 A
[Arm프로세서] AAPCS: Armv7: 브랜치 명령어(bl)
By Guillermo Austin Kim | 2021년 6월 10일 |
C 프로그래밍으로 함수를 호출하는 구문을 어셈블리 코드로 확인하면 'bl [심벌 주소]'와 같은 명령어가 보입니다. 이번 절에서는 bl 명령어의 정의를 소개하고, 예제 코드를 분석하면서 bl 명령어의 사용법을 살펴보겠습니다. bl 명령어란 이번에도 Arm 스팩 문서에서 bl 명령어를 설명하는 부분을 소개합니다. 5.4 Branches Calls to subroutines, where it is necessary for the return address to be stored in the link register, use the BL instruction.(출처: DEN0013D_cortex_a_series_PG.pdf) 위 내용은 "BL 명령어를 사용하면 서브 루틴을 호출하는데, 서브 루틴을 호출한
기존 ARM 프로세서/아키텍처 책의 한계점 & 개선 포인트
By Guillermo Austin Kim | 2020년 6월 15일 |
기존 ARM 프로세서/아키텍처 책의 한계점 & 개선 포인트에 대해 이야기를 해보려 합니다.이 포스팅은 저의 지극히 개인적인 의견이라는 점을 참고하고 읽으셨으면 좋겠습니다. ■ 임베디드 중심이다 ARM 책을 떠올리면 자연히 '임베디드'란 단어가 떠오릅니다. 특정 보드에서 Cortex-M3를 실습하는 구조로 구성돼 있어,알고 싶지 않은 데이터 시트나 파형과 같은 내용이 보입니다. 임베디드 이외의 다른 개발자들은 ARM 책에서 이런 내용을 보면 자연히 거리감을 느낍니다. =>ARM은 임베디드 뿐만 아니라 다른 IT 기기의 영역으로 확장되고 있습니다.일반 애플리케이션 개발자들도 ARM을 쉽게 배울 수 있도록 컨텐츠가 확장돼야 합니다. ■ 실습하기 불편하다 ARM 책이 임
[ARM프로세서] ARMv7: 익셉션(Exception)의 전체 실행 흐름 정리
By Guillermo Austin Kim | 2020년 11월 24일 |
이번에는 다음 그림을 보면서 익셉션 타입 별로 익셉션이 처리되는 전체 흐름을 정리해봅시다. 그림 8.6 익셉션의 종류 별 전체 실행 흐름 먼저 그림의 가장 윗 부분은 메모리 어보트 타입의 실행 흐름입니다. ARM 코어가 명령어를 실행하는 과정에서 유발되는 익셉션인데, 소프트웨어적으로 치명적인 오류가 있을 때 유발됩니다. 대부분 운영체제에서 익셉션 벡터 핸들러에서 시스템을 리셋시키거나 익셉션을 유발한 프로세스를 종료시키는 동작을 수행합니다. 이어서 그림의 가운데 부분을 보겠습니다. 외부 하드웨어에서 인터럽트가 발생하면 ARM 코어는 IRQ/FIQ 익셉션을 유발합니다. 운영체제 관점으로는 인터럽트 타입 익셉션은 하나의 기능으로 동작하며, 익셉션 벡터 핸들러에서는 인터럽트 서비스 루틴을 처리하는 코드를 실