TI中文支持网
TI专业的中文技术问题搜集分享网站

求助:使用OMAPL138_StarterWare_1_10_04_01下的LWIP例程,IP地址无法对齐的问题

目前在对OMAP L138的LWIP网络通讯进行调试,参考的是OMAPL138_StarterWare_1_10_04_01。

使用的是DSP核。

调试中发现,IP地址总是不正确;经调查发现IP地址的起始字节没有按照4字节对齐。

经观察,pBuf指向的ethhdr中,MAC地址共有12字节,再加上2字节的type,共14字节。而ethhdr是4字节对齐的,因此导致后面的IP地址无法按照4字节对齐。

后来发现,ethhdr可以加上ETH_PAD_SIZE = 2字节来进行对齐处理。这样IP地址是对了,但是由于接口层驱动sitaraif.c中并未用到ETH_PAD_SIZ,因此又会引入其他问题。

TI有技术支持工程师说 这个StarterWare的LWIP他们用过,完全没有问题。

这个不知道是不是CCS设置的问题,该如何设置,请各位帮助一下。

另,通过修改pBuf.c里面的pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type)函数,进行对齐处理。有时候能够跟主机正常通讯,但是有时候确会出现数据checksum失败的情况。

pBuf.c文件是LWIP的文件,修改也是不太合适。

还是需要请教一下如何配置CCS,直接让程序正常运行。

另,将程序重新编译成ARM内核运行的程序后。

通过ARM运行,在通过MDIO读取PHY的寄存器时,在下面这句中,MDIO_USERACCESS0_GO一直没有被自动清零:

while(HWREG(baseAddr + MDIO_USERACCESS0) & MDIO_USERACCESS0_GO);

连接DSP核,在DSP核中运行一次原来的DSP ENET程序之后,ARM这边能够正常访问PHY。

但是又出现了一个新的问题,ARM的中断无法触发,导致网络访问还是无法正常进行。

另,在Starterware的使用说明中有这么一句话:

TMS470 Tool chain does not support packed attributes. This leads to issues when ethernet applications, built with TMS470 tool chain, are executed on the target. Hence, please do not use/connect ethernet in the demo. This issue is documented in the Known issues section of the release notes

是否就是说因为packed attributes的问题,编译出来的的DSP代码没有办法使用呢?

DSP核编译的时候有这个错误:

#1173-D attribute "__packed__" ignored


fa linag:

回复 Yong Wu1:

请问这个配置在哪里勾选的?

Yong Wu1:

回复 fa linag:

在CCS的项目配置里面

赞(0)
未经允许不得转载:TI中文支持网 » 求助:使用OMAPL138_StarterWare_1_10_04_01下的LWIP例程,IP地址无法对齐的问题
分享到: 更多 (0)