申明:
小弟openwrt初学,很多东西都不知道,在偶然的机会用到openwrt,想要将自己写的驱动程序编译进内核中,费了九牛二虎之力,最终还是直接在内核源码中进行增加才搞定,过程尽可能的详细,也是自己的一个学习过程,也是给自己做一个笔记后面遇到可以借鉴。
另外,第一次写博客,希望大家不喜勿喷哦,当然文档中有任何问题都欢迎能指出来,而且在过程中遇到了一个问题到现在没有找出为什么,希望大家看到了可以帮忙分析是为什么。先谢谢大家了!^_^
下面进入正题。
1.进入到openwrt顶层目录:
2.进入到下面这个路径
/home/openwrt/7620/openwrt/barrier_breaker/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7620a/linux-3.10.49/drivers,并新建文件夹myleds。
cd build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7620a/linux-3.10.49/drivers
mkdir myleds
3.进入到myleds并新建文件Kconfig,Makefile。
cd myleds
touch Kconfig Makefile
4.打开Kconfig文件,并在文件中添加如下内容:
Vi Kconfig,然后输入下面的内容:
config MYLEDS
tristate "myleds driver"
default n
help
This is a Songshuai's myleds drivice, for debugging kernel model
:wq
保存退出。
5.打开Makefile并在里面添加:
vi Makefile,然后在里面添加内容:
obj-$(CONFIG_MYLEDS) += myleds.o
:wq 保存退出。
6.将写好的驱动源程序拷贝到这个路径下。
cp 这是源程序的路径/myleds.c .
7.返回到上级目录,并打开Makefile修改。
cd ..
vi Makefile
obj-$(CONFIG_MYLEDS) += myleds/
:wq
保存退出。
8.打开Kconfig并在最后面endmenu前面添加:
vi Kconfig
source "drivers/myleds/Kconfig"
然后返回到页面最上面,可以看到驱动的目录所在的位置:
:wq
返回到目录:
/home/openwrt/7620/openwrt/barrier_breaker/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7620a/linux-3.10.49。
9.然后make menuconfig
出现界面,选择Device Drivers,然后回车进入。
翻到最后面,选择myleds,键入”y”或者按空格选择为<*>。然后选择“save”之后退出保存即可。
10.然后直接在根目录下make V=s,进行编译
之后出现了:
输入 y ,回车继续。
大概一分钟左右(大概时间),
回车继续。
直至完成。这个驱动从此就编译进你的内核文件中。
问题:
在第一次进行编译的时候,并没有在make menuconfig中配置myleds为选中的状态,所以在进行make V=s进行编译的过程中出现了两次输入“y”的过程,当时以为是没有配置导致的,所以也就没有多想了,但是编译出来的内核中包含了设备节点myleds。也就是说明已经成功便已进入到内核中了,但是在后来按照上面的过程make menuconfig之后,在进行编译,还是出现了输入两次为“y”的过程,不过结果还是和以前一样,不知道是因为什么哪?求教!