Linux驱动入门:编译内核

1.环境搭建

        环境搭建内容比较繁琐,建议查看韦东山老师的环境搭建教程。

        百问网嵌入式专家-韦东山嵌入式专注于嵌入式课程及硬件研发 (100ask.net)

2.编译内核目的

        为什么编译驱动程序之前要先编译内核?
⚫ 驱动程序要用到内核文件:比如驱动程序中这样包含头文件: #include <asm/io.h>,其中的 asm 是一个链接文件,指向 asm-arm 或 asm-mips,这需要先配置、编译内核才会生成asm 这个链接文件。
⚫ 编译驱动时用的内核、开发板上运行到内核,要一致:开发板上运行到内核是出厂时烧录的,你编译驱动时用的内核是你自己编译的,这两个内核不一致时会导致一些问题。所以我们编译驱动程序前,要把自己编译出来到内核放到板子上去,替代原来的内核。
⚫ 更换板子上的内核后,板子上的其他驱动也要更换:板子使用新编译出来的内核时,板子上原来的其他驱动也要更换为新编译出来的。所以在编译我们自己的第 1 个驱动程序之前,要先编译内核、 模块,并且放到板子上去。

3.在ubuntu中编译内核的步骤(其中/home/book/..是自己的内核路径,源码git下载在韦东山老师的资料中心

cd /home/book/100ask_imx6ull-sdk/Linux-4.9.88

make mrproper
make 100ask_imx6ull_defconfig
make zImage -j4
make dtbs

 3.2 将编译好的内核文件放入虚拟文件系统(给开发板使用)

cp arch/arm/boot/zImage /home/book/nfs_rootfs
cp arch/arm/boot/dts/100ask_imx6ull-14x14.dtb /home/book/nfs_rootfs

3.3.编译安装内核模块

cd ~/100ask_imx6ull-sdk/Linux-4.9.88/

make modules

3.4安装内核模块到nfs文件目录

make ARCH=arm INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install

4.安装内核和模块到开发板

#挂载网络文件系统
mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
#拷贝文件到boot目录
cp /mnt/zImage /boot
cp /mnt/100ask_imx6ull-14x14.dtb /boot
cp /mnt/lib/modules /lib -rfd
sync
#重启开发板
reboot


 

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值