在為您的定制電子設(shè)計(jì)挑選零件時(shí),預(yù)先檢查 Linux 驅(qū)動(dòng)程序支持是值得的。為不受支持的硬件編寫(xiě)新的驅(qū)動(dòng)程序既費(fèi)時(shí)又會(huì)帶來(lái)風(fēng)險(xiǎn)并增加項(xià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 處理器,那么您將使用這個(gè)。
您需要確保您擁有將要使用的 Linux 內(nèi)核的確切版本。支持一直在添加和刪除,不能保證在兩個(gè)不同版本的 Linux 內(nèi)核中會(huì)找到相同的代碼。
尋找驅(qū)動(dòng)程序支持
既然您擁有正確的內(nèi)核源代碼,那么如何檢查給定的硬件部件號(hào)是否受支持?
最好的方法是對(duì)您要查找的部件號(hào)進(jìn)行文本搜索。我將用幾個(gè)例子來(lái)說(shuō)明這一點(diǎn)。
注意:在這些示例中,我們使用的是 kernel.org 的內(nèi)核版本 v5.0-rc1。搜索我們將使用“git grep”,這是一個(gè)非常快速的命令行工具,用于搜索 git 存儲(chǔ)庫(kù)的全部?jī)?nèi)容。
示例 1:S25FL512SAGMFI011 閃存
您可能會(huì)嘗試的第一件事是搜索整個(gè)零件編號(hào)。
這沒(méi)什么好說(shuō)的。下一步是在不區(qū)分大小寫(xiě)的情況下進(jìn)行搜索。最好不區(qū)分大小寫(xiě)搜索,因?yàn)?Linux 內(nèi)核更喜歡驅(qū)動(dòng)程序名稱(chēng)的小寫(xiě)標(biāo)識(shí)符,但您可能會(huì)在大寫(xiě)或小寫(xiě)中找到線(xiàn)索。
不幸的是,這仍然沒(méi)有提出任何建議。接下來(lái)要嘗試的是從部件號(hào)中刪除一些尾隨字符,因?yàn)槠渲幸恍┛赡苁侵阜庋b、溫度范圍和其他不影響設(shè)備邏輯操作的內(nèi)容,并且不影響Linux驅(qū)動(dòng)程序的運(yùn)行。
您可以從搜索字符串中逐個(gè)刪除字符,直到找到匹配項(xiàng),然后根據(jù)數(shù)據(jù)表和結(jié)果做出明智的決定,以查看您的部分是否受支持。查看數(shù)據(jù)表,我們可以看到只有 S25FL512S 部分與設(shè)備的邏輯操作相關(guān)。
現(xiàn)在我們有了一些有趣的結(jié)果。第一個(gè)結(jié)果是“jedec,spi-nor”設(shè)備樹(shù)綁定的一些文檔。最后一個(gè)結(jié)果是“spi-nor.c”驅(qū)動(dòng)程序中的一個(gè)表?xiàng)l目,該表描述了這個(gè)特定閃存芯片的一些屬性。
由此我們可以推斷該芯片是受支持的,并且可以在啟動(dòng)時(shí)通過(guò)其 JEDEC ID 檢測(cè)到,如果按照第一個(gè)結(jié)果的文檔中的描述添加了正確的設(shè)備樹(shù)條目。
示例 2:MCP79411-I/SN 實(shí)時(shí)時(shí)鐘
同樣,搜索整個(gè)零件編號(hào)也不會(huì)顯示任何內(nèi)容。查看數(shù)據(jù)表,MCP79410、MCP79411 和 MCP79412 有一個(gè)數(shù)據(jù)表。唯一的區(qū)別是設(shè)備內(nèi)部存儲(chǔ)中提供的“唯一 ID”類(lèi)型。因此我們可以嘗試搜索“MCP7941”。
我們?cè)俅潍@得一些驅(qū)動(dòng)程序結(jié)果和一些關(guān)于如何通過(guò)設(shè)備樹(shù)添加支持的文檔。
最終積分
有時(shí)不會(huì)明確支持確切的部分,但它可能在功能上與另一部分相同,在這種情況下,可以對(duì)兩者使用相同的驅(qū)動(dòng)程序。
如果該部分不受支持,則值得擁有一份最新的 Linux 內(nèi)核源代碼以進(jìn)行交叉引用。如果最近添加了支持,您可以將驅(qū)動(dòng)程序“反向移植”到您的內(nèi)核版本。
有時(shí),驅(qū)動(dòng)程序已經(jīng)編寫(xiě)完成,但尚未包含在官方內(nèi)核源代碼中。它可能已提交到郵件列表,您或許可以盡早試用。在任何情況下,“谷歌”都可以提供很大的幫助。
審核編輯:郭婷
-
Linux
+關(guān)注
關(guān)注
87文章
11342瀏覽量
210245 -
源代碼
+關(guān)注
關(guān)注
96文章
2946瀏覽量
66894
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論