在为您的定制电子设计挑选零件时,可以提前检查 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 内核源代码的副本进行交叉引用。如果最近添加了支持,则可以将驱动程序“向后移植”到内核版本。
有时驱动程序已经编写,但尚未包含在官方内核源代码中。它可能已提交到邮件列表,您可以尽早试用。在所有情况下,“谷歌”都可以是一个很大的帮助。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !