硬汉嵌入式论坛

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

[IAR] icf文件能否引用外部宏或者头文件?

[复制链接]

26

主题

70

回帖

148

积分

初级会员

积分
148
发表于 2022-9-29 15:06:21 | 显示全部楼层 |阅读模式
由于MDK和IAR的分散加载文件存在差异, 所以定义代码存放空间就想引用外部头文件中的宏:
问题1:
define symbol m_interrupts_start       = 0x60002000;
define symbol m_interrupts_end         = 0x600023FF;

这里定义了一段物理地址, 但是用的是立即数"0x60002000"和"0x600023FF",
我想把这两个立即数使用宏定义并存放在另一个头文件中, 这里使用宏来定义空间,
因为Mdk我比较熟悉, 这样做是可行的, 但是在Iar上比较陌生, 不知道如何实现.

问题2:
if (isdefinedsymbol(__stack_size__))
{
    define symbol __size_cstack__        = __stack_size__;
}
else
{
    define symbol __size_cstack__        = 0x1000;
}

这里是Iar对栈大小的定义, 但是isdefinedsymbol(__stack_size__)是指这个__stack_size__在icf文件以外的地方进行了定义吗?
那么是否能使用这个方法来解决问题1呢?

求赐教.

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2022-9-29 16:02:37 | 显示全部楼层
IAR没这么玩过,这个isdefinedsymbol应该是icf文件本身里面用户define symbol xxx的判断。

具体得再查资料看看了。
回复

使用道具 举报

26

主题

70

回帖

148

积分

初级会员

积分
148
 楼主| 发表于 2022-9-29 16:48:51 | 显示全部楼层
eric2013 发表于 2022-9-29 16:02
IAR没这么玩过,这个isdefinedsymbol应该是icf文件本身里面用户define symbol xxx的判断。

具体得再查资 ...

Iar用得精的人真的好少, FlashLoader难搞, icf文件也难搞, 太烦了.
明天再开个贴问Imxrt1052的Iar外部FlashLoader怎样写.
回复

使用道具 举报

210

主题

1045

回帖

1685

积分

至尊会员

More we do, more we can do.

积分
1685
发表于 2022-9-29 23:44:40 | 显示全部楼层
问题1,支持。出处:
The include directive makes it possible to divide the configuration file into several
logically distinct parts, each in a separate file. For instance, there might be parts that you
need to change often and parts that you seldom edit.
Normally, the linker searches for configuration include files in the system configuration
directory. You can use the --config_search linker option to add more directories to
search
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2022-9-30 00:25:23 | 显示全部楼层
emwin 发表于 2022-9-29 23:44
问题1,支持。出处:

这个可以检索另外的icf文件,检索h或c里面的宏不行,直接提示语法不对
image.png
回复

使用道具 举报

26

主题

70

回帖

148

积分

初级会员

积分
148
 楼主| 发表于 2022-10-21 08:29:33 | 显示全部楼层
eric2013 发表于 2022-9-30 00:25
这个可以检索另外的icf文件,检索h或c里面的宏不行,直接提示语法不对

文档里面也没有相关描述, 这问题卡我半年了.
回复

使用道具 举报

1

主题

52

回帖

55

积分

初级会员

积分
55
发表于 2022-10-21 10:04:02 | 显示全部楼层
提供一个变通的思路:
在 pre-build commond line 执行一个 python 脚本(查找指定头文件的宏,取出数值XXXX,然后替换 icf 中想要的字段)。

这样每次构建都会自动更新 icf。
回复

使用道具 举报

26

主题

70

回帖

148

积分

初级会员

积分
148
 楼主| 发表于 2022-10-28 08:48:05 | 显示全部楼层
CoderXMan 发表于 2022-10-21 10:04
提供一个变通的思路:
在 pre-build commond line 执行一个 python 脚本(查找指定头文件的宏,取出数值XX ...

这方法可行, 我编译前用Python改版本号, 编译后有用Python拷贝bin文件.

这问题可以暂时绕开, 但正面解决的方法我还是想研究下的.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 16:02 , Processed in 0.266515 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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