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, 取出来也是对的.. |