KEIL的分散加载文件是否可以预编译?

2020-01-01 17:57发布

LR_IROM1 0x08000000 0x00040000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00040000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x0000C000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

如上,程序的起始地址是 0x08000000,是否可以加入一个预编译语句,在某些编译条件下(比如将程序编译为APP2)将该地址更改为 0x08002000 ?貌似 #ifdef 不好使啊!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
gamethink
1楼-- · 2020-01-02 15:01
我到现在还搞不清楚这个功能有什么实质功能意义?
xiaomu
2楼-- · 2020-01-02 19:53
很好,感谢分享!
tjagen
3楼-- · 2020-01-03 01:45
 精彩回答 2  元偷偷看……
love_ourdev
4楼-- · 2020-01-03 04:49
本帖最后由 love_ourdev 于 2019-9-27 08:45 编辑
gamethink 发表于 2019-9-26 21:08
我到现在还搞不清楚这个功能有什么实质功能意义?


一般情况下,复制个demo工程就可以开始你的项目了。但是还有些深入的开发者需求是超出一般情况的。
比如一个项目用掉的内存为data段,bss段,剩下了许多内存;要求把剩余的内存都自动用作malloc的heap空间。
这时候就需要打通链接文件和汇编来共同实现了。
再比如,ARM9带有MMU,需要对内存进行分类,配置有无cache,写缓存之类的。这些不同分类的内存段用于不同的目的,这就需要统一的宏定义,用于初始化代码和链接脚本文件,方便修改管理。
istars2005
5楼-- · 2020-01-03 07:39
我用了一个批处理,根据宏定义自动用不同的文件替换掉当前的文件,虽然笨了点,但是可以用
EMC菜鸟
6楼-- · 2020-01-03 09:09
love_ourdev 发表于 2019-9-26 19:25
我知道你需要的就是这个。顺便给你个汇编文件里支持预处理的步骤(keil默认情况下汇编文件不支持预处理的 ...

收藏了,谢谢!

一周热门 更多>