C6414上移植LwIP

本文介绍了在C6414芯片上移植LwIP协议栈和DM9000网络驱动的过程,涉及工程配置、代码修改、硬件问题排查。在移植过程中,遇到CMD信号触发错误、DM9000芯片寄存器差异、数据丢失等问题,逐一解决。最终发现栈空间不足导致的复位问题,增大栈空间后系统运行稳定。
摘要由CSDN通过智能技术生成

在新研NXX板上使用了若干片C6414,其中有两片用EMIFB接口连接DM9000芯片扩展出网口,上层采用LwIP协议栈。因此需要移植LwIP协议栈和DM9000的驱动。手头有老板上验证过的代码,但是在CCS3.3环境下开发。

采用的开发环境仍然是CCS5.4,需要做的主要工作有:
1. 建立基础工程,并将整个Lwip源码拷贝到工程目录,然后删除一些不需要的文件,包括IPV6和SLIP等
2. 在工程包含路径中添加Lwip目录下的include和include/ipv4
3. 将cc.h和main.c中包含的工程名相关cfg.h修改名称
4. 由于更改了general.h的bool类型定义,将true和false修改为TRUE和FALSE
5. NPU上的DM9000连接CMD的是A15,而非原来的A2,代码中对应做修改
6. NPU上的DM9000的INT连接到GP7,而非原来的GP5,代码中对应做修改

做完这些修改后编译通过,开始测试。测试过程遇到了许多的问题。

首先读VID和PID,结果读出值为全1。分析代码没有发现问题,于是祭出示波器。测量CMD、CS、IOR等信号,发现CS和IOR正常,但CMD没有信号。从代码中找与CMD相关的代码,最终发现CMD是通过一个地址触发的,地址值计算错误。更正后PID和VID都读取正常。

然后插上网线用底层驱动发送一个自组的ARP包,在与之直连的PC机上用WireShark抓包,结果抓不到。发现网口上的灯不亮,说明底层硬件协商有问题。仔细读手册发现本板上采用的DM9000芯片升级为DM9000C,寄存器与原DM9000有差异,如ISR寄存器的bit7是IO模式位,代码中为bit6,对照文档做了一些修改。同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值