国产香橙派Zero2(2):内核编译及驱动编译
下载源码
https://github.com/orangepi-xunlong/orangepi-build
要选择next版本
执行build.sh 要加sudo
最好是先编译一次镜像
再来编译内核
具体操作参考OrangePi_Zero2_H616_用户手册_v4.0.pdf 新版
制作自己的驱动(在官方内核源码文件夹里编写,官方编译指令)
参考
https://blog.csdn.net/weixin_50239605/article/details/131127494
!!!修改一条指令
新版5.16内核在用命令直接编译内核时的交叉编译工具链即便是添加了环境变量,也依旧会出错,因此可以改为绝对路径。如下所示:
sudo make ARCH=arm64 CROSS_COMPILE=/home/lyprc/LOVE/OrangepiZero2/orangepi-build-next/toolchains/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- -j8
还要关闭更新,否则写在源码文件夹里的所有文件都会被删除!!!
设置 userpatches/config-default.conf 中的 IGNORE_UPDATES 变量为“yes”
查看驱动信息
modinfo xxx.ko
会出现下面
filename: /home/lyprc/LOVE/OrangepiZero2/orangepi-build-next/kernel/orange-pi-5.16-sunxi64/drivers/char/pin4_x.ko
license: GPL v2
depends:
intree: Y
name: pin4_x
vermagic: 5.16.17+ SMP mod_unload aarch64
然而正常的vermagic应该为 5.16.17-sun50iw9 SMP mod_unload aarch64
修改方法:
1.将/home/lyprc/LOVE/OrangepiZero2/orangepi-build-next/kernel/orange-pi-5.16-sunxi64/scripts
里的setlocalversion中最后的res=“$res${scm:++}“修改为res=”$res${scm:+}”
2.将/home/lyprc/LOVE/OrangepiZero2/orangepi-build-next/kernel/orange-pi-5.16-sunxi64里的Makefile修改为 EXTRAVERSION =-sun50iw9
然后再直接命令编译,就可以正常了。
不过如果再用build.sh编译内核,那么编译出来的内核里的驱动的vermagic就会额外带着一个-sun50iw9,因此注意修改Makefile修改为 EXTRAVERSION =<空格>
制作自己的驱动(独立编写编译)
未完待续。。。。。。