LWIP裸机跑网口一段时间后死机了

项目场景:

ZYNQ 7010运行LWIP网口,得到数据,进行处理


问题描述:

lwip网口发送数据到主机处理之后,待机运行一段时间(几分钟不等,有时候立即死机,有时候隔一会儿),程序死机,中断也不能执行。上电未发送网口数据,程序待机运行,并不会死机。


原因分析:

一开始发送的数据为处理某段内存,涉及到操作PL端的某个寄存器,怀疑此寄存器有问题,后单独设立例程验证,此寄存器没有问题,随后查询其他地址问题,无果,是否由于其他外部引起?为何需要每次通讯一次才会死机?后来,删除DSP的PwmCtrl_v1_0文件夹,程序运行正常,怀疑PwmCtrl有问题,细想之下,没有道理


解决方案:

重新梳理程序框架流程,网口数据传输过来之后,涉及到内存操作,以及操作PL端寄存器,莫非是DDR地址不对?查看官方文档
在这里插入图片描述
程序中,DDR地址没有问题,流程继续往下走,想起来在系统上电初始化时,程序连接了一些数据表,数据表是采用固定地址,刚好与DDR段的地址有部分重合,查看lscript.ld文件,
在这里插入图片描述

而我速度表中的地址刚好在此应用程序地址范围内,sdram地址与应用程序自动分配的地址重叠使用,导致系统出错,扑街了,怪不得会执行一下数据处理(涉及一部分缓存操作),之后就会死机。
解决办法是修改lscript.ld文件,adram地址自行使用定义为50M,那么就是从0x1000000x33FFFFF,修改起始地址为0x3400000,修改ddr大小从0x1FF00000变为0x1CC00001,数据表的地址为0x1000000x33FFFFF之间的地址,避开重叠使用即可。
在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值