1. 开发环境
-
电脑虚拟机安装ubuntu18.04
-
树莓派3b+
- 内核用(uname -r查看)Linux raspberrypi 4.9.80-v7+ #1098 SMP Fri Mar 9 19:11:42 GMT 2018 armv7l GNU/Linux
-
源码下载
- https://github.com/raspberrypi/linux/tree/rpi-4.9.y-stable(一定要找到自己内核对应的源码,如上本内核为4.9.80),查看要查看branch中的各个版本
2. 内核编译
配置
make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- bcm2709_defconfig
编译
make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -j4
内核完成编译后编译驱动程序
KERNELDIR :=/home/ubuntu/rpi/linux
PWD :=$(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD)
clean:
rm -rf *.mk .tmp_versions Module.symvers *.mod.c *.o *.ko .*.cmd Module.markers modules.order
load:
insmod ch934x.ko
unload:
rmmod ch934x
install: default
mkdir -p /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial/
cp -f ./ch934x.ko /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial/
depmod -a
uninstall:
rm -rf /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial/ch934x.ko
depmod -a
else
obj-m := ch934x.o
endif
make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-
3. 总结
过程中比较麻烦的是要找到对应的树莓派内核源码程序,里面有个坑,github哪里下载默认是git clone主线的,即使我切换到分支,也是clone主线,最后是下载分支的zip包解决问题。因为下载错了没看清楚浪费了很多时间。