失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 树莓派学习笔记(九)树莓派Linux内核开发

树莓派学习笔记(九)树莓派Linux内核开发

时间:2024-04-04 05:31:17

相关推荐

树莓派学习笔记(九)树莓派Linux内核开发

一、树莓派Linux源码配置

1、概念:

驱动代码的编译需要一个提前编译好的内核,想要编译内核就必须先配置配置的最终目标会生成 .config文件,该文件指导Makefile去把有用东西组织成内核

厂家配备Linux内核源码,比如说买了树莓派,就会有树莓派linux内核源码

第一种方式:

使用厂家.config

树莓派1的工程是bcmrpi_defconfig;

树莓派2、3的工程是bcm2709_defconfig

第二种方式:

make menuconfig 一项项配置,通常是基于厂家的config来配置

第三种方式:

完全自己编写

2、配置步骤:

下载交叉编译工具及Linux源码(参考博文:学习笔记八)

下载所需库

sudo apt-get install libncurses5-dev libncursesw5-dev

sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5

sudo apt-get install zlib1g:i386

使用源码自带的config配置

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig

ARCH=arm 指定ARM架构

CROSS_COMPILE=arm-linux-gnueabihf- 指定编译器

KERNEL=kernel7 树莓派

make bcm2709_defconfig 主要核心指令

使用make menuconfig作进一步配置,无修改可不执行(需要ncurse库,下载方式在上面)

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make menuconfig

驱动两种加载方式:

“ * " 编译进内核 zImage包含了驱动

"M "模块方式生成驱动文件xxx.ko 系统启动后,通过命令inmosd xxx.ko 加载

二、树莓派Linux内核编译

1、编译:

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs-j4指定用多少电脑资源进行编译zImage生成内核镜像modules要生成驱动模块dtbs生成配置文件

编译成功后,看到源码树目录多了vmlinux,失败则无此文件

生成目标zImage镜像在arch/arm/boot底下

2、打包zImage成树莓派可用的xxx.img

./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img

在拔出树莓派的SD卡前,先用命令uname -a查看一下内核的版本(4.14.98-v7)

3、数据拷贝(将树莓派的SD卡插入读卡器中)

创建文件夹用来挂载

mkdir data1 data2

挂载U盘(SD卡由两个分区,fat和ext4)

sudo mount /dev/sdb1 data1----fat分区,是boot相关的内容,kernel的img

sudo mount /dev/sdb2 data2----ext4分区,也就是系统的根目录分区

安装modules, 设备驱动文件: hdmi usb wifi io …

sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=【ext4所挂载目录】 modules_install

安装更新 kernel.img 文件,注意镜像名字是kernel7.img

4.1 进入fat分区,备份原镜像kernel7.img为kernelOLD.img

cd /home/chenlc/data1

cp kernel7.img kernel7OLD.img

4.2 再把编译新生成的拷贝到data1,起名kernel7.img

cp kernel_new.img /home/chenlc/data1/kernel7.img

拷贝相关配置文件

cp arch/arm/boot/dts/.dtb[fat所挂载目录]

cp arch/arm/boot/dts/overlays/.dtb[fat所挂载目录]/overlays/

cp arch/arm/boot/dts/overlays/README [fat所挂载目录]/overlays/

4、在虚拟机中断开U盘的连接,然后连接到windows上修改U盘内cmdline.txt内容,将串口用来打印调试信息

内容如下:dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

5、将SD卡插回树莓派,用串口查看启动的信息

命令uname -a 查看kernel已经改变,由4.14.98-v7变为4.14.114-v7

如果觉得《树莓派学习笔记(九)树莓派Linux内核开发》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。