遇到个很奇怪的问题,如下图只要开启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;