在為您的定制電子設計挑選零件時,可以提前檢查 Linux 驅動程序支持。為不受支持的硬件編寫新的驅動程序非常耗時,會帶來風險,并增加項目的復雜性。
最好選擇支持的硬件。我們如何首先檢查硬件是否受支持?首先,您需要找到您將使用的Linux的確切版本。
獲得正確的 Linux 內核
您可能使用的是 kernel.org 的內核版本,但更有可能使用的是 SOC 供應商提供的任何定制內核。例如,如果您使用的是帶有BSP imx_4.9.88_2.0.0_ga的恩智浦 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 內核源代碼的副本進行交叉引用。如果最近添加了支持,則可以將驅動程序“向后移植”到內核版本。
有時驅動程序已經編寫,但尚未包含在官方內核源代碼中。它可能已提交到郵件列表,您可以盡早試用。在所有情況下,“谷歌”都可以是一個很大的幫助。
審核編輯:郭婷
-
soc
+關注
關注
38文章
4193瀏覽量
218715 -
Linux
+關注
關注
87文章
11335瀏覽量
210068
發布評論請先 登錄
相關推薦
評論