Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

46189
2265
156757


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

1 2

[리눅스커널][인터럽트] 인터럽트 디스크립터(struct irq_desc)에 대해서

인터럽트 디스크립터란프로세스마다 프로세스를 관리하는 태스크 디스크립터(struct task_struct)가 있습니다. 페이지도 페이지를 관리하는 페이지 디스크립터(struct page)가 있죠. 마찬가지로 리눅스 커널에서 발생하는 인터럽트 종류만큼 인터럽트 디스크립터가 있습니다. 만약 인터럽트 개수가 34개면 이를 관리하는 34개의 인터럽트 디스크립터가...

[리눅스커널][인터럽트] 인터럽트 핸들러 호출 코드 알아보기

이전 절에서 인터럽트가 발생하면 실행되는 인터럽트 벡터의 어셈블리 코드를 분석했습니다. 그런데 커널은 인터럽트 벡터부터 커널 내부 함수를 호출해 인터럽트 핸들러 함수를 처리합니다. 즉, 프로세스가 실행되는 도중 인터럽트가 발생하면 인터럽트 벡터인 __irq_svc 레이블로 브랜치하고 handle_irq_event_percpu() 함수까지 실행됩니다.&n...

[라즈베리파이] 커널 살펴보기 - 섹션 정보

아래 명령어로 라즈베리파이 소스 다운로드를 하고,git clone --depth=1 https://github.com/raspberrypi/linux.git크로스 컴파일러 툴을 설치한 다음에,git clone https://github.com/raspberrypi/tools커널 빌드를 하면 vmlinux을 추출할 수 있습니다.make ARCH=arm C...

[라즈베리파이] 인터럽트(6) - 디버깅

#리눅스 커널: 인터럽트인터럽트 소개인터럽트 컨택스트   인터럽트 컨택스트란   in_interrupt란   인터럽트 컨택스트에서 스케줄링을 하면?인터럽트 핸들러는 누가 언제 호출할까?   인터럽트 벡터 분석   인터럽트 벡터 스택 푸시  &nbs...

[라즈베리파이] 인터럽트 백터 어셈블리 코드 및 동작 분석

인터럽트가 발생하면 __irq_svc 벡터로 점프합니다. 물론 해당 프로세스는 하던 일을 멈출 수 밖에 없는데요.그럼 인터럽트 벡터에서 어떤 동작을 하는 지 어셈블리 코드를 분석하겠습니다.#__irq_svc 코드 리뷰[1]: 스택 공간을 0x4C 바이트만큼 확보합니다.[2]--[3]: 현재 실행 중인 레지스터 R0부터 R14, PC까지 스택에 푸쉬합니다...

[라즈베리파이] 인터럽트 핸들러에서 스택 덤프 저장

아래 패치를 적용하면 해당 프로세스의 스택 메모리 덤프를 stack_dump 배열에 저장합니다.인터럽트 처리가 마무리 된 후 프로세스 레벨에서 stack_dump 배열에 저장된 메모리 덤프를 커널 로그로 출력하면,인터럽트 벡터 심볼 __irq_svc과 스택에 푸쉬한 레지스터 정보를 모두 볼 수 있습니다.diff --git a/drivers/video/f...

[라즈베리파이] 커널 정보 확인 - Trace32

아래 Trace32 스크립트를 실행하면 라즈베리파이 커널 vmlinux를 Trace32에 올릴 수 있습니다.sys.cpu cortexa7sys.ud.load.elf vmlinux라즈베리파이 리눅스 커널 정보를 확인하겠습니다.각 섹션 정보는 아래와 같습니다.y.l.sec_____address________|path\section_______________...

[라즈베리파이] 커널 빌드 & 컴파일 환경 설정

라즈베리파이 리눅스 커널 컴파일 명령어 출처https://wikidocs.net/3243https://www.raspberrypi.org/documentation/linux/kernel/building.md소스 코드 다운로드 및 빌드 스크립트 작성아래와 같이 폴더를 하나 생성합니다./home001/austin.kim/src/raspberry_kernel...

5.4 인터럽트 핸들러는 어떻게 등록할까?

5.4 인터럽트 핸들러는 어떻게 등록할까?외부 하드웨어 디바이스가 인터럽트를 발생하면 인터럽트 핸들러가 처리합니다. 이를 위해선 먼저 인터럽트 핸들러를 커널이 지원하는 함수를 써서 등록해야 합니다.이번 절에서는 인터럽트 핸들러를 등록하는 드라이버 코드를 살펴봅니다. 어느 시스템이든 인터럽트 핸들러를 등록하는 코드를 볼 수 있습니다.인터럽트 핸들러를 등록...

[라즈베리파이] 리눅스 커널: 전처리 파일 추출

라즈베리파이3 용 커널 코드를 다운로드 받고 아래 패치를 적용하여 커널 빌드를 하면 전처리 파일을 추출할 수 있습니다.austindh.kim:~/src/raspberry_kernel/linux$ git diff Makefilediff --git a/Makefile b/Makefileindex 4a7e6df..313dbbe 100644--- a/Makef...
1 2