RT-Thread中$Sub$$main与$Super$$main扩展main函数的示例分析
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,RT-Thread中$Sub$main与$Super$main扩展main函数的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。M
千家信息网最后更新 2025年02月04日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安全错误
数据库的锁怎样保障安全
怎样判断大学生网络安全
量化自动交易软件开发
网络安全业主资质证明模板
泰兴多功能网络技术批发价
计算机软件开发经理岗位职责
铜山区辅助软件开发常见问题
手机联通服务器密码咋查
服务器怎么做ftp
宁波app手机软件开发公司
pads的同一网络安全间距
网络安全实操题
湛江卫星软件开发价格走势
网络安全引发的问题
鞍山计算机网络技术专培训
数据库连接池 模式
生物制药计算机网络安全管理论文
存储服务器哪家专业
创建数据库前可以先创建表
网络安全模式关闭更新失败
上海网络技术产品介绍
mysql数据库读取慢
数据库提高的技术
安徽网络技术服务价格查询
武汉大学网络安全奖学金
互联网与科技创新
数据库安全技术研究
数据库redo日志大小
一台小服务器主机可供多少人
新田县网络安全
在万方数据库上能查重吗