在為您的定制電子設(shè)計挑選零件時,預(yù)先檢查 Linux 驅(qū)動程序支持是值得的。為不受支持的硬件編寫新的驅(qū)動程序既費時又會帶來風(fēng)險并增加項目的復(fù)雜性。
最好選擇支持的硬件。我們?nèi)绾问紫葯z查硬件是否受支持?首先,您需要找到您將使用的 Linux 的確切版本。
獲得正確的 Linux 內(nèi)核
您可能使用的是 kernel.org 的內(nèi)核版本,但更有可能使用的是 SOC 供應(yīng)商提供的任何定制內(nèi)核。例如,如果您使用帶有 BSP imx_4.9.88_2.0.0_ga 的 NXP i.MX 處理器,那么您將使用這個。
您需要確保您擁有將要使用的 Linux 內(nèi)核的確切版本。支持一直在添加和刪除,不能保證在兩個不同版本的 Linux 內(nèi)核中會找到相同的代碼。
尋找驅(qū)動程序支持
既然您擁有正確的內(nèi)核源代碼,那么如何檢查給定的硬件部件號是否受支持?
最好的方法是對您要查找的部件號進行文本搜索。我將用幾個例子來說明這一點。
注意:在這些示例中,我們使用的是 kernel.org 的內(nèi)核版本 v5.0-rc1。搜索我們將使用“git grep”,這是一個非??焖俚拿钚泄ぞ?,用于搜索 git 存儲庫的全部內(nèi)容。
示例 1:S25FL512SAGMFI011 閃存
您可能會嘗試的第一件事是搜索整個零件編號。
這沒什么好說的。下一步是在不區(qū)分大小寫的情況下進行搜索。最好不區(qū)分大小寫搜索,因為 Linux 內(nèi)核更喜歡驅(qū)動程序名稱的小寫標(biāo)識符,但您可能會在大寫或小寫中找到線索。
不幸的是,這仍然沒有提出任何建議。接下來要嘗試的是從部件號中刪除一些尾隨字符,因為其中一些可能是指包裝、溫度范圍和其他不影響設(shè)備邏輯操作的東西,并且不影響Linux驅(qū)動程序的運行。
您可以從搜索字符串中逐個刪除字符,直到找到匹配項,然后根據(jù)數(shù)據(jù)表和結(jié)果做出明智的決定,以查看您的部分是否受支持。查看數(shù)據(jù)表,我們可以看到只有 S25FL512S 部分與設(shè)備的邏輯操作相關(guān)。
現(xiàn)在我們有了一些有趣的結(jié)果。第一個結(jié)果是“jedec,spi-nor”設(shè)備樹綁定的一些文檔。最后一個結(jié)果是“spi-nor.c”驅(qū)動程序中的一個表條目,該表描述了這個特定閃存芯片的一些屬性。
由此我們可以推斷該芯片是受支持的,并且可以在啟動時通過其 JEDEC ID 檢測到,如果按照第一個結(jié)果的文檔中的描述添加了正確的設(shè)備樹條目。
示例 2:MCP79411-I/SN 實時時鐘
同樣,搜索整個零件編號也不會顯示任何內(nèi)容。查看數(shù)據(jù)表,MCP79410、MCP79411 和 MCP79412 有一個數(shù)據(jù)表。唯一的區(qū)別是設(shè)備內(nèi)部存儲中提供的“唯一 ID”類型。因此我們可以嘗試搜索“MCP7941”。
我們再次獲得一些驅(qū)動程序結(jié)果和一些關(guān)于如何通過設(shè)備樹添加支持的文檔。
最終積分
有時不會明確支持確切的部分,但它可能在功能上與另一部分相同,在這種情況下,可以對兩者使用相同的驅(qū)動程序。
如果該部分不受支持,則值得擁有一份最新的 Linux 內(nèi)核源代碼以進行交叉引用。如果最近添加了支持,您可以將驅(qū)動程序“反向移植”到您的內(nèi)核版本。
有時,驅(qū)動程序已經(jīng)編寫完成,但尚未包含在官方內(nèi)核源代碼中。它可能已提交到郵件列表,您或許可以盡早試用。在任何情況下,“谷歌”都可以提供很大的幫助。
審核編輯:郭婷
-
芯片
+關(guān)注
關(guān)注
460文章
52505瀏覽量
440821 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1416瀏覽量
41426 -
Linux
+關(guān)注
關(guān)注
87文章
11511瀏覽量
213790
發(fā)布評論請先 登錄
什么是嵌入式Linux?
嵌入式Linux和嵌入式Linux開發(fā)環(huán)境

嵌入式linux學(xué)習(xí)

【嵌入式】基于ARM的嵌入式Linux開發(fā)總結(jié)

嵌入式linux簡介

嵌入式linux和桌面linux的區(qū)別

嵌入式linux和物聯(lián)網(wǎng),嵌入式Linux或RTOS:用于物聯(lián)網(wǎng)

嵌入式 Linux 的基礎(chǔ)知識介紹

嵌入式linux和物聯(lián)網(wǎng),嵌入式Linux或RTOS:用于物聯(lián)網(wǎng)

是否要從單片機轉(zhuǎn)為嵌入式Linux

如何判斷硬件是否支持嵌入式Linux

如何判斷硬件是否具有嵌入式Linux支持

評論