打印

kEIL中 分散加载文件 可否 条件执行?

[复制链接]
2617|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hdp7891000|  楼主 | 2014-6-13 14:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
dirtwillfly| | 2014-6-13 14:47 | 只看该作者
应该可以,没试过

使用特权

评论回复
板凳
老鱼探戈| | 2014-6-13 15:08 | 只看该作者
可以的,最好改成这样:

#if VER== 100
使用分散加载文件1
#elif VER==101
使用分散加载文件2
#endif

使用特权

评论回复
地板
aozima| | 2014-6-13 15:48 | 只看该作者
不如通过判断条件决定在链接命令中使用哪个链接脚本。

使用特权

评论回复
5
hdp7891000|  楼主 | 2014-6-13 17:46 | 只看该作者
老鱼探戈 发表于 2014-6-13 15:08
可以的,最好改成这样:

#if VER== 100

多谢,具体如何操作呢?

使用特权

评论回复
6
hdp7891000|  楼主 | 2014-6-13 17:47 | 只看该作者
aozima 发表于 2014-6-13 15:48
不如通过判断条件决定在链接命令中使用哪个链接脚本。

多谢,具体如何操作呢?

使用特权

评论回复
7
hdp7891000|  楼主 | 2014-6-13 17:47 | 只看该作者
dirtwillfly 发表于 2014-6-13 14:47
应该可以,没试过

谢谢帮顶

使用特权

评论回复
8
hdp7891000|  楼主 | 2014-6-13 17:48 | 只看该作者
KEIL中哦,最好教下具体操作

使用特权

评论回复
9
aozima| | 2014-6-13 19:21 | 只看该作者
我们用scons调用 KEIL中的ARMCC编译器进行编译
如果版本号在外面定义的话,可能 直接调试编译/链接时使用哪个命令行。
也就是有两个  sct 文件。

if  a
   a.sct
else
   b.sct

使用特权

评论回复
10
hgjinwei| | 2014-6-13 20:19 | 只看该作者
标准C做法:
#if VER== 100
#   include "File1"
#else
#   include "File1"
#endif

使用特权

评论回复
11
江枫渔火| | 2014-6-14 10:08 | 只看该作者
人家说的是用keil内奸的builder来编译。我也不知道行不行,但是可以仔细看看参考手册。
看看连接脚本里有没有相关无法支持。

如果用scon这些专门的构建器肯定是可以的,因为它能分析源代码或头文件里的信息,加以利用来编译工程。

使用特权

评论回复
12
hdp7891000|  楼主 | 2014-6-16 17:36 | 只看该作者
谢谢,已解决。

#! armcc -E
#include "conf.h"

LR_IROM1 ((SOFTVER AND 0x01)? 0x00002000: 0x0000A000)  0x00008000  {    ; load region size_region
  ER_IROM1 ((SOFTVER AND 0x01)? 0x00002000: 0x0000A000) 0x00008000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00004000  {
   .ANY (+RW +ZI)
  }
}

使用特权

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

本版积分规则

14

主题

322

帖子

4

粉丝