成都网站建设设计

将想法与焦点和您一起共享

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

这篇文章将为大家详细讲解有关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函数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


标题名称:RT-Threadrt中怎么用$Sub$$main来扩展main函数
分享链接:http://chengdu.cdxwcx.cn/article/jsesop.html