Ⅱ. 라즈베리 확장
임베디드 개발 환경 구축
- Makefile
- hello 파일 내부(cd linux/driver/hello) linux폴더-driver폴더 내 hello 폴더 생성
- Makefile 수정
- vi linux/driver/Makefile //리눅스 폴더 내 드라이버의 Makefile을 수정하는 것이다.
마지막에 obj-y += hello/ 를 적어준당
리눅스 폴더에 가서(cd ../../)
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig 실행
(*여기에서 arm-linux-gnueabihf-bcm2709_defconfig의 위치는 각자 설정해주어야 된다)
(본인의 경우 make ARCH=arm CROSS_COMPILE=/home/kkn/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- bcm2709_defconfig가 경로이다)
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs
(make ARCH=arm CROSS_COMPILE=/home/kkn/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- zImage modules dtbs)
(사실 dtbs는 필요한지 아닌지는 모르겠당.. 어차피 make clean하지 않아서 금방 진행되므로 무시하고 컴파일 했음)
새로 생성한 hello폴더 내 hello가 built-in되는 것을 확인할 수 있다.
진행이 끝나면 위의 메시지를 확인할 수 있다.(한 10초 걸린듯)
sd카드에 설치 (lsblk 명령어로 sd카드가 올라와있는지 확인해야함)
$ mkdir mnt/fat32
$ mkdir mnt/ext4
$ sudo mount /dev/sdb1 mnt/fat32
$ sudo mount /dev/sdb2 mnt/ext4
*arm-linux-gnueabihf는 앞 장의 컴파일러 path, INSTALL_MOD_PATH는 설치할 path 경로
- kernel image(mkknlimg 스크립트로 변환 필요), dtb(device tree blob) 복사
$ sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img //필수 항목은 아님(백업용)
$ sudo scripts/mkknlimg arch/arm/boot/zImage mnt/fat32/$KERNEL.img
(scripts는 linux폴더 에서 실행해야함, $KERNEL.img 는 kernel7.img를 지칭(kernel.img 조심하자))
$ sudo cp arch/arm/boot/dts/*.dtb mnt/fat32/
(dtb는 사실 안바뀌었을 거 같지만 난 초보기 때문에 그냥 복사...)
$ sudo cp arch/arm/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
$ sudo cp arch/arm/boot/dts/overlays/README mnt/fat32/overlays/
$ sudo umount mnt/fat32
$ sudo umount mnt/ext4
라즈베리파이에 sd카드를 넣고 booting
uname -a로 확인
dmesg로 확인
lsmod는 로딩된 모듈만 확인하는 것이고 built-in 된 것은 출력되지 않는다고 한다..
왜 안나오나 잘못되었나 싶었음..
시스템콜 후킹한 것을 테스트해보았을 때에는 부팅 될 때 메시지가 출력되면서 멈춤..
너무 많은 메시지를 호출해서 멈춘걸까 아니면 init에서 필수 드라이버가 로딩되기 전에 진행이 되어서 그런걸까 좀 더 공부해야할듯..
* module을 insmod할 때에는 linux폴더 내 System.map에는 모듈 심볼이 없지만 built-in을 할 때에는 있는 것을 확인할 수 있다.
(이런식으로..)
'프로그래밍 > Raspberry' 카테고리의 다른 글
라즈베리파이 sd카드 문제 (2) | 2015.09.08 |
---|---|
라즈베리파이 File system check failed 문제 (0) | 2015.09.04 |
Raspberry pi2 (시스템 콜 후킹) (0) | 2015.08.13 |
Raspberry pi2 (시스템 콜) (0) | 2015.08.13 |
Raspberry pi2 (크로스컴파일) (0) | 2015.08.13 |