一、前言
比如:uImage下有很多驱动文件,但是驱动开发时,要频繁更改驱动文件,如果每次编译整个uImage编译会浪费时间,所以引入模块化方式编译,把驱动设置为模块化编译,这样每次更改或重新编译时,只需要重新编译对应的驱动文件就可以了。省时省力。
二、准备
命令
- 安装驱动:immod *.ko
- 卸载驱动:rmmod *.ko
文件
- 驱动文件:fsmp157a_led.c(放在drivers/char/目录下)
- 驱动文件:fsmp157a_led.h(放在drivers/char/目录下)
- 应用层文件:fsmp157a_led_test.c(测试文件)
三、步骤
1.修改图形化界面信息
打开 drivers/char文件夹下的 Kconfg文件
添加如下内容:
2.修改Makefile文件
打开 drivers/char文件夹下的 Makefile文件
3.测试
a. 图形界面-选择模块化编译
b.编译linux源码,生成uImage和设备树文件
time make -j4 uImage vmlinux dtbs LOADADDR=0xc2000000
c.内核编译生成uImage镜像文件和设备树文件拷贝到~/tftpboot目录下
d. 模块化编译
make -j4 modules
成功现象:LD [M] driver/char/fsmp157a_led.ko
e. 挂载fsmp157a_led.ko文件
将fsmp157a_led.ko文件,拷贝到~/nfs/roots目录下
f. 开发板上电,重启
g. 在串口工具中,给开发板安装fsmp157a_led.ko驱动
insmod *.ko
h. 测试-运行应用层文件(点灯)-观察现象
运行./a.out(fsmp157a_led_test.c编译后的可执行文件),灯亮代表成功
到此已完成