温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

RT-Threadrt 中怎么用$Sub$$main来扩展main函数

发布时间:2021-12-17 14:52:26 来源:亿速云 阅读:395 作者:柒染 栏目:互联网科技

这篇文章将为大家详细讲解有关RT-Threadrt 中怎么用$Sub$main来扩展main函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

现在的rt thread是3.1.2版,先看一下rt thread是怎么用$Sub$$main来扩展main函数。

$Sub$$main函数的源码定义在\src\components.c里。

#if defined(__CC_ARM) || defined(__CLANG_ARM) extern int $Super$$main(void); /* re-define main function */ int $Sub$$main(void) {     rt_hw_interrupt_disable();     rtthread_startup();     return 0; } #elif defined(__ICCARM__) // for IAR... #elif defined(__GNUC__) extern int main(void); // for gcc.. #endif

有两个子函数:

1、rt_hw_interrupt_disable,关全局总中断,定义在汇编文件\libcpu\arm\cortex-m3\context_rvds.S里。

;/* ; * rt_base_t rt_hw_interrupt_disable(); ; */ rt_hw_interrupt_disable    PROC     EXPORT  rt_hw_interrupt_disable     MRS     r0, PRIMASK     CPSID   I     BX      LR     ENDP

就是__set_primask(1),关中断,只有FAULT和NMI中断可以响应。

2、rtthread_startup,启动rtt,也在\src\components.c里。

int rtthread_startup(void) {     rt_hw_interrupt_disable();     /* board level initialization      * NOTE: please initialize heap inside board initialization.      */     rt_hw_board_init();     /* show RT-Thread version */     rt_show_version();     /* timer system initialization */     rt_system_timer_init();     /* scheduler system initialization */     rt_system_scheduler_init(); #ifdef RT_USING_SIGNALS     /* signal system initialization */     rt_system_signal_init(); #endif     /* create init_thread */     rt_application_init();     /* timer thread initialization */     rt_system_timer_thread_init();     /* idle thread initialization */     rt_thread_idle_init(); #ifdef RT_USING_SMP     rt_hw_spin_lock(&_cpus_lock); #endif /*RT_USING_SMP*/     /* start scheduler */     rt_system_scheduler_start();     /* never reach here */     return 0; }

关于RT-Threadrt 中怎么用$Sub$main来扩展main函数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI