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