硬汉嵌入式论坛

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

[技术讨论] 基于GCC编译器的initcall在STM32如何实现

[复制链接]

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2024-10-21 09:20:34 | 显示全部楼层 |阅读模式
请问各位基于GCC编译器的initcall在STM32如何实现?有哪位实现了吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-10-21 10:52:19 | 显示全部楼层
试试

2.png
回复

使用道具 举报

102

主题

573

回帖

894

积分

金牌会员

积分
894
QQ
发表于 2024-10-22 14:31:59 | 显示全部楼层
initcall是gcc实现的?

我去搜了一下,看百度的解释是类似于不显式调用的一种方式。

你可以参考rtthread的export机制。
回复

使用道具 举报

102

主题

573

回帖

894

积分

金牌会员

积分
894
QQ
发表于 2024-10-22 14:36:04 | 显示全部楼层
本帖最后由 会飞的猪_2020 于 2024-10-22 14:43 编辑

这个是我参考rtthread写的。
里面有一个头文件没有,应该把它删掉就行了。
然后做了esp-idf编译器的适配和ARMCC,ARMCLANG的适配。。
export.zip (2.2 KB, 下载次数: 2)


里面有一个.lf的文件,这个是给esp32用的,stm32不用管它。
然后它就一个.c和一个.h文件。
针对ARMCC的编译器,会用 $Sub$$去劫持mian函数。
让它在执行main函数之前,先去执行fp_components_board_init和fp_components_init

然后.h里面是一些不同优先级的宏定义。有1,2,3,4,四个不同的优先级。

然后你把你的初始化代码用这个宏定义export出去,应该就可以不用显示调用,在main函数执行之前就调用它了。




你是要gcc编译器的吗?gcc编译器应该和esp-32的那个部分类似。需要自己写一个ld脚本。


这个我没仔细研究过。
回复

使用道具 举报

102

主题

573

回帖

894

积分

金牌会员

积分
894
QQ
发表于 2024-10-22 14:59:03 | 显示全部楼层
里面的代码是我参考网络上开源库,自己尝试着写的一些轮子,
目前还是完全没写完的状态,不太愿意分享出来,怕贻笑大方。

里面有一个export机制。你可以参考一下。

完整的MDK工程如下:
fp-sdk-stm32f103.7z (16.3 MB, 下载次数: 4)
回复

使用道具 举报

102

主题

573

回帖

894

积分

金牌会员

积分
894
QQ
发表于 2024-10-25 15:04:08 | 显示全部楼层
gcc那个我也搞出来了。今天在一款芯片上试了一下。
回复

使用道具 举报

1

主题

38

回帖

41

积分

新手上路

积分
41
发表于 2024-11-7 08:50:49 | 显示全部楼层
有没有人比较一下GCC编译后的代码效率与MDK与IAR自带的编译后的差异有多少?5%以内还是??
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-11-8 09:44:09 | 显示全部楼层
cooleaf 发表于 2024-11-7 08:50
有没有人比较一下GCC编译后的代码效率与MDK与IAR自带的编译后的差异有多少?5%以内还是??

同样的工程代码执行速度吗?

只比较过三角函数的性能和代码生成大小。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-7-8 11:22:48 | 显示全部楼层
会飞的猪_2020 发表于 2024-10-25 15:04
gcc那个我也搞出来了。今天在一款芯片上试了一下。

请问gcc的那个是要自己写个和esp32一样的脚本吗
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-12 06:01 , Processed in 0.046967 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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