不久,我将致力于基于ARM的处理器上的裸机(无OS)功能的以太网实现。我对Linux设备驱动程序一书中的以太网驱动程序模型有些熟悉,但是我想知道是否有参考来为使用自定义软件堆栈运行的SoC实现以太网驱动程序提供参考。

是否有用于ARM体系结构处理器的参考实现,或者是否有关于如何在ARM处理器上实现以太网驱动程序的指南?

评论

您打算使用哪种类型的SoC?我怀疑如果他们支持网络,许多人将提供参考实现。

Atmel,TI等。它将是ARM,但不确定哪个供应商。您有什么建议吗?

如果没有更多关于您的用例的上下文,很难说。请查看[hardware]标签wiki,以获取有关如何提出硬件选择问题的指南,或者查看“为电池供电的数据收集项目选择微控制器”。但是,如果您需要一些指导,请随时提出其他问题,只要包含您的要求!

通常,最好解释一下为什么要做某件事作为问题的一部分,而不是只问过程结束时遇到的问题。这样,也许有人可以提出另一种方法(如果您在推理中做出了不正确的假设)。

请注意,微控制器类的“嵌入式”网络解决方案不一定仍比运行在商品芯片上的小型“完整操作系统”便宜。两者都会很痛苦-要为微小的系统配置所需的服务,尤其是在原始需求发生中途更改或行为不符合广告要求的情况下,同时整个操作系统方法可能需要很长时间才能完成尽力而为,只剩下所需的组件或服务。

#1 楼

当您要求裸机时,尤其是在您不指定体系结构时,很难说出您要查找的内容。对于嵌入式应用程序,使用轻量级操作系统(取决于(您将其视为操作系统),请查看与您感兴趣的设备类似的设备的mbed源(假定使用ARM Cortex-M微控制器)。

最新的mbed网络套接字文档是尽管这里没有描述特定于设备的HAL实现(这些可能是设备制造商提供的)。

与裸机足够接近,可以直接使用。如果不这样做,设备供应商几乎肯定会在他们自己的框架内提供一个低级别的示例实现。

评论


如果不这样做,设备供应商几乎肯定会在他们自己的框架内提供一个低层的示例实现。对于许多中国制造的SBC,例如基于Allwinner芯片的SBC,如果它们为您提供有效的Linux二进制文件,您将很幸运。

–沮丧Daniel
17年2月1日于16:10

@DepressedDaniel-OP似乎在询问他计划将其构建到设备中的SoC,而不是基于电话CPU的预构建SBC。他还要求在选择供应商之前去哪里找...。

– Sean Houlihane
17年2月1日在16:14

肖恩看起来像一个很好的示例实现。我将此响应标记为正确答案。另外,我打算看一些类似freeRTOS的东西,但是我还没有开始看代码。目前,我也对Wiki,在线文档或书籍感兴趣。在跳入代码之前,我可以阅读一些内容。您对此也有很好的建议吗?

– netskink
17年2月1日在16:24



@netskink对不起,驱动程序的实现不是我的领域。添加了指向用户文档的链接,我认为这会有所帮助。

– Sean Houlihane
17年2月1日在16:34

谢谢肖恩。您的回复对我有很大帮助。我很感激。

– netskink
17年2月2日在16:43

#2 楼

如果您确定要使用ARM,那么可以查看Keil的ARM以太网驱动程序。这是非常有希望的。


RL-TCPnet包含几个以太网网络驱动程序。这些文件位于\ Keil \ ARM \ RL \ TCPnet \ Drivers目录中:


LAN91C111.C-用于Phytec phyCore LPC229x评估中使用的SMSC LAN91C111以太网控制器
EMAC_SAM7X.C-用于Atmel AT91SAM7X-EK评估板上的Atmel AT91SAM7X片上EMAC以太网控制器。
LPC23_EMAC.c-用于NXP(由飞利浦创建),Keil MCB2300评估板上使用的LPC2368和LPC2378片上EMAC以太网控制器。
LPC24_EMAC.c -用于在Keil MCB2400评估板上使用的NXP(由飞利浦创建)LPC2468和LPC2478片上EMAC以太网控制器。
LM3S_EMAC.c-用于Luminary Micro LM3S6962和LM3S8962片上EMAC以太网在Luminary Micro EK-LM3S6965和EK-LM3S8962评估板上使用的控制器。



您可以看到还有Ethern具有不同制造商的不同芯片的各种评估板的驱动程序示例。像Atmel,NXP或ST Microelectonics。