Board logo

标题: 关于Codewarrior6.3的编译 [打印本页]

作者: hitmissile    时间: 2007-6-1 10:07     标题: 关于Codewarrior6.3的编译

用Codewarrior6.3编译的时候,发现生成的Map文件中的变量地址不按照程序中变量的定义顺序排列,请问这是那里的问题,该怎么样解决?
作者: strongchen    时间: 2007-6-1 10:11

可能是优化的结果吧。
作者: hitmissile    时间: 2007-6-1 10:20

我已经将优化设置为代码量最大,还是一样的,是不是需要在连接文件里定义一个段,不过觉得这样有点麻烦,还有没有其他简单的方法?
作者: hitmissile    时间: 2007-6-1 14:11

在LCF文件中加了个Section,在主程序中定义如下:
#pragma define_section sramcode ".sramcode"
#pragma section sramcode begin
uint8 actionPer10ms;
uint8 actionPer40ms;
uint8 actionPer500ms;
uint8 mod1_disp1;
uint8 mod1_disp2;
uint8 mod6_disp0;
uint8 mod1_disp0;
uint16 dtcd;
#pragma section sramcode end

但是在Map文件中生成如下:
# .sram_bss
20006000 00000002 .sramcode dtcd (main.c)
20006002 00000001 .sramcode mod1_disp0 (main.c)
20006003 00000001 .sramcode mod6_disp0 (main.c)
20006004 00000001 .sramcode mod1_disp2 (main.c)
20006005 00000001 .sramcode mod1_disp1 (main.c)
20006006 00000001 .sramcode actionPer500ms (main.c)
20006007 00000001 .sramcode actionPer40ms (main.c)
20006008 00000001 .sramcode actionPer10ms (main.c)
次序刚好与Main中定义顺序相反,请问这是怎么回事?
作者: hitmissile    时间: 2007-6-3 11:55

有没有哪位大哥帮忙解答下?
作者: saserking    时间: 2007-6-3 12:02

你可以把这些有顺序要求的变量用struct包在一起
作者: hitmissile    时间: 2007-6-3 21:41

晕啊,我要求所有.BSS变量都按照顺序排列,大概有上千个。难道Codewarrior编译不能按照顺序排列的吗?不会吧
作者: saserking    时间: 2007-6-3 23:00

上千个用数组
作者: hitmissile    时间: 2007-6-4 09:09

应该不用这么搞的,Diab编译的就是顺序排列的




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0