硬件平台: 公司智能单元电压板编程
ARM: MK60FX512VMD12数组
PHY(以太网物理收发器): KSZ8041NLI函数
测试内容: 电压板以太网模块通讯测试
参考文献:《ARM Cortex-M4自学笔记--基于Kinettis K60》ui
《TCP/IP详解 卷1:协议》spa
主要调用的函数:.net
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  VECTOR_093
default_isr  VECTOR_094
         因为之前在调试程序的过程当中遇到过相似的情况,当时打印的是 default_isr  VECTOR_3 后来查明的缘由是硬件错误,因此此次首先考虑是否是哪个期存器配置有错误或者是数组太大越界,或者是K60内存不够,内存不够的情况以前没遇到过,内心就想把这个因素放到最后考虑,而后就打断点单步调试,发现是enet_init()函数中存在问题。又把数组都核实了一遍,仍是没定位到真正的错误点。谷歌里也没搜到VECTOR_093究竟是什么错误,实在没办法只能硬着头皮再找大神请教。
        我在编译器里搜索时,输入的是default_isr  VECTOR_093,结果硬是查不到注释说明,明哥直接搜的是default_isr很快就在voctors.h搜到了注释位置,一看原来是enet发送、接受以及错误中断错误,在反过去查代码发现,默认的底层驱动函数enet.c里这些中断功能都是打开的,可是在实际中我并无调用这些中断函数。enet_setIsr(E_EnetIsr type, ENET_ISR_CALLBACK isr_func)回调函数指针没有绑定。对此理解不是很深,专门作实验来验证一下。加上这个绑定以后,在调用中断函数,则没有报错!
      还有一个就是wireshark的使用,
/*********************************************************************************************************************************************************************************************************************************/
后 记
大神明哥就要离我这个嵌软菜鸟而去,师傅领进门,修行在我的。在这里衷心祝福明哥前程似锦,永远大牛!  谢谢在我职场的刚开始阶段就能碰见这么好的大牛,谢谢大牛每一次不厌其烦的指导,谢谢大牛对咱们的谆谆教诲!真的舍不得明哥。但路终究是要本身走的,没有了明哥在前面为咱们遮风挡雨,我只能愤然而前行,以期有朝一日可以对的起师傅。