Guillermo Austin Kim
Posts
998 posts[Arm프로세서] Armv8 익셉션(Exception)을 이루는 주요 개념
Armv8 아키텍처에서 "익셉션이 발생하면 익셉션 벡터로 프로그램 카운터가 브랜치된다"라는 수준으로 익셉션을 이해하시는 분이 있습니다. 익셉션을 모르는 분보다는 낫겠지만 Armv8 익셉션의 동작 원리를 제대로 이해하고 배운 내용을 실전 프로젝트에 활용할 정도로 익혀두는 것이 바람직합니다. 그렇다면 실전 프로젝트에 활용할 정도로 익셉션을 제대로 배우려면 어떻게 해야 할까요? 익셉션과 관련된 내용을 읽을 때 다음과 같은 질문을 스스로에 던지면서 답을 찾도록 고민할 필요가 있습니다. ❑ 익셉션은 소프트웨어적으로 어떤 명령어가 실행될 때 유발될까? ❑ Arm 프로세서가 익셉션을 감지한 후 소프트웨어적으로 어떤 처리를 수행할까? 위에서 소개한 질문에 답을 하려면, 다음 그림에서
[Arm프로세서] ESR_ELx(익셉션 신드롬 레지스터) 익셉션 클래스
Armv8 익셉션에서 익셉션 신드롬 레지스터는 중요합니다. Synchronous 익셉션이나 SError 익셉션이 발생했을 때, 익셉션 신드롬 레지스터는 익셉션이 발생한 세부 원인(Reason)을 저장하기 때문입니다. 일반적인 상황에서, IRQ/FIQ 타입 익셉션이 발생하면 신드롬 레지스터는 업데이트되진 않습니다. 이번에도 Arm 스팩 문서를 보면서 익셉션 신드롬 레지스터가 무엇인지 알아봅시다. 출처: DEN0024A_v8_architecture_PG.pdf10.2.6 The Exception Syndrome RegisterThe Exception Syndrome Register, ESR_ELn, contains information which allows the exception handler to de
[Arm프로세서] Armv8: Asynchronous 익셉션 타입이란
Synchronous 익셉션은 Arm 코어가 어셈블리 명령어를 실행하는 과정에 유발됩니다. 그렇다면 Aynchronous 타입 익셉션은 무엇이고 어떻게 유발될까요? 외부 하드웨어에서 인터럽트가 발생하거나 외부 메모리에서 어보트가 발생하면 유발되는 익셉션 타입을 Aynchronous이라고 합니다. 이번에도 arm사가 배포한 스팩 문서를 보면서 Asynchronous 타입 익셉션에 대해 살펴봅시다. 출처: DEN0024A_v8_architecture_PG.pdf10.2 Synchronous and asynchronous exceptionsAn asynchronous exception is not generated by executing instructions, while the return address m
[Arm프로세서] Armv8: Synchronous 타입 익셉션
먼저 Synchronous 타입 익셉션에 대해 먼저 알아보겠습니다. Synchronous 타입 익셉션에 대해서 자세히 살펴보기 전에 arm사에서 배포한 스팩 문서에서 Synchronous 타입 익셉션을 어떻게 설명하는지 알아보겠습니다. 출처: DEN0024A_v8_architecture_PG.pdf10.2 Synchronous and asynchronous exceptionsIn AArch64, exceptions may be either synchronous, or asynchronous. An exception is described as synchronous if it is generated as a result of execution or attempted execution of the instru
[라즈베리파이] 64비트 라즈비안 커널: 크로스 컴파일 빌드
이번 포스트에서는 64비트로 라즈비안 커널을 빌드하는 방법을 소개합니다. 먼저 라즈베이 파이3 기준으로 라즈비안 커널을 빌드하는 빌드 셸 스크립트를 소개합니다. 파일 이름: 64_rpi3_kernel_build.sh #!/bin/bash export PATH=$PATH:/opt/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/KERNEL=kernel8 echo "configure build output path"TOP_PATH=$( cd "$(dirname "$0")" ; pwd )OUTPUT="$TOP_PATH/out" BUILD_LOG="$TOP_PATH/rpi_build_log.txt" rpi_build_start_time=`date +%s`

