objdump 2

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 23 - 인터럽트는 비활성화할 시점 확인

안녕하세요. 인터럽트가 발생하는 보았는데, 조금 다르게 중요한 작업을 하고 있을 때는 인터럽트가 발생하면 안 되는 상황도 있습니다. 이 부분에 대해서 확인해 보겠습니다. 1. 인터럽트가 발생하면 안 되는 상황 인터럽트는 보통 백그라운드에서도 계속 발생합니다. 그렇기 때문에 디바이스 드라이버를 개발하다 보면 특정 상황에서는 발생하면 안 되는 조건이 있습니다. (1) SoC에서 정의한 하드웨어 블록에 정확한 시퀀스를 줘야 할 경우(2) 시스템이 유휴 상태에 진입하기 직전의 시스템의 상태 정보 값을 저장하는 동작(3) 각 디바이스 드라이버가 서스펜드 모드로 진입할 때 디바이스 드라이버에 데이터 시트에서 명시한 대로 정확한 특정 시퀀스를 줘야 할 경우(4) 예외가 발생해서 시스템 리셋을 시키기 전 종합..

IT/Linux Kernel 2025.05.30

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 4 - 전처리 코드 생성과 objdump 사용

안녕하세요.   라즈베리 파이 커널을 설치하고 나머지 뒷부분을 마무리하도록 하겠습니다.  리눅스 커널을 빌드하는 과정에서 전처리코드를 생성하는 방법이 나옵니다.커널에는 많은 양에 매크로가 소스분석에 걸림돌이 됩니다. 그래서 소스코드를 분석할 때 전처리 코드를 함께 보는 것을 추천하며 추출하는 방법 두 가지를 알려 줍니다.  1. 전처리 코드 생성 1) 전체 전처리 파일 추출  이전 글에서 처럼 root 권한을 얻어서 다음 내용을 진행합니다.  리눅스 커널 소스 디렉터리 안에 Makefile이 있습니다.  대략 420번 줄 KBUILD_CLAGS에 "-save-temps=obj \"를 추가해 주고 build 스크립트를 실행해 주면 전체 소스 파일에 전처리코드가 담긴 *.i, *.s 파일이 생성됩니다. 약 ..

IT/Linux Kernel 2025.02.20