通过上一章的学习,我们学会了使用menuconfig图形化配置工具,以及了解了menuconfig相关的文件:Kconfig .config XXXdefconfig。本章节学习将helloworld驱动编译进内核。
输入“cd drivers/char”进入到 drivers/char 目录下,然后输入“mkdir hello”建立hello文件夹,并输入“cd hello”进入hello文件夹,如下(图8-1)所示:
图8-1
然后将第三章编写的hello.c文件拷贝到hello文件夹内。如下(图8-2)所示:
图8-2
输入“touch Kconfig”命令创建Kconfig文件,Kconfig文件内容如下所示:
config HELLO
tristate "hello world"
help
hello hello
然后“touch Makefile”命令创建Makefile文件,Makefile文件内容如下所示:
obj-$(CONFIG_HELLO)+=helloworld.o
接下来修改上一级目录的Kconfig文件和Makefile文件,也就是driver/char目录。Makefile添加如下图(图8-3)所示内容。
obj-y += hello/
图8-3
Kconfig添加如下图(图8-4)所示内容:
source “drivers/char/hello/Kconfig”
图8-4
最后打开menuconfig图形化配置工具,在配置界面选择helloworld驱动。把驱动编译进Linux内核,用 * 来表示,所以配置选项改为*。如果想要将驱动编译为模块,则用M来表示,配置选项改为M。这里我们选择成 *
Device Drivers ─>
Character devices --->
<*> hello world或者<M> hello world
图8-5
然后将光标移动到save,保存配置,如下图(图8-6)所示:
图8-6
保存到.config文件,如下(图8-7)所示:
图-7
退出配置界面,然后输入以下命令便可以编译源码了。
make savedefconfig
cp defconfig arch/arm64/configs/rockchip_linux_defconfig
cd ../
./build.sh kernel
图8-8
编译成功之后,进入到drivers/char/hello目录下,可以看到会生成对应的.o文件。就说明已经成功将驱动编译进内核。
图8-9
将编译好的内核镜像烧写到开发板上后,在开发板系统启动的时候也可以成功看到加载helloworld驱动,如下图(图8-10)所示:
图8-10
如果在图形化配置界面中选择的M,也就是编译成驱动模块,则生成helloworld.ko文件如下图(图8-11)所示:
图8-11
【最新驱动资料(文档+例程)】
链接 https://pan.baidu.com/s/1M4smUG2vw_hnn0Hye-tkog
提取码:hbh6
【B 站配套视频】
https://b23.tv/XqYa6Hm
【RK3568 购买链接】
https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-2245
h6
【B 站配套视频】
https://b23.tv/XqYa6Hm
【RK3568 购买链接】
https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-2245
2452613.11.2fec74a6elWNeA&id=669939423234