K60和K64的ENET模块的差异

2020-02-19 21:02发布

本帖最后由 FSL_FSL_chao 于 2015-2-12 15:01 编辑

最近,在 帮一个客户把他购买的Segger公司的embOS从K60移植到K64上。就在移植的过程中,发现在K60上能正常工作的ENET驱动程序到K64上却不能工作。然而,FSL官方的驱动程序(KSDK1.1)既能在K60上运行,也能在K64上运行,我们也没有看到专门的文档说明K60和K64的同种外设模块之间的差异。那么,究竟是什么原因导致embOS的ENET驱动程序在K64上不能正常运行呢?
经过对程序进行跟踪调试,并且反复比较embOS的驱动程序和FSL官方的驱动程序,以及逐字逐句地研究数据手册,终于发现:原来K64的ENET模块并非完全照搬K60的,而是缩减了一些功能,具体的有两点差异,说明如下:
1.        K60的ENET模块既支持小端模式(little endian),也支持大端模式(big endian),它可以通过寄存器ENET_ECR中的DBSWP位来进行设置;
5.jpg (216.98 KB, 下载次数: 0) 下载附件 2015-2-12 14:52 上传
        K64发送缓冲区的起始地址描述
问题小结:embOS的驱动程序(准确地说应该是IP协议栈,因为发送数据缓冲区的指针是从上层传递给ENET驱动程序的)在设计的时候可能忽略了这个要求,所以它虽然在K60上能正常工作,但是一到“较真”的K64上就不行了。

by Zhiqiang Fu(b17589@freescale.com)---IMM FAE China
K60和K64的ENET模块的差异.pdf (405.45 KB, 下载次数: 3) 2015-2-12 14:57 上传 点击文件名下载附件

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。