国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品
立即注冊(cè)
登錄
電子工程網(wǎng)
新聞
新品
文章
下載
視頻
工具
論壇
研討會(huì)
空間
落風(fēng)的個(gè)人空間
http://www.qingdxww.cn/space-uid-138363.html
[收藏]
[復(fù)制]
[RSS]
空間首頁
博客
主題
留言板
個(gè)人資料
論壇
BBS
我的空間
好友
帖子
收藏
道具
勛章
任務(wù)
博客
迅為4412開發(fā)板實(shí)驗(yàn)_Makefile編譯(下)
已有 770 次閱讀
2020-12-17 10:44
4.5Makefile 文件
接前一小節(jié)的內(nèi)容,繼續(xù)介紹系統(tǒng)是如何一步一步編譯出內(nèi)核鏡像的。
在這里仍然以
LED
S 小燈為例。
4.5.1 宏定義 LEDS_CTL 的使用
如下圖所示,led 驅(qū)動(dòng)屬于字符驅(qū)動(dòng),字符驅(qū)動(dòng)一般是在源碼目錄“drivers/char/”下。
如上圖所示,這里要關(guān)注的文件只有框框中的三個(gè)“itop4412_leds.c”,
“itop4412_leds.o”,“Makefile”。
itop4412_leds.c :比較好理解,就是 led 驅(qū)動(dòng)的源碼
itop4412_leds.o :這個(gè)是生成最終 zImage 二進(jìn)制的中間文件
Makefile :就是 Make 命令所需要的文件
這里不關(guān)心 itop4412_leds.c 中的代碼,只需先知道 itop4412_leds.c 的文件名即可。在源碼目錄中使用命令“vim drivers/char/Makefile”,如下圖所示。
打開“vim drivers/char/Makefile”文件之后,找到和 itop4412_leds.c 相關(guān)的文件,搜索“itop4412_leds”,如下圖所示。
如上圖方框所示,就是編譯 itop4412_leds.c 的腳本。這個(gè)腳本大家也只需要仿照寫即可,嚴(yán)格的按照已有的例子來寫即可。
如果想添加類似的字符驅(qū)動(dòng),就可以在這個(gè)目錄下添加。
Kconfig、Makefile、menuconfig、“.config”文件大家就可以聯(lián)系起來了。
4.5.2 Makefile 腳本語法簡介
本小節(jié)介紹的語法是對(duì)內(nèi)核源碼子目錄中 Makefile 進(jìn)行簡單的介紹,這部分是經(jīng)常會(huì)用到的,也是需要掌握的。
常用的強(qiáng)制編譯寫法,還是在“drivers/char/Makefile”中,在 Top 行,如下圖所示。
上圖中的這一行“obj-y += misc.o”,注意這里需要和內(nèi)核自帶的代碼對(duì)齊。
“加等號(hào)”右邊的“misc.o”表示要編譯 Makefile 目錄下的“misc.c”文件,
“加等號(hào)”左邊的“obj-y ”表示要編譯,并鏈接進(jìn)內(nèi)核(鏈接進(jìn)內(nèi)核是 linux 源碼中自帶的工具處理的,驅(qū)動(dòng)工程師完全不用關(guān)心具體是怎么實(shí)現(xiàn)的)
如下圖所示,就是 LEDS_CTL 的條件編譯,也就是需要在 Kconfig 中定義,在menuconfig 中配置之后,編譯器運(yùn)行的時(shí)候找到對(duì)應(yīng)的宏變量 LEDS_CTL 之后才會(huì)編譯。
上圖比較好理解,因?yàn)橐恢笔且赃@個(gè) LEDS_CTL 為例來講解的。這種方式在寫驅(qū)動(dòng)的時(shí)候會(huì)經(jīng)常使用到。
最后介紹一下目錄層次的迭代,如下圖所示,使用命令“vim drivers/Makefile”打開“drivers/char”上一層目錄的 Makefile 文件。
搜索關(guān)鍵詞“char”,因?yàn)榍懊娼榻B到的字符變量在“char”目錄下,如下圖所示。
上圖中的語法也是很簡單,只不過“加等號(hào)”右邊有文件變?yōu)榱宋募䦅A。這里表示強(qiáng)制編譯當(dāng)前目錄“/drivers”的下一級(jí)目錄“/char”。在執(zhí)行編譯命令執(zhí)行到這句的時(shí)候,就會(huì)先跳轉(zhuǎn)到“/char”目錄下的“Makefile”文件。
4.6 Makefile 測(cè)試
本小節(jié)給大家做個(gè)簡單的小實(shí)驗(yàn),通過配置 menuconfig 中的 LEDS,來將內(nèi)核編譯進(jìn)內(nèi)核或者不編譯進(jìn)內(nèi)核。
4.6.1 將 LEDS 驅(qū)動(dòng)不編譯
進(jìn)內(nèi)核如下圖所示,在給大家提供的源碼中,解壓之后默認(rèn)狀態(tài)就有將“itop4412_leds.c”編譯進(jìn)內(nèi)核的中間文件“itop4412_leds.o”,如下圖所示。
如下圖所示,使用命令“rm -rf drivers/char/itop4412_leds.o”刪除掉 LEDS 驅(qū)動(dòng)的中間文件“itop4412_leds.o”。
如下圖所示,使用命令“l(fā)s drivers/char/”查看一下,發(fā)現(xiàn)已經(jīng)沒有了“itop4412_leds.o”文件。
然后使用命令“make menuconfig”,打開配置工具,如下圖所示。
打開之后,如下圖所示。找到“Device Drivers ---> ”選項(xiàng)。
如下圖所示,進(jìn)入到“Device Drivers ---> ”選項(xiàng),找到選項(xiàng)“Character devices--->”。
如下圖所示,找到選項(xiàng)“Enable LEDS config”,將 LEDS 的配置關(guān)閉
退出,保存,生成新的“.config”文件。
保存退出后,打開“.config”文件,可以發(fā)現(xiàn)“CONFIG_LEDS_CTL”沒有配置。
關(guān)閉“.config”文件,然后執(zhí)行編譯內(nèi)核的命令“make”,如下圖所示。
如下圖所示,編譯完成。
如下圖所示,使用命令“l(fā)s drivers/char”查看 LEDS 驅(qū)動(dòng)所在目錄,發(fā)現(xiàn)并沒有產(chǎn)生了中間文件。
最后也可以將生成的文件“zImage”文件下載到開發(fā)板,會(huì)發(fā)現(xiàn)“/dev”目錄中沒有產(chǎn)生 LEDS 驅(qū)動(dòng)的設(shè)備節(jié)點(diǎn)“l(fā)eds”。
4.6.2 將 LEDS 驅(qū)動(dòng)編譯進(jìn)內(nèi)核
接上一小節(jié),如下圖所示,使用命令“make menuconfig”,打開 menuconfig 配置工具。
進(jìn)入“ Device Drivers --->”選項(xiàng),然后進(jìn)入“Character devices --->”選項(xiàng),然后如下圖所示,配置上“Enable LEDS config”。
保存退出。打開“.config”文件,可以發(fā)現(xiàn)“CONFIG_LEDS_CTL=y”已經(jīng)配置。
執(zhí)行編譯命令“make”,如下圖所示,編譯完成之后,使用命令“l(fā)s drivers/char/”可以看到“itop4412_leds.o”已經(jīng)生成。
最后也可以將生成的文件“zImage”文件下載到開發(fā)板,會(huì)發(fā)現(xiàn)“/dev”目錄中產(chǎn)生LEDS 驅(qū)動(dòng)的設(shè)備節(jié)點(diǎn)“l(fā)eds”,LED 燈的控制又恢復(fù)正常了。
4.7 編譯流程圖解
現(xiàn)在內(nèi)核編譯相關(guān)的知識(shí)已經(jīng)全部介紹完,本節(jié)做一個(gè)小節(jié)。
下圖已經(jīng)將內(nèi)核編譯的全部過程包含。
如上圖所示。
紅色的線條表示配置文件 Kconfig 這一部分,在 Kconfig 中要定義針對(duì)具體驅(qū)動(dòng)文件的宏變量。然后使用 menuconfig 工具生成新的”,config“文件。
黑色的線條表示編譯文件 Makefile 這一部分,在 Makefile 中針對(duì)宏變量編譯驅(qū)動(dòng)文件。
執(zhí)行 make 命令之后,調(diào)用“.config”文件,配合各級(jí)目錄中的 Makefile 文件編譯具體的驅(qū)動(dòng)源代碼,將源代碼編譯成“.o”中間文件。
當(dāng)中間文件全部編譯完成之后,編譯工具會(huì)生成一個(gè)非常精煉的“zImage”二進(jìn)制文件。
路過
雞蛋
鮮花
握手
雷人
收藏
邀請(qǐng)
舉報(bào)
全部
作者的其他最新博客
•
迅為RK3399開發(fā)板瑞芯微64位六核Linux安卓8.1國產(chǎn)AI人工智能
•
迅為RK3399開發(fā)板瑞芯微64位六核Linux安卓8.1國產(chǎn)AI人工智能主板
•
勇敢牛牛不怕困難,嵌入式之學(xué)習(xí)路線了解,沖
•
迅為IMX6ULL開發(fā)板Linux 4G通信實(shí)驗(yàn)
•
迅為IMX6ULL開發(fā)板Linux RS232/485驅(qū)動(dòng)實(shí)驗(yàn)(下)
評(píng)論 (
0
個(gè)評(píng)論)
您需要登錄后才可以評(píng)論
登錄
|
立即注冊(cè)
評(píng)論
落風(fēng)
加為好友
給我留言
打個(gè)招呼
發(fā)送消息
關(guān)于我們
-
服務(wù)條款
-
使用指南
-
站點(diǎn)地圖
-
友情鏈接
-
聯(lián)系我們
電子工程網(wǎng)
© 版權(quán)所有
京ICP備16069177號(hào)
| 京公網(wǎng)安備11010502021702
返回頂部
主站蜘蛛池模板:
我不卡伦理
|
久草观看
|
2019国产精品青青草原
|
成人黄页网站免费观看大全
|
日本-区二区三区免费精品 日本强日本不卡一
|
在线天堂网
|
日日噜噜夜夜狠狠视频
|
亚洲第一人黄所
|
国产中文字幕在线观看
|
国产不卡免费视频
|
2022久久国产精品免费热麻豆
|
欧洲精品视频在线观看
|
综合色久七七综合七七蜜芽
|
中文字幕avv
|
色综合精品
|
啦啦啦免费高清在线影院
|
欧美在线看视频
|
青青草在视线频久久
|
欧美日韩视频一区二区在线观看
|
免看一级a毛片一片成人不卡
|
亚洲精品二区
|
亚洲第一成年免费网站
|
国产精品一区二区三区久久
|
久国产
|
成人在线视频免费看
|
欧美一区二区三区激情视频
|
日本福利在线观看
|
2019自拍偷拍视频
|
国产成人微拍精品
|
男人阁久久
|
91热久久免费频精品黑人99
|
青青国产精品
|
性欧美黑人
|
美女三级网站
|
亚洲s色大片在线观看
|
aaa在线视频
|
国产欧美日本在线观看
|
www.欧美成人
|
亚洲精品98久久久久久中文字幕
|
亚洲一区二区三区高清视频
|
久久一本日韩精品中文字幕屁孩
|