리눅스
Posts
554 posts[라즈베리파이] 커널 정보 확인 - 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
[라즈베리파이] 커널 빌드 & 컴파일 환경 설정
라즈베리파이 리눅스 커널 컴파일 명령어 출처https://wikidocs.net/3243https://www.raspberrypi.org/documentation/linux/kernel/building.md 아래와 같이 폴더를 하나 생성합니다./home001/austin.kim/src/raspberry_kernel 소스 코드는 아래 명령어로 다운로드 받습니다.git clone --depth=1 소스 코드를 다 받으면 linux란 폴더가 생깁니다.austin.kim@LGEARND7B16:~/src/raspberry_kernel$ ls -ltotal 4drwxr-xr-x 25 austin.kim home001 4096 Feb 12 08:35 linux 크로스컴파일 환경 설정아래 명령어로 라즈베리 파이 크
인터럽트(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
[Kernel][Stability] tcp_v4_rcv -> __stack_chk_fail
커널 패닉 시 아래 콜 스택이 남아 있습니다.[39136682.663247] [ ] dump_stack+0x19/0x1b[39136682.663626] [ ] panic+0xd8/0x1e7[39136682.663988] [ ] ? tcp_v4_rcv+0x635/0x9f0[39136682.664361] [ ] __stack_chk_fail+0x1b/0x20[39136682.664743] [ ] tcp_v4_rcv+0x635/0x9f0[39136682.665131] [<



