文档章节

ENET模块调试笔记

huhu_huhu
 huhu_huhu
发布于 2016/03/17 15:21
字数 827
阅读 52
收藏 0

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

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的使用,

image

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

后 记

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

© 著作权归作者所有

共有 人打赏支持
huhu_huhu
粉丝 0
博文 3
码字总数 1084
作品 0
程序员
使用OpenCv+ENet实现语义分割

使用OpenCv+ENet实现语义分割 转载自 https://www.pyimagesearch.com/2018/09/03/semantic-segmentation-with-opencv-and-deep-learning/ 介绍 在本教程中,您将学习如何使用OpenCV,深度学习...

机智的小火箭
09/26
0
0
BGP泄露和加密货币的那些事儿

  在过去的几个小时内,十几个新闻报道已经破坏了攻击者如何利用BGP漏洞来企图(也许是管理)窃取加密货币。       什么是BGP?   互联网由链路组成。比如我们的DNS域名解析1.1.1.1...

FreeBuf
05/02
0
0
113-给 udp 增加可靠性(一)

先说一些题外话。 第 112 篇到这一篇,跨越了半年多时间。 并是说真的忙到了没时间写,中间因为毕业,找工作忙活了一阵子,导致写作被中断,后来就不了了之了~重新拾起笔需要很大有勇气。(因...

q1007729991
01/27
0
0
最近进坑了DCS-3950双层交换机链路聚合配置整理

交换机A上1-2端口对应交换机B上3-4端口 PC1链接交换机A上23端口 PC2链接交换机B上24端口 命令如下: DCS-3950-28C>en DCS-3950-28C#con DCS-3950-28C(config)#hostname switchA switchA(con...

SST安陌离
06/26
0
0
CVPR 2018 | 牛津大学&Emotech首次严谨评估语义分割模型对对抗攻击的鲁棒性

  选自arXiv   作者:Anurag Arnab等   机器之心编译   参与:张倩、路雪      牛津大学&Emotech 实验室合作的一篇论文首次严谨评估了义分割模型对对抗攻击的鲁棒性。该研究分析...

机器之心
06/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

创建第一个react项目

sudo npm i -g create-react-app@1.5.2 create-react-app react-app cd react-apprm -rf package-lock.jsonrm -rf node_modules #主要是为了避免报错npm installnpm start......

lilugirl
49分钟前
1
0
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN)

Generative Adversarial Network 是深度学习中非常有趣的一种方法。GAN最早源自Ian Goodfellow的这篇论文。LeCun对GAN给出了极高的评价: “There are many interesting recent development...

naughty
今天
0
0
搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
今天
2
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
3
0
命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部