启动流程
无论是硬件系统还是软件系统,了解它的第一步需要知道它和他的low level如何接轨,并如何实现在其上面启动跑起来。RT-Thread 是在硬件平台裸机上运行,就需要知道它如何从裸机切换到系统流程。
裸机如何到内核启动?
RT_Thread 支持多种平台和多种编译器,rtthread_startup()函数是RT_Thread规定的统一入口。
执行顺序是:系统先从启动文件开始运行,然后进入RT_Thread的启动函数,最后进入用户入口函数。 基本的启动流程可以参考

所以裸机启动到系统启动关键的一步就是,调用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编

2482

被折叠的 条评论
为什么被折叠?



