FLASH为何只能烧写到)X80000?
时间:10-02
整理:3721RD
点击:
FLASH烧写只能到0X80000?
我司做了块DSP块用MX29LV320B,DM642应该可以访问到1M的空间,但我用FlashBoot来烧写的话总只能烧到OX8000(512K)的空间,且烧写后读出来的数据0X8000与0X0地址的数据一样,这也可以说明A22地址线没有起作用.我的电路接法是:
(DPS)EMIF---FLASH
A3------------DQ15/A_1
A4-A22--------A0-A18
A19,A20接到CPLD
采用8位模式
且不说CPLD来分页,但DSP为什么不能操作1M的空间呢?请有过经验或遇到过此问题的人一来讨论一下!!
首先检查一下FLASH的硬件连接啦,例如很多FLASH都有保护引脚,那个东西如果设置不当,你怎么都不能写进受保护的空间。
另外,你写的时候有没刷一下FLASH的相应的BLOCKs?如果不刷,有可能出问题的。
最后,flashboot没用过,不知道有没地址限制。我的FLASH都是自己写的。
(问问:用CPLD来分页?为何不用GPIO)
我是跟据开发板来做的,但也做了改进是IO口来分页,但是那样去掉CPLD后,以EMIFA BOOT模式上电CCS不能进入,如果改成从RESERVED模式启动,进入CCS后对FLASH的操作就会死机.
现在我感觉是CPLD的程序有点问题.还有待跟进,不过我想问一下为什么我去掉CPLD把相应的控制引脚接到DSP上却启动不了呢?
能说说unsigned int * LedReg = (unsigned int *) 0x27FF;的意思吗?
很可能就是CPLD分页失败了,问什么不考虑CPLD分页的问题呢!
CPLD实现分页,你保证分页控制的寄存器位置正确?这个位置与你EMiF做的映射是相关的,需要GEL文件来匹配。
既然你用FlashBurn工具证明了0x80000与0x0000的值一样,很显然就是没有分页了!
现在这个问题已经解决,但是操作比较麻烦.开发板商给的CPLD代码本身有问题致使没有分页,这
个我已改好,但FLASHBURN一次只能烧写到0X80000,这个代码我还没找到要更改的地方.
我的做法是:先烧前512K的数据,然后硬件改A22为高手动分页烧后512K的数据,(因我的.HEX小
于1M)最后还原A22,上电电路工作正常.