驱动框架8——将驱动集成到内核中
以下內(nèi)容源于朱有鵬《物聯(lián)網(wǎng)大講堂》課程的學(xué)習(xí)整理,如有侵權(quán),請(qǐng)告知?jiǎng)h除。
十五、將驅(qū)動(dòng)添加到內(nèi)核中
1、驅(qū)動(dòng)的存在形式
(1)野生,優(yōu)勢是方便調(diào)試開發(fā),所以在開發(fā)階段都是這種;
(2)家養(yǎng),優(yōu)勢可以在內(nèi)核配置時(shí)make menuconfig決定內(nèi)核怎么編譯,方便集成。比如DM9000已經(jīng)集成在內(nèi)核中了,可以在menuconfig時(shí)配置。
2、驅(qū)動(dòng)開發(fā)的一般步驟
(1)以模塊的形式在外部編寫、調(diào)試;
(2)將調(diào)試好的驅(qū)動(dòng)代碼集成到kernel中
3、實(shí)踐
(1)關(guān)鍵點(diǎn):Kconfig、Makefile、make menuconfig
(2)操作步驟
- 第1步:將寫好的驅(qū)動(dòng)源文件放入內(nèi)核源碼中正確的目錄下;比如led的驅(qū)動(dòng),應(yīng)該放在/drivers/leds/目錄下;
- 第2步:/drivers/leds/目錄下,在Makefile中添加相應(yīng)的依賴;
- 第3步:在Kconfig中添加相應(yīng)的配置項(xiàng);(因?yàn)閙ake menuconfig的原理是讀取Kconfig中的信息,這里要顯示對(duì)應(yīng)的配置項(xiàng)目,則需要添加相應(yīng)內(nèi)容)
- 第4步:make menuconfig;(以y為示例,此時(shí)會(huì)被編譯進(jìn)去;若以M,則不會(huì)被編譯進(jìn)去,而是被編譯成單獨(dú)的模塊;若以N,則不被編譯。)
第2步:
第3步:
第4步:
選擇y之后,保存,然后在.config文件中會(huì)有如下的宏
結(jié)果如下:
十六、目錄和文件結(jié)構(gòu)
mach-s5pv210/gpiolib.c?s5pv210_gpiolib_init
mach-s5pv210/include/mach/gpio.h#define S5PV210_GPA0(_nr)(S5PV210_GPIO_A0_START + (_nr))
arch/arm/plat-samsung/gpiolib.c里面是210/6410這種4bit CON寄存器類型的操作方法
arch/arm/plat-samsung/gpio.c里面是24XX這種2bit CON寄存器類型的操作方法
drivers/gpio/gpiolib.c里面是內(nèi)核開發(fā)者提供的gpiolib的驅(qū)動(dòng)框架部分
總結(jié)
以上是生活随笔為你收集整理的驱动框架8——将驱动集成到内核中的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql带入参的存储过程_MySql带
- 下一篇: ajax改变json指向,Ajax遍历j