我是ADSP新手,自己参考ADI的518开发板做了个板子,用的518F芯片,SDRAM:MT48LC32M16A2P,flash用的是29LV320TE-90PFTN,共计4MB的容量,但我只用了AMS0-2来连FLASH,就是用了3MB的空间,AMS3做外部器件的扩展了。硬件调试显示flash是正常的,我对它也可以做整个芯片的擦除、读写,读写的数据也对。我用的是ADI的仿真器,怀疑是仿真器问题的时候更换了另一个,也是不能烧写。
参考了论坛上得帖子和发布的视频,先设置生成LDR文件,在OPTION里也选了flash,bin格式,16位,我准备烧的程序没有用到SDRAM,只是对GPIO进行操作,所以没有加载init_code。然后生成了ldr的文件。
由于flash只使用AMS0-2,所以我修改了518例程里面的flash driver程序,将sector改为48,也修改了器件的code,用VDSP的烧写程序时,导入flash drive后可以正确读取器件CODE,并且sector map也对。然后在programming选项卡里选erase all,格式bin,点program后,flash进行擦除,然后烧写进度条有反应,但是很快就断了,显示error: could not write file,load wil lnot complete。如图
我自己分析可能原因:
1. 仿真器问题,换了一个新的仿真器试了也不能烧。仿真器型号一样。
2. flash自己的问题,但是我用仿真器对flash进行读写的时候没有问题,数据也对。我对整个芯片进行了擦拭,然后交替写入0x5555,0xaaaa,再把数据读回来,也显示正确。从VDSP的memory里看也是对的。
3. driver的问题,修改后的driver导入显示成功。如图。
4.设计问题,flash用的AMS0-2的空间,ADI自己的板子上是4个bank全用了,而且用的flash的是bottom boot的。我用的flash是top boot型的,只用了三个bank,是不是因为boot的block地址在AMS3空间,而不能烧写?
5. SDRAM的初始化代码,论坛里帖子说需要对init code,但是我烧写的程序没有用到SDRAM啊,是不是不需要烧写,另外烧写的话,有没有代码可以借鉴一下啊,我对init code不太了解,论坛说在518的文件夹下有源码,我看了不知道怎么使用,请andy或者高手们指教。