Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

16312
2027
233849


태그 : arm 요약보기전체보기목록닫기

1 2 3 4 5 6 7 8 9 10

[GDB] Arm(Armv7): C 코드와 어셈블리 코드를 동시에 디버깅하기

이번 포스트에서는 GDB를 사용해 디버깅을 하는 방법을 소개합니다. 소개된 내용을 참고하면 즐겁게 어셈블리 명령어를 디버깅할 수 있습니다.환경: 라즈베리 파이4GDB 실행아래 명령어를 사용해 GDB를 Text User Interface 모드로 실행합니다.$ gdb -tui armv7_aapcs_proc다음은 위 명령어로 실행한 화면입니다.이제 ...

[Arm프로세서] Armv8: VBAR_ELx 기준으로 익셉션 벡터 테이블 분석 정리

이전 포스트까지 EL1에 존재하는 VBAR_EL1와 EL1에 있는 VBAR_EL2 기준으로 익셉션 벡터 테이블에 대해 알아봤습니다. 이제 원점으로 돌아가서 이번 절의 앞 부분에 소개한, Armv8 스팩 문서에 있는 익셉션 벡터 테이블을 보면서 배운 내용을 정리해봅시다.VBAR_EL1 기준으로 바라본 익셉션 벡터 테이블먼저 VBAR_EL1 기준으로 익셉션...

[Arm프로세서] Armv7: 익셉션이 발생한 명령어로 어떻게 복귀할까?

ARM 코어가 파이프 라인의 어느 단계에서 어떤 방식으로 익셉션을 유발하는지 알면, 자연히 익셉션이 발생한 다음 명령어로 복귀하는 방법도 알게 됩니다.다음 표를 보면서 이 내용을 정리해 봅시다. 표 8.3 익셉션의 종류 별로 익셉션이 발생한 순간으로 복귀하는 명령어 먼저, 표 8.3 2번째 줄에 있는 Undefined Instructi...

[ARM프로세서] ARMv7: 익셉션의 종류별 ARM 동작 모드 정리

이전 절에서 배운 바와 같이, ARM 코어는 익셉션을 유발할 때 익셉션의 종류에 따라 ARM의 동작 모드를 변경합니다. 익셉션을 다른 관점으로 보면, 익셉션은 "ARM 동작 모드를 변경하는 유발 인자"라고 볼 수 있는데, 다음 표에서 익셉션의 종류 별로 변경되는 ARM 동작 모드를 확인할 수 있습니다.표 8.2 익셉션의 종류와 변경되는 ARM 동작 모드...

[ARM프로세서] ARMv7: 소프트웨어 인터럽트 타입 익셉션을 유발할 때 ARM 코어의 세부 동작

ARM 코어가 ‘svc’ 명령어를 실행하면 소프트웨어 인터럽트를 유발합니다. 다음 그림을 보면서, 소프트웨어 인터럽트가 발생할 때 ARM 코어의 세부 동작을 알아봅시다. 그림 8.11 소프트웨어 인터럽트를 유발할 때 변경되는 레지스터그림 8.11은 소프트웨어 인터럽트 익셉션이 실행되는 흐름을 나타내는데, 그림의 가운데 부분을 보면 ARM 코어가...

[ARM프로세서] ARMv7: 인터럽트 타입 익셉션을 유발할 때 ARM 코어의 세부 동작

이어서 IRQ 익셉션이 발생하는 전체 흐름을 살펴보면서, 세부 동작을 알아봅시다. 그림 8.10 인터럽트 타입 익셉션을 유발할 때 변경되는 레지스터 그림 8.10은 IRQ 인터럽트 익셉션의 전체 실행 흐름을 나타내는데, 그림의 가운데 부분을 보면 ARM 코어가 하드웨어적으로 처리되는 부분이 슈도 코드로 표기돼 있습니다. 이어서 슈도 코...

[ARM프로세서] ARMv7: Undefined Instruction 익셉션을 유발할 때의 ARM 코어의 세부 동작

이어서 Undefined Instruction 익셉션이 발생하는 전체 흐름을 살펴보면서, 세부 동작을 알아봅시다. 그림 8.9 Undefined Instruction 익셉션을 유발할 때 변경되는 레지스터 그림 8.9는 Undefined Instruction 익셉션의 전체 실행 흐름인데, 그림의 가운데 부분을 보면 ARM 코어가 하드웨어...

[ARM프로세서] ARMv7: 데이터 어보트(Data Abort)를 유발할 때 ARM 코어의 세부 동작

이어서 다음 그림을 보면서 데이터 어보트가 발생할 때 ARM 코어에서 이를 처리하는 세부 과정을 알아봅시다.  그림 8.8 데이터 어보트 익셉션을 유발할 때 변경되는 레지스터  ARM 코어가 데이터 어보트를 감지하면, 하드웨어적으로 레지스터를 어떻게 변경하는지, 그림의 가운데 부분에 보이는 슈도 코드를 분석하면서 알아...

[ARM프로세서] ARMv7: 프리페치 어보트(Prefetch Abort)가 발생할 때 ARM 코어의 세부 동작

프리패치 어보트가 발생하는 전체 흐름을 살펴보면서, 세부 동작을 알아봅시다. 그림 8.7 프리페치 어보트 익셉션을 유발할 때 변경되는 레지스터 그림 8.7은 8.2 절에서 봤던 그림과 비슷해 보입니다. 한 가지 차이점은 그림의 가운데 부분과 같이 ARM 프로세서 내부에서 처리되는 동작을 슈도 코드로 표현한 것입니다. 슈도 코드는 하드웨...

[ARM프로세서] ARMv7: 익셉션(Exception)의 전체 실행 흐름 정리

이번에는 다음 그림을 보면서 익셉션 타입 별로 익셉션이 처리되는 전체 흐름을 정리해봅시다. 그림 8.6 익셉션의 종류 별 전체 실행 흐름먼저 그림의 가장 윗 부분은 메모리 어보트 타입의 실행 흐름입니다. ARM 코어가 명령어를 실행하는 과정에서 유발되는 익셉션인데, 소프트웨어적으로 치명적인 오류가 있을 때 유발됩니다. 대부분 운영체제에서 익셉션...
1 2 3 4 5 6 7 8 9 10