嵌入式技术
在为定制电子设计挑选零件时,可以预先检查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内核源代码的副本以进行交叉引用。如果最近添加了支持,你可以将驱动程序“后退”到内核版本。
有时驱动程序已经编写但尚未包含在官方内核源代码中。它可能已经提交到邮件列表,可以尽早尝试。在许多情况下,搜索引擎可以是一个很大的帮助。
来源:朗锐智科
全部0条评论
快来发表一下你的评论吧 !