ENET模块调试笔记

硬件平台: 公司智能单元电压板

ARM: MK60FX512VMD12

PHY(以太网物理收发器): KSZ8041NLI

测试内容: 电压板以太网模块通信

参考文献:《ARM Cortex-M4自学笔记--基于Kinettis K60》

《TCP/IP详解 卷1:协议》

主要调用的函数:

1. enet_init()函数;

2. enet_macSendData()函数;

具体的函数实现功能不再赘述,详情请查看《ARM Cortex-M4自学笔记--基于Kinettis K60》 P328。

实现功能:

通过定时器定时发送数据,实现终端利用MAC层与计算机进行数据通信

/*********************************************************************************************************************************************************************************************************************************/

调试过程中遇到的问题记录:

(1) 我是在新建的.c和.h文件编程函数来调用driver文件夹下的enet驱动程序,编译过程中,编译器提示驱动程序enet.h中,uin8,uint32, uint16没有定义,编译一直没通过,向大神请教,原来是默认的底层驱动函数头文件里没有包含common.h,在开始的部位添加#include<common.h>,编译终于顺利通过。

(2) 编译通过之后,运行又出了问题,通过串口查看程序一直在打印

default_isr&#160; VECTOR_093

default_isr&#160; VECTOR_094

&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 由于以前在调试程序的过程中遇到过类似的状况,当时打印的是 default_isr&#160; VECTOR_3 后来查明的原因是硬件错误,所以这次首先考虑是不是哪一个期存器配置有错误或者是数组太大越界,或者是K60内存不够,内存不够的状况之前没遇到过,心里就想把这个因素放到最后考虑,然后就打断点单步调试,发现是enet_init()函数中存在问题。又把数组都核实了一遍,还是没定位到真正的错误点。谷歌里也没搜到VECTOR_093到底是什么错误,实在没办法只能硬着头皮再找大神请教。

&#160;&#160;&#160;&#160;&#160;&#160;&#160; 我在编译器里搜索时,输入的是default_isr&#160; VECTOR_093,结果硬是查不到注释说明,明哥直接搜的是default_isr很快就在voctors.h搜到了注释位置,一看原来是enet发送、接受以及错误中断错误,在反过去查代码发现,默认的底层驱动函数enet.c里这些中断功能都是打开的,但是在实际中我并没有调用这些中断函数。enet_setIsr(E_EnetIsr type, ENET_ISR_CALLBACK isr_func)回调函数指针没有绑定。对此理解不是很深,专门做实验来验证一下。加上这个绑定之后,在调用中断函数,则没有报错!

&#160;&#160;&#160;&#160;&#160; 还有一个就是wireshark的使用,

ENET模块调试笔记_第1张图片

/*********************************************************************************************************************************************************************************************************************************/

后 记

   大神明哥就要离我这个嵌软菜鸟而去,师傅领进门,修行在个人。在这里衷心祝福明哥前程似锦,永远大牛!&#160; 谢谢在我职场的刚开始阶段就能遇见这么好的大牛,谢谢大牛每一次不厌其烦的指导,谢谢大牛对我们的谆谆教诲!真的舍不得明哥。但路终究是要自己走的,没有了明哥在前面为我们遮风挡雨,我只能愤然而前行,以期有朝一日能够对的起师傅。

你可能感兴趣的:(ENET模块调试笔记)