作 者:道哥,10 年嵌入式開發(fā)老兵,專注于:C/C 、嵌入式、Linux。目錄關(guān)注下方公眾號,回復(fù)【書籍】,獲取 Linux、嵌入式領(lǐng)域經(jīng)典書籍;回復(fù)【PDF】,獲取所有原創(chuàng)文章( PDF 格式)。
因此,這幾篇文章我們就從最簡單的驅(qū)動模塊編譯開始,然后介紹字符設(shè)備驅(qū)動程序。
- 每一篇文章的介紹都是正確的,但是如果把很多文章放在一起看,就會發(fā)現(xiàn)怎么說的都不一樣啊?
- 有些文章注重函數(shù)的介紹,但是缺乏一個全局的視角,從整體上來觀察驅(qū)動程序的結(jié)構(gòu);
- 對于一個新手來說,能夠邊學(xué)習(xí)、邊實(shí)踐,這是最好的學(xué)習(xí)方式,但是很多文章不會注意這方面。雖然文章內(nèi)容很漂亮,但是不知道怎么去實(shí)踐、驗(yàn)證。
- 編譯進(jìn)內(nèi)核;
- 編譯為一個獨(dú)立的驅(qū)動模塊;
為了便于測試,以下操作都是在 Ubuntu16.04 操作系統(tǒng)里完成的。編譯Linux驅(qū)動程序,肯定需要內(nèi)核源碼,這里選擇的是 linux-4.15 版本,可以在官網(wǎng)下載。
文末有下載方式。下載之后,把linux-4.15.tar.gz解壓到Ubuntu中任意目錄即可,例如:解壓到~/tmp/目錄下:
只要按照固定的格式來編寫這3個文件,linux內(nèi)核的編譯腳本就可以確保把我們的驅(qū)動程序編譯進(jìn)去。
- 源代碼
- Kconfig
- Makefile
- 在內(nèi)核中,打印函數(shù)是 printk,而不是 printf;
- 打印信息的級別有好幾個,從 DEBUG 到 EMERG,這里使用的是 KERN_ALERT,方便查看打印信息。
按向下方向鍵,把高亮定位到 Device Drivers ---> ,然后敲回車鍵,進(jìn)入到 Device Drivers 的配置界面。
可以看到 hello driver 前面顯示的是型號 *,這表示:該驅(qū)動將會編譯進(jìn)內(nèi)核。
按下回車鍵,就會彈出保存對話框,選擇默認(rèn)保存文件 .config 即可,然后在按鈕高亮的時候,按下回車鍵即可保存。
此時,在彈出的確認(rèn)窗口中,選擇 ,按下回車鍵即可:
此時,返回到 Device Drivers 的配置界面,在最下面的按鈕中,選擇讓 高亮,然后一路退出即可。
現(xiàn)在,hello驅(qū)動程序的Makefile已經(jīng)創(chuàng)建好了,我們還要讓linux內(nèi)核的編譯框架知道這個文件才行。
- CONFIG_HELLO 可以看做一個變量,在編譯的時候,這個變量的值可能是:y, n 或者 m。
- 在剛才的 Kconfig 參數(shù)配置中,CONFIG_HELLO 被設(shè)置為 y,于是這句話就被翻譯成:obj-y = hello,表示把 hello 驅(qū)動編譯進(jìn)內(nèi)核。
編譯成功之后,就可以得到文件: linux-4.15/drivers/hello/hello.ko。
- 在執(zhí)行 make ARCH=x86_64 menuconfig 指令的時候,把 hello 配置成 M;
- 然后在 linux-4.15 中執(zhí)行編譯模塊指令:make -j4 modules。
可以把 hello 目錄下的所有文件刪除,只保留源文件 hello.c,然后新建 Makefile 文件。ifneq ($(KERNELRELEASE),)
卸載驅(qū)動:
linux-4.15.tar.gzhello文件夾壓縮包
北京2022年10月11日 /美通社/ -- 在四川大涼山深處,有一只"涼山黑鷹"少年籃球隊:隊員平均年齡12歲,平均身高1米3,球隊剛成立時,連個像樣的球場都沒有。然而,憑著一腔熱情和驚人天賦,這只...
關(guān)鍵字: 網(wǎng)絡(luò) BSP 內(nèi)核 騰訊(全球TMT2022年9月27日訊)新思科技近日宣布推出業(yè)內(nèi)首款基于其ZeBu? EP1硬件仿真系統(tǒng)的硬件仿真與原型驗(yàn)證統(tǒng)一硬件系統(tǒng),致力為SoC驗(yàn)證和前期軟件開發(fā)提供更高水平的性能和靈活性。新思科技ZeBu...
關(guān)鍵字: 硬件仿真 新思科技 硬件系統(tǒng) 編譯上海2022年8月5日 /美通社/ -- 日本院線級精準(zhǔn)護(hù)膚品牌TAKAMI強(qiáng)勢布局中國,品牌天貓官方旗艦店于7月1日重磅亮相,以便捷的線上購買渠道為中國消費(fèi)者提供更豐富、沉浸的購物體驗(yàn),持續(xù)傳遞品牌的美肌哲學(xué)。這是TA...
關(guān)鍵字: OS OTA 內(nèi)核 大數(shù)據(jù)廣州2022年7月27日 /美通社/ -- 7月24日晚11:08,功能性護(hù)膚品牌溪木源官宣樸樹為品牌代言人。品牌卡點(diǎn)樸樹生日11·08官宣,心意滿滿。以官宣為契機(jī),溪木源也迎來品牌升級,以全新品牌理念、全...
關(guān)鍵字: HEART 內(nèi)核 創(chuàng)始人 大眾