硬汉嵌入式论坛

 找回密码
 立即注册
查看: 671|回复: 4
收起左侧

[IAR] iar的链接文件icf支持#define以及#if的语法定义么?

[复制链接]

2

主题

7

回帖

13

积分

新手上路

积分
13
发表于 2024-12-4 16:23:24 | 显示全部楼层 |阅读模式
使用autosar生成的链接文件包含了这些内容,尝试inlcude生成的icf文件提示报错,不知道有大佬知道生成的Os_Link.icf,Os_Link_Core0.icf,Os_Link_Core0_Stacks.icf这三个文件怎么包含到自己的icf文件中去。

#if defined ( OS_LINK_CODE )
block OS_CODE_BLOCK with alignment = 32 { section .OS_CODE },
#endif

#if defined ( OS_LINK_INTVEC_CODE )
block OS_INTVEC_CODE_BLOCK with alignment = 128 { section .OS_INTVEC_CODE },
#endif

#if defined ( OS_LINK_CALLOUT_CODE )
block OS_ERRORHOOK_CODE_BLOCK with alignment = 32 { section .OS_ERRORHOOK_CODE },
block OS_OS_COREINITHOOK_CODE_BLOCK with alignment = 32 { section .OS_OS_COREINITHOOK_CODE },
#endif

#ifdef OS_LINK_CODE
# undef OS_LINK_CODE
#endif

回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2024-12-4 17:38:28 | 显示全部楼层
给你打个样:如下


if(isdefinedsymbol(_LINK_RAM_)) {
define symbol ram_start_reserve = 0x20000;
define symbol rom1_base_address = ram1_base_address;
define symbol rom1_end_address  = rom1_base_address + ram_start_reserve - 0x01;
define symbol rom2_base_address = 0x0;
define symbol rom2_end_address  = 0x0;
define symbol rom3_base_address = 0x0;
define symbol rom3_end_address  = 0x0;
} else {
define symbol ram_start_reserve = 0x0;
define symbol rom1_base_address = 0x0;
define symbol rom3_base_address = 0x03000000;
define symbol rom3_end_address  = 0x030017FF;
define symbol rom1_end_address  = 0x001FFFFF;
define symbol rom2_base_address = 0x0;
define symbol rom2_end_address  = 0x0;
}
回复

使用道具 举报

2

主题

7

回帖

13

积分

新手上路

积分
13
 楼主| 发表于 2024-12-4 19:17:58 | 显示全部楼层
benny 发表于 2024-12-4 17:38
给你打个样:如下

可是生成的icf文件就是带#define #if这些宏定义的,难道要手动去改。。。。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116230
QQ
发表于 2024-12-6 08:40:33 | 显示全部楼层
Joia 发表于 2024-12-4 19:17
可是生成的icf文件就是带#define #if这些宏定义的,难道要手动去改。。。。

可以看下最新版IAR9.6的Linker手册里面有支持条件编译没,这个还真没测试过。
回复

使用道具 举报

2

主题

71

回帖

77

积分

初级会员

积分
77
发表于 2024-12-6 16:14:04 | 显示全部楼层
难道不看IAR手册的吗:

if (expr) {
directives
[ } else if (expr) {
directives ]
[ } else {
directives ]
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-11 06:02 , Processed in 0.398997 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表