标题:
XEP100 里怎样将一个数组定义到D_Flash某个地址
[打印本页]
作者:
wjckzdh
时间:
2011-5-19 09:46
标题:
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)去了,很奇怪。
作者:
ljbachelor
时间:
2011-5-19 17:07
const unsigned int a[10]@(地址空间);就可以了
不过XEP100的EEPROM空间的线性地址在0x100000~0x13_ffff,片上只有4K的空间,其余需外部扩展。
另外,在codewarrior中应该使用它的分页面地址进行定义,即你要定义到0x100000应该写成
const unsigned int a[10]@(0x000800)
作者:
wjckzdh
时间:
2011-5-19 19:45
楼上的,你好,我也试过你那样的定义,唯一的不同是少了const限定,但那样试了还是不对.
另外,我直接读D_Flash的0x100000,通过设置EPage=0x00,读地址0x0800的内容,验证确实读的就是0x100000的内容.
现在就是想把变量直接定义到D_Flash的一个地址,怎么试都不行. prm文件里的配置也试过.
作者:
wjckzdh
时间:
2011-5-20 08:36
本帖最后由 wjckzdh 于 2011-5-20 08:41 编辑
最好是编译器使程序能够自动切换EPAGE。
作者:
lzh2010
时间:
2011-5-20 08:46
不知道怎么定义,跟大家学习。
作者:
dfmc
时间:
2011-7-6 15:16
搂主有没进展阿?
作者:
chiusir
时间:
2011-7-23 21:25
看看这个,应该有启发的:
http://www.freescaleic.org/bbs/article_265_119107.html
作者:
dfmc
时间:
2011-8-8 11:48
我也有同样的问题:有大量的数据表想放到D_flash中,不知道怎么放入,另外放入了如何频繁读取?有个简单的方法能实现但是感觉不怎么样:在RAM中再定义相同的数据表,初始化的时候从D_flash中读取并赋值给RAM的表,调用的时候用RAM的数据。
楼主有没有解决问题啊?
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0