저번 글에서 Kernel menuconfig로 GPIO disable해놔서 GPIO로 전원을 받는 7인치 LCD가 부팅 이후 안켜졌었는데 다시 키도록 하겠다.
ubuntu@ubuntu8:~/pi_bsp/kernel/linux$ vi build.sh
1 #make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2711_defconfig
2 #make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
3 #make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j4
4 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage
3번줄 가서 yy p 해서 3번줄 4번줄에 복붙하고 3번 주석처리
4번 줄 가서 zImage 뒤에서 D로 커서 뒤로 다 지우기
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
Device Driver -> GPIO support -> /sys/class/gpio 스페이스바 눌러서 체크다시 해주면 charater device도 같이 enable 될거임.
이제 커널, 시스템콜 함수를 빌드
ubuntu@ubuntu8:~/pi_bsp/kernel/linux$ ./build.sh
파이로 넘겨야겠죠
ubuntu@ubuntu8:~/pi_bsp/kernel/linux$ cp arch/arm/boot/zImage /srv/nfs/
라즈베리파이에서 nfs공유폴더 들어가고 zImage를 kernel 위치에 넣어주고 sync한번 쳐주고 재부팅
pi@pi08:/mnt/ubuntu_nfs$ ls -l zImage
-rwxrwxr-x 1 pi pi 7605312 Feb 15 16:18 zImage
pi@pi08:/mnt/ubuntu_nfs$ sudo cp zImage /boot/firmware/kernel7l.img
pi@pi08:/mnt/ubuntu_nfs$ sync
pi@pi08:/mnt/ubuntu_nfs$ sudo reboot
uname -a 를 쳐서 커널 시간 확인해주고 09:17 좋아요~
LCD 잘 켜져있는지만 확인하쇼!
이거까지 되면 진짜 끝!
pi@pi08:~$ cd systemcall_test/
pi@pi08:~/systemcall_test$ ./syscall_app
input value = 5
mysyscall return value = 25
printk로 출력한 메시지 출력하는 방법
한페이지씩 볼 때
pi@pi08:~/systemcall_test$ dmesg | more
이건 버퍼라서 한번 출력하면 비워짐. 고로 새로 출력된 내용만 출력되는거임.
pi@pi08:~/systemcall_test$ sudo cat /proc/kmsg
kmsg의 메모리는 커널에 할당되어 있는 메모리 공간이고 이런식으로 명령어를 치면 마운트해서 출력해주는거임.
kernel과 boot 시 발생되는 log들을 저장함. 근데 kernel log가 안보임....
apt에서 패키지를 받아야 되겠음.
만약 패키지를 다운받아야되는데 이름이 어렴풋이 기억나는데 정확하진 않을 때 찾는 방법
pi@pi08:/var/log $ sudo apt update
pi@pi08:/var/log $ apt-cache search klogd
생각한 명령어가 없다.
구글링하겠다.
어쨋든 이런식으로 찾을 수 있다는 거~
pi@pi08:/var/log $ sudo apt install rsyslog
찾았다. 설치하고 다시 커널 로그가 찍히도록 실행한번 해주고
pi@pi08:~/systemcall_test$ ./syscall_app %
input value = 6
mysyscall return value = 36
생겼죠?
pi@pi08:/var/log $ ls kern.log
kern.log
pi@pi08:/var/log $ cat kern.log
2024-02-16T10:52:45.630016+09:00 pi08 kernel: [ 5260.889173] Welcome to WCM's Embedded System!! app value=6
pi@pi08:/var/log $ tail -5 kern.log
2024-02-16T10:52:45.630016+09:00 pi08 kernel: [ 5260.889173] Welcome to WCM's Embedded System!! app value=6
2024-02-16T10:54:50.460025+09:00 pi08 kernel: [ 5385.725203] Welcome to WCM's Embedded System!! app value=5
2024-02-16T10:54:59.890001+09:00 pi08 kernel: [ 5395.149563] Welcome to WCM's Embedded System!! app value=4
pi@pi08:/var/log $ head -5 kern.log
2024-02-16T10:52:45.630016+09:00 pi08 kernel: [ 5260.889173] Welcome to WCM's Embedded System!! app value=6
2024-02-16T10:54:50.460025+09:00 pi08 kernel: [ 5385.725203] Welcome to WCM's Embedded System!! app value=5
2024-02-16T10:54:59.890001+09:00 pi08 kernel: [ 5395.149563] Welcome to WCM's Embedded System!! app value=4
우분투에선 설치 안해도 있음
/var/log 디렉터리 들어가면
결론:
1.
dmesg 하면 부팅하고 지금까지 쌓여있는게 한번에 다 출력됨. 쌓이면 출력하는데 1~2분 걸림
dmesg | grep welcome 이런식으로 찾는거도 가능하긴함.
2.
sudo cat /proc/kmsg 를 치면 버퍼에 있는 내용을 비워주면서 출력해줌 고로 한번만 출력이 가능함. 최근 커널 메시지를 볼 때 유용함.
3.
apt에서 rsyslog 패키지를 설치하고
/var/log 디렉터리에서
tail -f kern.log를 치면 명령어를 실행할 때마다 실시간으로 확인이 가능하다.
pi@pi08:/var/log $ tail -5 kern.log를 쓰면 5개만 출력하고 끝남.
원하는거 쓰세영 ~
'RaspberryPi' 카테고리의 다른 글
[Raspberry Pi Kernel] Kernel의 시스템 콜 함수를 활용한 GPIO Button, LED 제어 (0) | 2024.02.16 |
---|---|
[Raspberry Pi Kernel] Kernel의 시스템 콜 함수를 활용한 GPIO LED 제어 (0) | 2024.02.16 |
[RaspberryPi Kernel] Ubuntu에서 Raspberry Pi Kernel system call 함수 구현 (0) | 2024.02.15 |
[RaspberryPi4 Kernel] Ubuntu에서 BCM2711 커널 빌드해서 올리기 (0) | 2024.02.15 |
[Raspberry Pi] 작업한 이미지 복제하기 (2) | 2024.02.02 |