XEP100 里怎样将一个数组定义到D_Flash某个地址
- UID
- 124450
- 性别
- 男
|
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)去了,很奇怪。 |
|
|
|
|
|
- UID
- 832728
|
const unsigned int a[10]@(地址空间);就可以了
不过XEP100的EEPROM空间的线性地址在0x100000~0x13_ffff,片上只有4K的空间,其余需外部扩展。
另外,在codewarrior中应该使用它的分页面地址进行定义,即你要定义到0x100000应该写成
const unsigned int a[10]@(0x000800) |
|
|
|
|
|
- UID
- 124450
- 性别
- 男
|
楼上的,你好,我也试过你那样的定义,唯一的不同是少了const限定,但那样试了还是不对.
另外,我直接读D_Flash的0x100000,通过设置EPage=0x00,读地址0x0800的内容,验证确实读的就是0x100000的内容.
现在就是想把变量直接定义到D_Flash的一个地址,怎么试都不行. prm文件里的配置也试过. |
|
|
|
|
|
- UID
- 124450
- 性别
- 男
|
本帖最后由 wjckzdh 于 2011-5-20 08:41 编辑
最好是编译器使程序能够自动切换EPAGE。 |
|
|
|
|
|
- UID
- 815357
|
|
|
|
|
|
- UID
- 793634
- 性别
- 男
|
|
|
|
|
|
- UID
- 169050
- 性别
- 男
|
飞思卡尔8/16/32位多功能开发板/下载器:
网站:http://www.lqist.cn,
淘宝店:http://shop36265907.taobao.com |
|
|
|
|
|
- UID
- 793634
- 性别
- 男
|
我也有同样的问题:有大量的数据表想放到D_flash中,不知道怎么放入,另外放入了如何频繁读取?有个简单的方法能实现但是感觉不怎么样:在RAM中再定义相同的数据表,初始化的时候从D_flash中读取并赋值给RAM的表,调用的时候用RAM的数据。
楼主有没有解决问题啊? |
|
|
|
|
|