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

TMS570LC4357上面有关网口EMAC寄存器的疑问

Other Parts Discussed in Thread:DP83630, TMS570LC4357

板子是launchPadXL2,IDE是CCS10.0,LC4357的网口调试了好多天了,没任何数据发出来,目前有个关于EMAC Module Registers寄存器组的疑问,主要如下:

    EMAC Modules Register寄存器组的起始地址是0xFCF78000,在这个寄存器组里面,地址空间较为明显的分成了三个小组,分别是地址偏移量为0x000—-0x1EC的一组,地址偏移量为0x200—0x28C的第二组,0x500–0x67C的第三组,进入调试模式后,发现第一组和第二组的寄存器在CCS的变量窗口中都能显示当前值,而第三组显示的是存储器映射被阻止了对寄存器的读操作,截图如下

能正常显示出当前值的寄存器:

  

CCS不能读取当前值的寄存器如下:

可以看到,在地址偏移量为0x400以上的寄存器地址空间的当前值都能看到,在程序里也能对这些寄存器进行配置,配置后的值都观察到了,而从地址偏移量0x400以后的寄存器地址空间,都被阻止了对寄存器的读操作,至于程序里面对这个范围里面的寄存器进行配置的写操作是不是也被阻止了,就无从知晓

现在网口这块一直没有跑通,目前比较怀疑是不是就是这些高位的寄存器在配置过程中的读写操作被某种保护机制给阻止了,如果是的话,我该怎么操作呢,因为我也看了另外的一些内部寄存器,似乎没有做这种保护的限制措施,就看TI这边工程师能不能帮忙看看具体会是哪里的问题,非常感谢

Susan Yang:

请问您是否有尝试过官方的例程呢?是否可以读该寄存器的值?(抱歉,我现在没有该开发板,所以不太方便为您测试)
或许您可以先尝试一下下面帖子的方法:

e2e.ti.com/…/924829

,

user18914063:

哦,好像也不能观察高位寄存器组的值,刚用了个官方的webserver的例程,跑的好好的,也是无法观察

,

user18914063:

我现在在自己独立的写LC4357的网口代码,从底层的寄存器配置开始做起,目前发不出任何数据出来,PHY管理接口那边没问题,配置都成功了的,DP83630能配置成功,能进Link中断,Link指示灯能亮。但为啥那些高位寄存器组会无法读操作呢,怎么知道是否正确的写入了数据?

,

Susan Yang:

e2e.ti.com/…/709196

应该是gel文件的问题

另外建议您将该问题发至英文E2E,会有相关的专家来支持(我这边不太好测试,抱歉):

e2e.ti.com/…/312

,

user18914063:

经过两天的奋斗,LC4357总算成功的向路由器发出DHCP Discover数据包了,原来问题主要出在MCU字节端序上。之前知道LC4357是大端序器件,在网口的EMC控制器里面,收发数据需要知道数据缓冲区首地址,这个地址以指针的形式存入的,我直接对缓冲区进行取址操作,一直不能发数据出来,各种尝试之后,偶然的修改了下取到的地址的端序,然后就发出数据了,具体如下:

                              假如数据的物理地址是0xFC520102,则实际应该给的地址是0x020152FC  

不仅这个地址的字节端序要全部重新排列,就连LC4357数据手册中关于EMAC数据收发的描述符的一些参数也必须重新排列字节端序,比如:

 

  图是TMS570LC4357技术参考手册第1819页的插图,

图中第二个双字word2中,高16位是指向的数据缓冲区的地址偏移,一般可配置为0即可,这个不重要;低16位,是需要发送的数据缓冲区的长度,我按照这个格式来配置的发送缓冲区描述符,也是一直有问题,然后我尝试将高16位和低16位对换,变成高16位是数据缓冲区长度,低16位变成缓冲区地址偏移,word3中也必须按端序重新排列,word1就是最上面提到的取地址的问题,这三组控制参数都配置对了才能发出数据。word0如果只发送单个数据帧的话,配置为零就可以了。

综上,如果按照上面这幅图来配置描述符参数,显得非常不方便,特别是要发送大量数据的时候,可能会因为涉及到字节端序的转换而耽误时间,word3中,假如我要发送100个字节数据,则实际这个参数应该是100*65536,然后还要将高8位和低8位对调,太不方便了。

所以,是否有端序转换更为快捷的方法,或者TMS570LC4357是否支持小端序,支持的话,该怎么对MCU进行配置呢?希望TI工程师能帮忙解决,非常感谢。

,

user18914063:

另外在顺便提一句,在本帖子的最上面的提问中,关于物理地址偏移量高于0x400之后的寄存器,在CCS中都不能观察到其内部数据的问题,目前没有解决,但没有影响网口程序,所以我猜是不是这个地址段范围的寄存器本来就是这样设置的?能发出数据,那肯定对这些地址的写操作都是成功了的。

赞(0)
未经允许不得转载:TI中文支持网 » TMS570LC4357上面有关网口EMAC寄存器的疑问
分享到: 更多 (0)