本人小白,只是记录一下这个过程,有问题随意指出
使用H743正点原子阿波罗开发板,配置ETH后,一段时间后程序跑飞。
由于现在已经修复好了,寄存器输出已经找不到了,不过论坛上有一个跟我一样的问题,先贴他的
https://club.rt-thread.org/ask/question/2d75824346c461f7.html
(不知道怎么回事,跑飞后,定位到这个代码看变量值,lenth的长度是0xFFFFFFFD,一直给了我错误的情报,让我觉得是获取lenth就出错了,后来最终才定位到
ETH的TX,RX,ADDR需要设置mpu为nocache模式,这点cubemx也指出了,是一直都知道的。
起初我用的env,keil这样子编译的,因此地址是直接设置。
但是后来因为某些问题,有用studio开了一个工程,地址的设定就得通过section的方式。需要配置link文件。
不明白这段为什么可用储存区域一个地址大小是32KB,明明下一个地址只隔了80字节
以下是代码部分,此部分是论坛抄的,因为看不懂这种代码,因此极有可能是这段出了问题
看了论坛上大部分的例程,都将这几个地址设置到0x300040000这个位置,也就是SRAM3。
但是CUBEMX默认的是0x30000000位置,并且说明了D2区域都行,不明白为什么要多此一举。所以我也用了0x30000000,最开始有过怀疑是不能用这个地址(因为大佬们都用的0x300040000)。
实在不会配置段地址那部分的代码,甚至直接复制别人的,最终显示出来都不对,而且studio还需要退出才更新,最终放弃,直接往section写地址,最终解决。
感觉没问题,,,但是确实会出问题,,想不明白