[라즈베리파이] 인터럽트 핸들러 등록(1) - #CS
By Guillermo Austin Kim | 2018년 5월 22일 |
인터럽트 핸들러를 등록하는 처리 과정을 배우기 전에 우선 핸들러란 단어의 의미를 알 필요가 있습니다. 보통 핸들러는 동적으로 바뀌는 액션을 처리하기 위한 용도로 호출합니다. 그래서 핸들러는 함수 포인터로 등록해서 처리하는 경우가 대부분입니다. 만약 어떤 시스템에 인터럽트를 36개로 설계했으면 36개의 if else 문으로 인터럽트 핸들러를 호출하면 어떻게 될까요? 만약 다른 시스템에서 40개면요? 참 리눅스 커널 코드를 유지 보수하기 어렵겠죠. 그래서 인터럽트 핸들러는 함수 포인터로 등록합니다. 인터럽트 핸들러는 해당 인터럽트를 처리하기 위한 함수들이며 보통 인터럽트 종류만큼 인터럽트 핸들러 함수들이 있습니다. 인터럽트 핸들러 등록 시 기본 파라미터해당 인터럽트가 발생하면 해당 인터럽트 핸들러 함수가 호출
리눅스에서 특정 프로세스의 cpu 점유율 확인
By 반달가면 | 2018년 7월 26일 |
현재 실행중인 프로세스들 중에 특정한 프로세스의 cpu 점유율이 어느 정도 되는지 확인하고 싶을 때 ps 명령의 옵션을 적당히 활용해서 간단하게 할 수 있다. 아래의 예시를 보자. # firefox 웹브라우저의 cpu 점유율 확인 ps -C firefox -o %cpu %CPU 5.5 위의 예시에서 -C 옵션으로 프로세스 명칭을 지정해 주고, -o 옵션으로 출력할 항목을 지정해 주었다. 프로세스가 여러개 있을 수도 있으므로, cpu 점유율만 출력하는 것보다는 PID와 실행명령(command)를 같이 출력해 주는 것이 좀 더 편리하다. 실행명령에 인자(argument)가 포함될 수도 있으므로, -o 옵션에서 cmd 항목은 되도록 맨 마지막에 출력되도록 순서를 잡는 것이 좋겠다. -C 옵션에서
[리눅스 커널] 라즈베리파이 4: 라즈비안 커널 빌드
By Guillermo Austin Kim | 2020년 5월 15일 |
'라즈베리 파이 4'에서 실행되는 라즈비안 이미지를 빌드하는 방법에 대해 말씀드리려 합니다. 라즈비안을 빌드하는 명령어는 아래 사이트에서 확인할 수 있는데요. '라즈베리 파이 4'를 위한 라즈비안 빌드 명령어는 다음과 같습니다. cd linuxKERNEL=kernel7lmake bcm2711_defconfig '라즈베리 파이 4'를 위한 라즈비안 빌드 스트립트 파일을 만들어 봤는데요.코드(크로스 컴파일 환경)는 다음과 같습니다. #!/bin/bash export PATH=$PATH:~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/binKERNEL=kernel7l echo "configure build output path"TO
ARM64(Aarch64) - 함수 호출시 Stack Push(스택 푸쉬) 규약
By Guillermo Austin Kim | 2017년 12월 25일 |
아래와 같은 콜 스택에서 유저 공간에서 돌던 레지스터 Stack Push와 Exception 발생 시 Stack Push에 대해서 살펴봤어요. 이제는 평상시 함수 호출 시 어떻게 Stack Push를 하는 지 점검하려고 해요. 자 계속 그 동안 다뤄왔던 아래 "rild"란 프로세스의 콜스택에서 msm_ipc_router_sendmsg()-> msm_ipc_router_send_to() 으로 함수가 호출된 후 스택 푸쉬가 어떻게 수행되는 지 점검해볼께요.-000|do_mem_abort()-001|el1_da(asm) -->|exception-002|ch_pop_remote_rx_intent()-003|glink_tx_common()-004|glink_txv()-005|ipc_router_glink