很快,我将致力于在基于 ARM 的处理器上实现裸机(无操作系统)功能的以太网实现。我对 Linux 设备驱动程序书中的以太网驱动程序模型有些熟悉,但我想知道是否有为使用自定义软件堆栈运行的 SoC 实现以太网驱动程序的参考。
是否有 ARM 架构处理器的参考实现,或者是否有关于如何在 ARM 处理器上实现以太网驱动程序的指导?
很快,我将致力于在基于 ARM 的处理器上实现裸机(无操作系统)功能的以太网实现。我对 Linux 设备驱动程序书中的以太网驱动程序模型有些熟悉,但我想知道是否有为使用自定义软件堆栈运行的 SoC 实现以太网驱动程序的参考。
是否有 ARM 架构处理器的参考实现,或者是否有关于如何在 ARM 处理器上实现以太网驱动程序的指导?
如果您确定使用 ARM,那么您可以查看Keil's Ethernet Drivers for ARM。这是很有希望的。
RL-TCPnet 包括几个以太网网络驱动程序。它们位于 \Keil\ARM\RL\TCPnet\Drivers 目录中:
- LAN91C111.C - 用于 Phytec phyCore LPC229x 评估板上使用的 SMSC LAN91C111 以太网控制器。
- EMAC_SAM7X.C - 用于 Atmel AT91SAM7X-EK 评估板上使用的 Atmel AT91SAM7X 片上 EMAC 以太网控制器。
- STR9_ENET.C - 用于 Keil MCBSTR9 评估板上使用的 ST STR912 片上 ENET 以太网控制器。
- LPC23_EMAC.c - 适用于在 Keil MCB2300 评估板上使用的 NXP(由飞利浦创立)LPC2368 和 LPC2378 片上 EMAC 以太网控制器。
- LPC24_EMAC.c - 适用于在 Keil MCB2400 评估板上使用的 NXP(由飞利浦创立)LPC2468 和 LPC2478 片上 EMAC 以太网控制器。
- LM3S_EMAC.c - 适用于 Luminary Micro EK-LM3S6965 和 EK-LM3S8962 评估板上使用的 Luminary Micro LM3S6962 和 LM3S8962 片上 EMAC 以太网控制器。
如您所见,对于具有来自不同制造商的不同芯片的各种评估板,有以太网驱动程序示例。像 Atmel、NXP 或 ST Microelectronics。
当您要求裸机时,很难说出您在寻找什么,特别是当您没有指定架构时......
对于嵌入式应用程序,使用轻量级操作系统(取决于您认为的操作系统),查看与您感兴趣的设备类似的设备的mbed源(假设是 ARM Cortex-M 微控制器)。
最新的 mbed网络套接字文档在这里,尽管它没有描述特定于设备的 HAL 实现(这些可能由设备制造商提供)。
这可能足够接近裸机直接使用。如果做不到这一点,设备供应商几乎肯定会在他们自己的框架内提供一个低级别的示例实现。