RT-Thread中$Sub$$main与$Super$$main扩展main函数的示例分析
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,RT-Thread中$Sub$main与$Super$main扩展main函数的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。M
千家信息网最后更新 2025年12月02日RT-Thread中$Sub$$main与$Super$$main扩展main函数的示例分析
RT-Thread中$Sub$main与$Super$main扩展main函数的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
MDK5的__main函数是自动生成的,且无法修改源码。同时,MDK5提供了一对符号$Sub$$和$Super$$来扩展函数。这一对符号作用在连接器,当连接器连接到func时,如果发现存在$Sub$$func函数,会先连接$Sub$$func函数,一直到出现$Super$$func为止,$Super$$func是func函数的新的入口。
Keil官网给的例子:
extern void ExtraFunc(void); extern void $Super$$foo(void):/* this function is called instead of the original foo() */void $Sub$$foo(void){ ExtraFunc(); /* does some extra setup work */ $Super$$foo(); /* calls the original foo() function */ /* To avoid calling the original foo() function * omit the $Super$$foo(); function call. */}$Sub$$和$Super$$符号可以在不修改原程序的情况下添加新功能,rtt就使用了这对符号来扩展main函数。
做一个简单的例子来测试一下这种扩展:
int i = 0;void $Super$$main(void);void $Sub$$main(void){ i++; $Super$$main();}int main(void){ i++; while(1) { }}看反汇编(assembly mode),原来跳转到main函数变成了跳转到$Sub$$main函数:
__rt_entry_main:0x08000172 F000F867 BL.W $Sub$$main (0x08000244)0x08000176 F000F84F BL.W exit (0x08000218)
$Sub$$main函数:
$Sub$$main:0x08000244 B510 PUSH {r4,lr}0x08000246 4804 LDR r0,[pc,#16] ; @0x080002580x08000248 6800 LDR r0,[r0,#0x00]0x0800024A 1C40 ADDS r0,r0,#10x0800024C 4902 LDR r1,[pc,#8] ; @0x080002580x0800024E 6008 STR r0,[r1,#0x00]0x08000250 F000F8A8 BL.W main (0x080003A4)0x08000254 BD10 POP {r4,pc}0x08000256 0000 DCW 0x00000x08000258 0000 DCW 0x00000x0800025A 2000 DCW 0x2000这样做,可以保持启动代码不变,而同时实现对main函数的扩展。rtt的调度器就是这样做的。
看完上述内容,你们掌握RT-Thread中$Sub$main与$Super$main扩展main函数的示例分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
函数
符号
示例
分析
例子
内容
同时
方法
更多
连接器
问题
束手无策
为此
代码
作用
入口
原因
对此
就是
情况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
设备类公司软件开发是什么样的
一万人同时游戏在线的服务器
网络安全需要哪些防范
软件开发如何征税
赛罕区网络安全委员会
2个网站一个服务器
有网络安全专业的大学
内容为王互联网科技
政务网络技术发展趋势
2个数据库查询结果比对
武汉大学网络安全学院保研率
枣庄天气预报软件开发
北斗授时服务器
数据库事务的四大特征aicd
广州知识课堂软件开发
美国服务器ip段
长宁区营销软件开发供应商
天津公安局网络安全护网
人工智能数据库金矿
网络安全不忘初心主题教育
邹平华庆网络技术
数据库给某列单独插入值
鹿邑县软件开发培训班
服务器隔板
web服务器的作用
如何获取app上的数据库
小牛软件开发有限公司招聘
视频制作软件开发合同
服务器将在3分钟内停机
数据库审计产品的好处