如何在Kria SOM板卡上运行lwip echo server application

作者:Davis Zhang,AMD工程师;来源:AMD开发者社区

Vitis里有一些基于lwip的样板网络应用,比如lwip echo server。通常我们可以在vitis里基于开发板的平台生成lwip echo serverapplication,就可以直接在开发板上运行,并在host对开发板做ping测试。但是如果基于Kria SOM starter kits板卡生成lwip echo server application并生成“BOOT.BIN”,将“BOOT.BIN”更新到qspi flash之后启动,会发现lwip echo server application 无法link,ping测试也失败。

这是因为Kria SOM starter kits的基板上有ethernet PHY芯片,而PHY address pin和一些数据信号复用,这些管脚通过板上pullup/pulldown电阻来定义PHY address。为了让PHY芯片能实现预期的PHY address,我们需要对这些信号所对应的MIO的internal pullup/pulldown resistor做一些配置,然后触发PHY芯片的reset信号,让它配置PHY address。

lwip的样板网络应用里不包含基板上的芯片信息,所以PHY芯片相关的配置和reset操作需要在用户代码里来做。Kria starter kit的qspi flash里有image recovery tool,用来更新“BOOT.BIN”,Host通过ethernet exporer访问它。Image recovery tool的源码可以在github上找到,它的代码里包含有KV260、KR260和KD240的PHY init代码,对应的函数分别是,Xbir_KVEthInit、Xbir_KREthInit、Xbir_KDEthInit。

https://github.com/Xilinx/embeddedsw/blob/xilinx_v2023.2/lib/sw_apps/img_rcvry/src/xbir_sys.c#L309-L508

我们可以把这些代码移植到lwip echo server代码里完成PHY init,这些函数里包含有GEM选择和GEM clocking 配置代码,我们不需要这些,只保留MIO配置相关代码和reset代码。Fsbl里已经配置了GEM clock,lwip application里可以选择GEM。需要注意fsbl里根据vivado工程里的配置已经配置了一些MIO,Xbir_KxEthInit函数里对MIO的配置可能涉及与PHY芯片无关的一些MIO,这些MIO的配置不要和fsbl冲突。与PHY芯片先关的MIO配置保持与Xbir_KxEthInit里的一致。附件里有分别为KR260和KD240移植好的“main.c”文件,可以替换到lwip echo server application里测试。

最新文章

最新文章