首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

XEP100 里怎样将一个数组定义到D_Flash某个地址

XEP100 里怎样将一个数组定义到D_Flash某个地址

本帖最后由 wjckzdh 于 2011-5-19 10:36 编辑

我想将unsigned int a[10]这样一个数组定义到D_Flash(0x100000~0x107FFF)的某个地址比如0x100000(不属于EEE部分),现在写D_Flash已经可以,如果a[10]能直接定在那,那么程序里就可以直接引用a了。试了unsigned int a[10]@0x100000不行。谢谢大家!
以前的DZ60等Freescale等都是可以直接定义到Flash的某个地址的。

如果要用时,再导到RAM里,那样麻烦,固定数据表(并不是固化,偶尔要通过上位机修改)比较多,用一张导一张太耗时,一次导入全部,太耗内存。

经调试发现,我定义unsigned int a[10]@0x00800,查看数据,真正定义到全局地址0x13F800(也就是BUF_RAM)去了,很奇怪。
const unsigned int a[10]@(地址空间);就可以了
不过XEP100的EEPROM空间的线性地址在0x100000~0x13_ffff,片上只有4K的空间,其余需外部扩展。
另外,在codewarrior中应该使用它的分页面地址进行定义,即你要定义到0x100000应该写成
const unsigned int a[10]@(0x000800)
楼上的,你好,我也试过你那样的定义,唯一的不同是少了const限定,但那样试了还是不对.
另外,我直接读D_Flash的0x100000,通过设置EPage=0x00,读地址0x0800的内容,验证确实读的就是0x100000的内容.
现在就是想把变量直接定义到D_Flash的一个地址,怎么试都不行. prm文件里的配置也试过.
本帖最后由 wjckzdh 于 2011-5-20 08:41 编辑

最好是编译器使程序能够自动切换EPAGE。
不知道怎么定义,跟大家学习。
搂主有没进展阿?
看看这个,应该有启发的:
http://www.freescaleic.org/bbs/article_265_119107.html
飞思卡尔8/16/32位多功能开发板/下载器:
网站:http://www.lqist.cn,
淘宝店:http://shop36265907.taobao.com
我也有同样的问题:有大量的数据表想放到D_flash中,不知道怎么放入,另外放入了如何频繁读取?有个简单的方法能实现但是感觉不怎么样:在RAM中再定义相同的数据表,初始化的时候从D_flash中读取并赋值给RAM的表,调用的时候用RAM的数据。
   楼主有没有解决问题啊?
返回列表