LINUX
Posts
487 posts[라즈베리파이] 인터럽트 핸들러에서 스택 덤프 저장
아래 패치를 적용하면 해당 프로세스의 스택 메모리 덤프를 stack_dump 배열에 저장합니다.인터럽트 처리가 마무리 된 후 프로세스 레벨에서 stack_dump 배열에 저장된 메모리 덤프를 커널 로그로 출력하면,인터럽트 벡터 심볼 __irq_svc과 스택에 푸쉬한 레지스터 정보를 모두 볼 수 있습니다.diff --git a/drivers/video/fbdev/bcm2708_fb.c b/drivers/video/fbdev/bcm2708_fb.cindex 612293c..2623e0d 100644--- a/drivers/video/fbdev/bcm2708_fb.c+++ b/drivers/video/fbdev/bcm2708_fb.c@@ -713,9 +713,28 @@ static void bcm2708_fb_i
[라즈베리파이] 커널 정보 확인 - Trace32
아래 Trace32 스크립트를 실행하면 라즈베리파이 커널 vmlinux를 Trace32에 올릴 수 있습니다.sys.cpu cortexa7sys.u d.load.elf vmlinux 라즈베리파이 리눅스 커널 정보를 확인하겠습니다.각 섹션 정보는 아래와 같습니다.y.l.sec_____address________|path\section___________________________|acc|init|physicalP:80008000--8000826B|\\vmlinux\.head.text |R-X|L- |P:80100000--80707797|\\vmlinux\.text |R-X|L- |P:80707798--807077B3|\\vmlin
인터럽트(3) - 인터럽트 발생을 막고 싶을 때
어떤 코드 흐름에서는 인터럽트가 발생하면 안될 경우가 있습니다. 예를 들면 프로세서가 슬립에 진입할 때 각 디바이스 드라이버를 서스팬스 시키는 처리 도중 인터럽가 뜨면 안됩니다. 아래는 어셈블코드에서 호출되는 코드인데, 유저 모드에서 권한이 없는 가상 메모리 공간에 접근하면 ARM 프로세스가 감지하고예외(Exception)을 발생시킵니다. 이 때 bad_mode 함수가 호출되는데, 결국 panic 함수를 호출해서 커널 패닉을 유발시킵니다. 커널 패닉을 시키기 바로 전 local_irq_disable 함수를 호출해서 인터럽트를 아예 막아 버립니다.[arch/arm/kernel/traps.c]asmlinkage void bad_mode(struct pt_regs *regs, int reason){ co
데비안/우분투 계열 리눅스 배포판의 시스템 기본 bash 설정 파일
사용자 계정의 bash 설정 파일인 ~/.bashrc 말고 시스템 전체에 대한 기본 설정파일의 경우, 데비안/우분투 계열 배포판에서는 /etc/bash.bashrc 파일이 된다. 페도라 등 다른 배포판에서는 다를 수 있음에 유의. 시스템 전체에 적용되는 기본 bash 설정에 대해 변경을 하고자 하는 사항이 있다면 이 파일을 편집하면 되겠다. 당연히 루트 권한을 필요로 한다. # 시스템 bash 설정 파일 편집 sudo vi /etc/bash.bashrc 변경 사항이 반영되려면 로그아웃했다가 다시 로그인하거나, 또는 su 명령으로 터미널 세션을 재시작해 주면 되겠다.

