给Apollo3 Plus开发将数据加载到SPI Flash上出问题了
折腾好几天了,最终还是没有成功完成Apollo3 Plus开发板将用In-Direct的方法将数据加载到SPI Flash上。
准备暂时搁置一下,下一步调查用Uart->MCU->SPI FLash是否可行。
将这几天遇见的问题整理一下:
1.Segger推荐的Open Flash的In-direct方法的开发环境是用Segger Embeded Studio进行开发。
- 按照官网步骤进行开发,前期一切顺利,但是进入Erase Sector操作的时候,系统会莫名其妙出现Bus Error。这些代码我在Keil环境下调试都是成果的,在Segger Embeded Studio就会出问题,Debug也找不到问题所在。会突然进行非法的地址访问。
2.用Keil进行开发
- 我的代码之前一直是用Keil开发的,在Keil中Debug没有问题。
- 但是作为JFlash的External Dll加载的时候,JFlash总是报告找不到FLashDevice这个Struct. FLashDevice是放在Section DevSrc下,通过Mapping文件确认没有问题。
- 安装Segger为Embeded Studio的Placement.xml(内存管理设置)的方法,我修改Keil的Memory 管理设置,两个开发环境的Memory 管理的设置不同,调整国过几次,包括将DevSrc放到最后等,还是报告找不到Struct FLashDevice.
目前只有先搁置了,后面两天看看UART可不可以。
晚上不甘心,又试了一下将Keil的.o混到Segger Studio编译了看是否能成功,发现这两套编译环境混起来基本上各种问题层出不穷。也只能放弃了。不过知道为什么之前Segger Studio的环境下会出问题了,主要是一些中断相关的代码是汇编的,代码会根据编译器选择不同的汇编代码。最后乱套了。