在為您的定制電子設(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)核源代碼,那么如何檢查給定的硬件部件號是否受支持?
最好的方法是對您要查找的部件號進(jìn)行文本搜索。我將用幾個例子來說明這一點。
注意:在這些示例中,我們使用的是 kernel.org 的內(nèi)核版本 v5.0-rc1。搜索我們將使用“git grep”,這是一個非??焖俚拿钚泄ぞ撸糜谒阉?git 存儲庫的全部內(nèi)容。
示例 1:S25FL512SAGMFI011 閃存
您可能會嘗試的第一件事是搜索整個零件編號。
這沒什么好說的。下一步是在不區(qū)分大小寫的情況下進(jìn)行搜索。最好不區(qū)分大小寫搜索,因為 Linux 內(nèi)核更喜歡驅(qū)動程序名稱的小寫標(biāo)識符,但您可能會在大寫或小寫中找到線索。
不幸的是,這仍然沒有提出任何建議。接下來要嘗試的是從部件號中刪除一些尾隨字符,因為其中一些可能是指封裝、溫度范圍和其他不影響設(shè)備邏輯操作的內(nèi)容,并且不影響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)核源代碼以進(jìn)行交叉引用。如果最近添加了支持,您可以將驅(qū)動程序“反向移植”到您的內(nèi)核版本。
有時,驅(qū)動程序已經(jīng)編寫完成,但尚未包含在官方內(nèi)核源代碼中。它可能已提交到郵件列表,您或許可以盡早試用。在任何情況下,“谷歌”都可以提供很大的幫助。
審核編輯:郭婷
-
Linux
+關(guān)注
關(guān)注
87文章
11345瀏覽量
210392 -
源代碼
+關(guān)注
關(guān)注
96文章
2946瀏覽量
66955
發(fā)布評論請先 登錄
相關(guān)推薦
評論