本文主要是介绍LWIP开启ARP之后进入硬件错误中断,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
遇到个很奇怪的问题,如下图只要开启ARP之后,就会进入硬件错误中断,关掉就好了。
而无法开启ARP,就不能ping 通,所以必须要解决这个问题。
最终debug发现死在memcpy函数位置
这样原因就很好分析了,
共4个拷贝操作,其中2个目标地址都不是4字节对齐的,猜测是该原因导致的。
进一步定位和尝试后,发现是H7内核的MPU配置有问题,改成TEX=1,C=0,B=0之后就正常了。
MPU_InitStruct.BaseAddress = 0x30004000;MPU_InitStruct.Size = MPU_REGION_SIZE_16KB;MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1;MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE;MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
这篇关于LWIP开启ARP之后进入硬件错误中断的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!