코드를 분석한 내용을 자기의 것으로 만들기 위한 과정으로 실습이 중요합니다. p432. 디버깅을 통해 배우는 리눅스 커널의 구조와 원리. 프로그램을 디버깅을 통해 배워야 된다 생각했는데, 저자역시 같은 생각이다. 따라서 왜 코드만 보고 이해할 수 없었는지 명확하다. 사람이 코드만 보고 어떻게 동작하는지 이해할 수 없다. 인터럽트가 bcm2835_mmc_irq를 먼저 실행하고, thread로 bcm2835_mmc_thread_irq를 깨워 동작함을 알 수 있다.
기존 글로 가득한 구성이 아니라, 기업이 제품을 설명하는 카다로그를 보는 기분이다. 시장에서 판매되는 다양한 제품을 분석했는데, 이를 보면 그림이 많다고 그 질이 떨어지지 않는다. 보는 사람이 쉽게 이해할 수 있도록 많이 노력했다.
5장 인터럽트 실습2
msi가 xhci 드라이버를 잘못 만들었는지 인터럽트를 너무 많이 발생시킨다. 왼쪽부터 36: 인터럽트 번호, 40080: cpu0 발생 횟수, 0: cpu 1, 2, 3 발생횟수, mmc1, mmc0 인터럽트 이름 정도? 모든 인터럽트가 충분하게 많이 일어난다. 인터럽트 53이 524,288번 발생했다. 53번 인터럽트가 있을 때 printk로 메세지를 출력하려 했으나, 횟수가 많아서인지 부팅을 할 수 없다. 횟수가 적은 31번 인터럽트를 […]
화면 보호기를 막아야 할 필요가 있다. 아래 링크에서 관련 자료를 얻었다. 출처가 설명을 제대로 하지 않아, 적용하기 어려웠다. PowerShell에 최대한 짧게 입력했다. scroll lock키를 무한 동작
5장 인터럽트, p345 실습
책이 dwc_otg_driver.c의 request_irq로 인터럽트를 등록을 설명했다. 그러나, 라즈베리 파이4가 dwc-otg_driver.c 함수를 사용하지 않는다. 있긴 있는데, 4로 오면서 의도적으로 사용하지 않는 듯 하다. 아무리 찾아봐도 request_irq를 dump_stack 메세지에서 찾을 수 없다. 내가 본 메세지는 다음과 같다. 일단 request_threaded_irq가 request_irq임은 확실하다. xhci_run이 request_threaded_irq를 호출한다. usb_add_hcd가 xhci_run을 호출한다. … 이런 식으로 kernel_init로 간다. 결국 시스템 시작할 때 인터럽트를 […]