KERNEL

포스트: 183|조회수: 0|PERSON
Items

Posts

183 posts

[라즈베리파이] 커널 섹션 정보

Guillermo Austin Kim|2018년 2월 5일

아래 명령어로 라즈베리파이 소스 다운로드를 하고,git clone --depth=1 크로스 컴파일러 툴을 설치한 다음에,git clone 커널 빌드를 하면 vmlinux을 추출할 수 있습니다.make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfigmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j12 아래 명령어로 라즈베리파이 섹션 정보를 파악할 수 있는데요. 조금 더 짚어 보겠습니다../objdump -x vmlinux | more 섹션이란 용어에 대해서 설명을 하겠습니다. 섹션은 임베디드 소스 빌드 시 쓰이는 개념인데, 비슷한 속성의 코드들을 묶어서 처리하

인터럽트(2) - 인터럽트 핸들러는 누가 언제 호출하나?

Guillermo Austin Kim|2018년 1월 29일

인터럽트 핸들러는 누가 언제 호출할까요? 인터럽트가 떴을 때 인터럽트 벡터가 실행되어 인터럽트 핸들러를 호출합니다.인터럽트 핸들러를 호출할 때 프로세스는 정해져 있지 않습니다. 어떤 프로세스가 돌던 인터럽트가 뜰 수 있기 때문입니다. 그럼 인터럽트 핸들러는 누가 호출한다고 대답해야 할까요? 정답은 없지만 인터럽트 벡터라고 말할 수 있습니다. 참고로 인터럽트 벡터는 ARM이 실행시킵니다. 인터럽트가 뜨면 인터럽트 벡터인 __irq_svc 심볼로 시작해서 handle_irq_event_percpu 함수까지 처리됩니다.이후 handle_irq_event_percpu 함수 내 action->handler 함수 포인터가 실행될 때 인터럽트 핸들러를 호출하죠 이 때 파라미터가 해당 인터럽트의 디스크립터와 pri

인터럽트 - Overview

Guillermo Austin Kim|2018년 1월 15일

인터럽트하면 무슨 생각이 나죠? 평소에 이런 말도 하죠. "인터럽트 걸지마!" "인터럽트가 걸려와서 제대로 일을 못했어요." 커널에서 인터럽트는 하드웨어와 소프트웨어의 인터페이스이라고 할 수 있구요,각 물리적인 디바이스와 디바이스 드라이버의 인터페이스라고 할 수 있어요. 인터럽트 동작에 대한 수 많은 예시를 들 수 있는데요. 모바일 디바이스에서 사용자가 화면을 터치했을 때 인터럽트가 올라와서 해당 처리를 하거든요.해당 처리는 Input Event를 유저 공간에 전달해서 메뉴가 바뀐다던가, 화면을 다시 그리던가 하는 동작을 하죠. 인터럽트 처리는 인터럽트 핸들러에서 처리하구요, 인터럽트 핸들러는 보통 ISR(Interrupt Service Routine)이라고 하는데요.최대한 빠른 시간 내 데이터 처리

[Linux][Kernel] data abort@irq_affinity_notify - 리눅스 커널

Guillermo Austin Kim|2018년 1월 12일

아래 커널 로그와 함께 시스템이 커널 패닉으로 돌아가셨어요.irq_affinity_notify+0x4c 란 함수에서 data abort가 난 것을 확인할 수 있어요.[287229.435076] mmc0: mmc_start_bkops: raw_bkops_status=0x2, from_exception=1[287230.328287] mmc0: mmc_start_bkops: Starting bkops[287231.319886] <26>Unable to handle kernel NULL pointer dereference at virtual address 000000fc[287231.319920] <26>pgd = c0004000[287231.319936]