是为了驱动代码的编写,驱动代码的编译需要一个提前编译好的内核,编译内核就必须配置,配置的最终目标会生成 .config文件,该文件指导Makefile去把有用东西组织成内核
注意:
参考博文:https://blog.csdn.net/weixin_45309916/article/details/107518590
源码:https://github.com/raspberrypi/
具体使用的版本取决于树莓派的版本," uname -r "可查看树莓派的版本,我这里是4.14的所以我下载的是4.14的
第一种方式:(推荐使用)
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig
指定ARM架构 指定编译器 树莓派内核 主要核心指令
第二种方式:
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make menuconfig
#指定ARM架构 指定编译器 树莓派内核 主要核心指令
第三种方式:
安装必要的库:
sudo apt-get install bc
sudo apt-get install libncurses5-dev libncursesw5-dev
sudo apt-get install zlib1g:i386
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs
./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img
输入命令 " dmesg "看看SD卡是否挂在成功
把树莓派的sd卡插入ubuntu系统电脑,树莓派的sd卡有两个分区:
一个fat分区,是boot相关的内容,kernel的img文件就放在这个分区里;
一个是ext4分区,也就是系统的根目录分区。
sudo mount /dev/sdb1 data1
sudo mount /dev/sdb2 data2
此时data1和data2就有数据了(data1:(fat分区) 放置内核镜像 data2(ext4分区):存放存放根目录)
sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/qingmu/work/linux-rpi-4.14/data2 modules_install
INSTALL_MOD_PATH:这里用的绝对路径避免出错
操作ext4(data2)分区,需要root权限。
cp kernel_new.img ../data1/kernel7.img
cp arch/arm/boot/dts/.*dtb* /home/chenlc/data1
cp arch/arm/boot/dts/overlays/.*dtb* /home/chenlc/data1/overlays/
cp arch/arm/boot/dts/overlays/README /home/chenlc/data1/overlays/
注意路径问题,这里是我的路径,要根据自己的路径来,不要出错
1.修改codline.txt文件
dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
** 2.修改config.tex文件**
在文件的末尾加上(如果有这句,就不需要加)
dtoverlay=pi3-miniuart-bt
uname -r
和我们最开始的内核版本4.14.98-v7+ 不一致 ,和我们下载的内核版本一致,成功
希望可以帮助到小伙伴们