U-Boot上的以太网驱动程序API

时间:2013-10-16 02:40:03

标签: api sockets ethernet u-boot

我的问题在于以太网/套接字调用。在Linux中,我们有sendto和recvfrom调用来从通过以太网连接的外部设备发送和接收数据。现在我在U-Boot上执行我的代码作为一个独立的应用程序。我需要替换这些应该独立于OS的套接字调用。

U-Boot中是否提供了API /驱动程序,以便我可以直接使用它们并将数据传输到目标板和从目标板传输数据?如果是这样我应该在哪里检查处理器特定的驱动程序?我无法找到它。 我使用的主板是基于MPC8548E处理器的定制主板。

2 个答案:

答案 0 :(得分:0)

U-Boot独立API支持原始以太网数据包eth_send()和eth_receive()。但是,这比Linux套接字要少得多。

UDP协议,例如DHCP和TFTP在U-Boot命令中实现(尽管这些协议不在独立API中导出)。如果您需要更多功能,例如TCP,你可能需要一个操作系统,即Linux,而不是U-Boot。

理想情况下,现有命令可以满足您的需求。例如,您可以在通过命令行调用的独立应用程序中汇编文件内容,然后使用现有命令tftpboot传输该文件。或者您可以在u-boot内部而不是独立应用程序中实现自定义命令;您可以从现有协议的实现中复制/粘贴。

如果您的确采用独立应用程序,请参阅examples/api/demo.c。这显示了独立API的能力和局限性。如果你有自定义u-boot的源代码,demo.bin将在build输出中(确保你的board config.h中有#define CONFIG_API),它可能只是在你的主板上加载/运行而没有进一步的MODS。对于eth接口,它将使用ethact,并将发送一个填充00的数据包。特定于板的驱动程序已经在你的u-boot中。

答案 1 :(得分:0)

  

U-Boot独立API支持原始以太网数据包   eth_send()和eth_receive()。   但是,这比Linux套接字要少得多。

这一点对我更感兴趣。据我所知,我们可以从U-Boot导出函数eth_send()和eth_receive()函数,并在独立的应用程序中使用它们。对? 功能较少,你的意思是什么?通过使用Linux套接字,我传输了原始以太网帧。这是按照以下链接完成的:  http://aschauf.landshut.org/fh/linux/udp_vs_raw/ch01s03.html 我不能使用eth_send和eth_receive函数在这里实现类似的功能吗? 我做的独立应用程序是: 创建一个包含60个元素的unsigned char缓冲区,并尝试通过调用eth_send()来发送它们,如下所示: ethSendVar = eth_send(txFrame,60); 这是正确的方法吗?当我这样做时,电路板在我在代码中调用eth_send()的地方自动重置。

  

理想情况下,现有命令可以满足您的需求。   例如,您可以在独立应用程序中组合文件内容   通过命令行调用,   然后使用现有命令tftpboot传输文件。   或者你可以在里面实现自定义命令   u-boot而不是独立的应用程序;你可以   从现有协议的实现中复制/粘贴。

现在实际上没有兴趣。我应该只能从应用程序发送和接收。