打印

[求助]数组放到flash中的问题和疑惑

[复制链接]
2498|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiemnij|  楼主 | 2007-7-25 10:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TI 的2407
看网上的帖子..说要把const的数组放到flash中..必须在cmd设定
        .const   : load=  PROG      PAGE 0, run = SARAM PAGE 1
        {
                __const_run=.;
                *(c_mark)
                *(.const)
                __const_length = .-__const_run;
        } 
并且 boot.asm哪里 必须设置一个 1

我按照步骤做了..是可以把const char[]="asdf"之类的放到flash中..
但是还 有一些问题..想请教一下..

问题一:
const 放到flash中.运行的时候是在ram中..那么这样做.是不是意味这.
这些数组在rom和ram中同时在用了空间...
如果是..那么把数组定义在rom中的意义何在...

问题二:

rts.src中定义了__const_run, 但是 __const_run=. 后面的 "."和
. - __const_run中的"." 就代表const启动地址??
如果是__const_length = .-__const_run; 两个想减不是0了吗?

另外 (.c_mark)  rts.src中有使用过..
但是为什么用(c_mark)没有 "."呢
而且cmd文件中好像没有分配这些空间..这些东西编译器自动分配????

问题三:
        .const   : load=  PROG      PAGE 0, run = SARAM PAGE 1
        {
                __const_run=.;
                *(c_mark)
                *(.const)
                __const_length = .-__const_run;
        }
{}中的东西 那位大哥能不能详细讲一下..
只知道 *(.const) 把const文件分配到这段..其他的起始什么的有什么用
load =PROG 和RUN = SARAM不是已经定位了吗??
另外我把{}里面的东西删除了好像 也能把数组放到rom, 取出来也是对的.. 

相关帖子

沙发
redskier| | 2007-7-25 11:07 | 只看该作者

回复主题:[求助]数组放到flash中的问题和疑惑

我这样做了还是放不进去,观看地址的值是,发现那一片rom还是全部是0;不知道怎么回事。最后只好还是去掉const,放到ram中。还有就是那个(.c_mark)好像是有.的

使用特权

评论回复
板凳
jiemnij|  楼主 | 2007-7-25 15:27 | 只看该作者

那位高人指点一下..........

那位高人指点一下..........

使用特权

评论回复
地板
sesy| | 2007-8-27 10:14 | 只看该作者

搞不懂

怎么才能实现CONST数据只放在ROM中,用的时候指针指向该地址读取,而不是复制到RAM中呢?如果复制,那就不如直接放RAM里了

使用特权

评论回复
5
mr.king| | 2007-8-28 18:51 | 只看该作者

据说TI的C编译器不支持CONST直接在FLASH中存取

使用特权

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

本版积分规则

3

主题

48

帖子

0

粉丝