RT_Thread 内核启动分析

启动流程

无论是硬件系统还是软件系统,了解它的第一步需要知道它和他的low level如何接轨,并如何实现在其上面启动跑起来。RT-Thread 是在硬件平台裸机上运行,就需要知道它如何从裸机切换到系统流程。

裸机如何到内核启动?

 RT_Thread 支持多种平台和多种编译器,rtthread_startup()函数是RT_Thread规定的统一入口。

执行顺序是:系统先从启动文件开始运行,然后进入RT_Thread的启动函数,最后进入用户入口函数。 基本的启动流程可以参考

RT-Thread 文档中心https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/basic/basic?id=rt-thread-%e7%a8%8b%e5%ba%8f%e5%86%85%e5%ad%98%e5%88%86%e5%b8%83这里主要列些一些关键逻辑

所以裸机启动到系统启动关键的一步就是,调用rtthread_startup()启动系统内核。对于不同平台来讲 可以通过不同的方式将rtthread_startup()加载在main函数前面 文档中心以MDK_ARM为例写了如何加载在main函数前面

rtthread_startup()做了什么?

rt-thread RTOS系统 内核文件主要放在了src目录下面 文件拓扑图如下:

├── clock.c
├── components.c
├── cpu.c
├── device.c
├── idle.c
├── ipc.c
├── irq.c
├── kservice.c
├── mem.c
├── memheap.c
├── mempool.c
├── object.c
├── scheduler.c
├── signal.c
├── slab.c
├── thread.c
├── timer.c

rtthread_startup()放在components.c中 

我现在以RTThread Studio GCC编译器为例

#elif defined(__GNUC__)
/* Add -eentry to arm-none-eabi-gcc argument */
int entry(void)
{
    rtthread_startup();
    return 0;
}

代码注释 告诉我们在使用gcc编

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值