打印

常数数组如何放到FLASH中

[复制链接]
4213|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
clz918|  楼主 | 2008-7-9 09:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
snakeemail| | 2008-7-9 09:55 | 只看该作者

好像很麻烦,存在flash里运行是还是要读到RAM中

用const定义没有用,TI有一个相关的文档

使用特权

评论回复
板凳
clz918|  楼主 | 2008-7-9 11:17 | 只看该作者

回snakeemail

  我是想定义一个常数大的数组,因为RAM放不下,所以只能放到FLASH,至于到底是在FLASH运行还是在RAM运行我并不在乎,snakeemail 兄有什么合适的方案吗
        谢谢

使用特权

评论回复
地板
snakeemail| | 2008-7-9 12:09 | 只看该作者

估计只能读一部分出来到ram

使用特权

评论回复
5
rivflood| | 2008-7-11 16:10 | 只看该作者

用28系列的没有问题

可以存在flash里,只要你的flash够用,如果用c语言的话,你定义的常数数组是放在program区中的,program区在cmd定义的时候定义在flash中就可以了

使用特权

评论回复
6
snakeemail| | 2008-7-11 22:11 | 只看该作者

楼上怎么定义的?给个例子。

24中我用const int a[400],烧到flash中无法运行程序,dsp为了快速运行,数据都放在ram中,加快运行速度。要是数据从flash中读出,会降低效率

使用特权

评论回复
7
hotpower| | 2008-7-11 22:33 | 只看该作者

倒塌了~~~dsp直接寻址很方便~~~

自己找吧~~~
相关链接:http://blog.**/hotpower/125030/message.aspx

使用特权

评论回复
8
snakeemail| | 2008-7-14 11:35 | 只看该作者

大叔,看不懂你blog你写的,好歹也写几个字说明一下

使用特权

评论回复
9
rivflood| | 2008-7-14 13:05 | 只看该作者

24系列的烧到flash中的数据要用汇编指令来操作

如果用c语言定义的数组,程序在执行的时候会从flash中copy到ram中运行,这个是由24系列的硬件结构决定的。
如果不想将flash中的数据copy到ram中运行,可以在汇编里定义数组,在c语言中通过嵌入汇编来访问

使用特权

评论回复
10
hotpower| | 2008-7-14 13:14 | 只看该作者

俺虽没用过24系列,但俺不相信楼上所述~~`俺从不信邪~~~

使用特权

评论回复
11
lianshumou| | 2008-7-14 16:39 | 只看该作者

给个够简单的

   .econst             : > FLASH       PAGE = 0

或者是:    .const             : > FLASH       PAGE = 0

在CMD文件时指定所有常数都在flash中就好了! 虽然会降临其它常数的执行效率,但楼主不要求效率的话,这是个很好的方法

使用特权

评论回复
12
snakeemail| | 2008-7-15 09:37 | 只看该作者

编译器的pdf上讲的,


If your system configuration does not support allocating an initialized section such as .const to data memory, then you must allocate the .const section to load in program memory and run in data memory. At boot time, copy the .const section from program to data memory. The following sequence shows how you can perform this task:
不知道楼上的方法是否可以用,常数可以分配在program memory,即flash中,但是运行还是要放到data memory中.
28是可以用const定义数组,有兴趣看一下.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

111

主题

336

帖子

3

粉丝