问:现象描述:仿真器直接连接开发板,编译链接下载仿真程序都没有问题,运行正常。生成ldr文件烧写到flash之后无法正常启动。生成和烧写ldr的方法都没有问题,已经回读验证过,板子上的启动管脚状态正常,可能是什么原因?
答:一个比较常见的原因是有部分代码和数据需要放到DDR上面,而在用户代码启动之前DDR并没有被初始化。
验证方法:建立测试程序,只用到内部sram,不使用外部memory,重新生成ldr文件测试是否能正确启动。如果可以正确启动的话基本可以确定是DDR问题。
解释:在连接仿真器时直接运行程序,CCES会使用默认的xml文件用来初始化PLL和外部memory,如果生成ldr文件从flash启动,则需要自己生成init code用来在功能代码启动之前做初始化工作。添加位置如下: