Guillermo Austin Kim

Sources

Posts

998 posts

[Arm프로세서] Armv8: Synchronous 익셉션을 유발할 때 변경되는 레지스터

Guillermo Austin Kim|2021년 1월 28일

이전 절에서 살펴봤다시피, Synchronous 익셉션을 유발하는 요인은 다음과 같이 분류됩니다. ❑ 메모리 어보트를 유발하는 명령어 ❑ svc 명령어로 슈퍼바이저 콜 발생 먼저 메모리 어보트를 유발하는 명령어를 실행했을 때 Synchronous 익셉션을 유발하는데, 이 과정에서 Arm 코어가 어떤 레지스터를 업데이트하는지 알아봅시다. 다음은 Synchronous 익셉션이 발생했을 때 전체 흐름과 Arm 코어의 세부 동작을 나타낸 그림입니다. 그림 9.11 Synchronous 익셉션을 유발할 때 변경되는 레지스터 그림 9.11은 9.4 절에서 봤던 그림 9.5와 비슷해 보입니다. 한 가지 차이점은, 그림의 가운데 부분인데 Arm 코어가 내부에서 하드웨어적으

[Arm프로세서] Armv8: 익셉션 종류 별 레지스터 변경

Guillermo Austin Kim|2021년 1월 27일

지금까지 Armv8 아키텍처에서 익셉션이 발생하면 처리되는 전체 흐름을 살펴봤는데, 핵심 동작은 다음과 같이 요약할 수 있습니다. “Arm 프로세서는 익셉션을 감지해 익셉션의 종류 별로 지정된 주소로 프로그램 카운터로 브랜치한다.” 그런데 위와 같은 동작은 Arm 코어가 하드웨어적으로 수행합니다. 그렇다면 "Arm 코어가 하드웨어적으로 익셉션을 처리한다"라는 것은 구체적으로 어떻게 설명할 수 있을까요? 바로 Arm 코어가 익셉션과 관련된 레지스터를 업데이트하는 동작을 의미합니다. 그래서 Arm 사에서 배포한 Armv8 문서를 보면 Arm 코어가 익셉션을 처리하는 과정에서 하드웨어적으로 레지스터를 업데이트하는 동작을 슈도 코드(의사 코드)로 확인할 수 있습니다. 이번 절에서는 Arm 코어

[Arm프로세서] Armv8 아키텍처에서 익셉션(Exception)의 전체 실행 흐름 정리

Guillermo Austin Kim|2021년 1월 27일

익셉션의 종류 별로 처리되는 실행 흐름을 알아봤습니다. 익셉션의 종류 별로 실행 흐름을 파악하다보니, 전체적인 그림으로 정리할 필요가 있어 보입니다. 이전 포스트에서 다룬 내용을 다음 그림을 보면서 정리해봅시다. 그림 9.10 익셉션의 종류 별 전체 실행 흐름 먼저 그림의 가장 왼쪽 부분부터 봅시다. EL1, EL0(Aarch64), EL0(Aarch32)가 보이는데, Armv8 아키텍처에서는 익셉션 레벨 별로 익셉션이 처리됩니다. EL1에는 운영체제의 커널이 구동되고, 'EL0(Aarch64)'와 'EL0(Aarch32)'는 각각 EL0에서 64비트와 32비트로 빌드돼 실행되는 유저 애플리케이션을 뜻합니다. 이어서 그림에서 '익셉션 레벨'의 오른쪽 부분을 보면 익셉션이 유발된 원인이 보입니다.

[Arm프로세서] Armv8: 인터럽트 타입 익셉션(Exception)의 실행 흐름

Guillermo Austin Kim|2021년 1월 25일

Armv8 아키텍처는 외부 인터럽트도 익셉션의 한 종류로 처리합니다. 외부 하드웨어에서 인터럽트를 유발하면 Arm 코어는 이를 감지해 다음과 같은 익셉션을 유발합니다. ❑ 'IRQ 인터럽트' 익셉션 ❑ 'FIQ 인터럽트' 익셉션 인터럽트 타입 익셉션은 외부 하드웨어의 변화를 알리기 위한 인터페이스이므로, 인터럽트 익셉션이 유발되면 호출되는 익셉션 핸들러에서 인터럽트 서비스 루틴을 실행합니다. [정보]일반적으로 'FIQ 인터럽트' 익셉션은 운영체제에서 거의 사용되지 않습니다. 대신 지문 인식과 같이 엄격한 보완이 요구되는 트러스트 존 내부(Secure OS)에서 사용됩니다. 이번 절에서 설명하는 인터럽트 타입 익셉션은 'IRQ 인터럽트' 익셉션 기준으로 설명합니다.

[라즈베리 파이] 삼바 설정하기

Guillermo Austin Kim|2021년 1월 24일

이번 포스트에서는 라즈베리 파이에서 삼바를 설정하는 방법을 소개합니다. 환경: 라즈베리 파이4 삼바 설치 아래 명령어를 입력해 삼바를 설치합니다. 'sudo apt install samba samba-common-bin' 위 명령어를 라즈베리 파이의 터미널을 열고 입력해봤습니다. pi@raspberrypi:~ $ sudo apt install samba samba-common-binReading package lists... DoneBuilding dependency treeReading state information... Donesamba is already the newest version (2:4.9.5+dfsg-5+deb10u1+rpi1).samba-common-bin is already