Guillermo Austin Kim

Sources

Posts

998 posts

[ARM프로세서] 익셉션 벡터 테이블 소개

Guillermo Austin Kim|2020년 10월 21일

이번 포스팅에서는 ARMv7과 ARMv8 아키텍처의 익셉션 벡터 테이블을 차례로 소개합니다.  ARMv7 익셉션 벡터 테이블 "표 7.2"는 ARMv7 익셉션 벡터 테이블입니다. 우선 표를 읽고 해석해 봅시다. 표 7.2 ARMv7 익셉션 벡터 테이블 표의 가장 왼쪽 윗 부분에 "익셉션 벡터 베이스 주소"가 보이는데, 이는 익셉션 벡터의 기준이 되는 주소를 뜻합니다. 익셉션 벡터 베이스 주소는 0x0이나 0xffff_0000으로 지정할 수 있는데, 리눅스와 같은 범용 운영체제에서는 0xffff_0000에 익셉션 벡터 베이스 주소를 지정합니다. 이어서 "+0x04"~"+0x1C"로 표기된 부분은 익셉션 벡터 베이스 주소 기준의 오프셋 주소를 나타냅니다. 이해를 돕기 위해 한 가지 예를 들겠습니

[공유][문의] line 19: echo: write error: Invalid argument라는 에러가 뜹니다

Guillermo Austin Kim|2020년 10월 20일

아래와 같이 독자분께서 블로그에 댓글로 문의를 주셨는데, 답신 내용이 길어져 아예 새롭게 포스팅을 합니다. 링크http://rousalome.egloos.com/10011668 문의) 커널빌드하고 설치한후 irq_trace_ftrace.sh를 실행하면 line 19: echo: write error: Invalid argument라는 에러가 뜹니다. 오타가 있었나 찾아보기도 하고 proc.c 함수명이 틀렸나하고 봐도 이상한게 없는데 뭐가 문제일지 알수 있을까요? 제가 쓴 스크립트 아래와 같이 올려봅니다. echo rpi_get_interrupt_info bcm2835_mmc_irq > /sys/kernel/debug/tracing/set_ftrace_filter 답변) 1. availa

[ARM프로세서] XEN: 익셉션 벡터 테이블(ARMv7)

Guillermo Austin Kim|2020년 10월 18일

XEN 하이퍼바이저의 익셉션 벡터 테이블을 살펴봅시다. 익셉션 벡터 테이블의 선언부 다음은 XEN 하이퍼바이저의 익셉션 벡터 테이블의 선언부입니다. xen/xen/arch/arm/arm32/entry.S vect_br 0, trap_fiq vect_br 1, trap_irq vect_br 2, trap_guest_sync vect_br 3, trap_data_abort vect_br 4, trap_prefetch_abort vect_br 5, trap_hypervisor_call vect_br 6, trap_undefined_instruction vect_br 7, trap_reset 위 코드가 컴파일

[ARM프로세서] 익셉션이 발생할 때 전체 흐름

Guillermo Austin Kim|2020년 10월 18일

이번에는 익셉션의 전체 실행 흐름도를 보면서 익셉션의 동작 원리를 알아봅시다. 그림 7.7 익셉션이 발생할 때 전체 흐름 익셉션의 전체 실행 흐름도는 4단계로 분류할 수 있습니다. 1단계: 프로세스가 실행하는 도중에 익셉션을 유발하는 동작 실행 먼저 ①로 표시된 부분을 눈으로 따라가 봅시다. 프로세스가 실행하는 도중에 메모리 어보트를 유발하는 명령어를 실행하거나 소프트웨어 인터럽트를 유발하는 명령어를 실행합니다. 또한 외부 하드웨어에서 인터럽트를 유발합니다. 2단계: ARM 프로세서가 익셉션을 감지 ② 로 표시된 부분은 ARM 프로세서가 익셉션을 감지하는 동작입니다. 1단계에서 익셉션을 유발하는 명령어나 외부 하드웨어 인터럽트가 발생하면, ARM 프로세서가 이를 감

[ARMv8] EL1: el1_sync - 익셉션 벡터 코드와 ARM 스팩 문서 분석

Guillermo Austin Kim|2020년 10월 16일

이번 포스트에서는 ARMv8 아키텍처 기반에서 구현된 익셉션 벡터의 코드를 리뷰해보겠습니다.물론 리눅스 커널에서 확인된 코드입니다. ARMv8 아키텍처의 익셉션 벡터 코드 다음은 ARMv8 아키텍처 기반의 익셉션 벡터 코드입니다. /*02 * Exception vectors.03 */04 .pushsection ".entry.text", "ax"05 06 .align 1107 ENTRY(vectors)08 kernel_ventry 1, sync_invalid // Synchronous EL1t09 kernel_ventry 1, irq_invalid // IRQ EL1t10 kernel_ventry 1, fiq_invalid