學(xué)到本章節(jié),大家應(yīng)該對(duì)Linux操作系統(tǒng)都有了一定的了解,但可能還不知道我們拿到手的內(nèi)核源碼都經(jīng)歷了什么。
linux有一個(gè)龐大的開源社區(qū),每個(gè)人都可以向開源社區(qū)提交代碼。由于linux內(nèi)核十分龐大所以每個(gè)模塊都有對(duì)應(yīng)的維護(hù)人員。維護(hù)人員的工作就是審核人們提交的代碼是否正確,如果沒有問題,就會(huì)合并到主分支上。這樣就會(huì)使linux內(nèi)核不斷完善和更新。
接下來就是芯片原廠例如恩智浦,開發(fā)人員會(huì)不定期在linux官網(wǎng)下載穩(wěn)定版本的內(nèi)核,將其適配到各個(gè)芯片上,芯片原廠也會(huì)對(duì)內(nèi)核進(jìn)行維護(hù)形成自己的維護(hù)版本。
最后是板卡廠商,會(huì)到芯片原廠獲取已經(jīng)適配好的穩(wěn)定版本的內(nèi)核,在其基礎(chǔ)上進(jìn)行各個(gè)外設(shè)接口的適配,然后給用戶提供移植好的板級(jí)開發(fā)包。板卡廠商也會(huì)對(duì)移植好的內(nèi)核版本進(jìn)行維護(hù),例如一些BUG修復(fù)或者物料替換。
接下來講一下獲取這三種源碼的方法:
獲取linux官網(wǎng)源碼
地址:https://mirrors.edge.kernel.org/pub/linux/kernel/
如果不是在芯片原廠工作一般不會(huì)到linux官網(wǎng)下載源碼,但我們有必要了解這種獲取源碼的方法。因?yàn)閘inux官網(wǎng)對(duì)一些bug或者驅(qū)動(dòng)更新的比較及時(shí),在遇到一些內(nèi)核問題時(shí)就可以到linux官網(wǎng)的源碼中查一下是不是有相關(guān)的提交記錄。
獲取芯片原廠的linux源碼
每個(gè)芯片原廠都有自己的git倉庫,他們會(huì)把已經(jīng)開發(fā)完成的內(nèi)核源碼放到git倉庫中,供用戶查看和下載。下面以NXP的倉庫為例進(jìn)行講解。
地址:https://github.com/nxp-imx/linux-imx
(一)切換到對(duì)應(yīng)的版本,因?yàn)?a class="article-link" target="_blank" href="/tag/%E5%BC%80%E5%8F%91%E6%9D%BF/">開發(fā)板是在linux4.1.15上進(jìn)行的適配,所以講解均以4.1.15版本內(nèi)核為例。
(二)可以選擇使用git克隆,也可以選擇下載ZIP壓縮包。
獲取ELF?1開發(fā)板源碼
ELF?1的內(nèi)核源碼在資料包當(dāng)中的路徑如下:ELF 1開發(fā)板資料包