之前学习LiteOS内核的基本结构和应用的时候,我们通过一张LiteOS内核系统的结构图了解到其基本结构。

其中,Huawei LiteOS基础内核包括不可裁剪的极小内核和可裁剪的其他模块。极小内核包含任务管理、内存管理、中断管理、异常管理和系统时钟。可裁剪的模块包括信号量、互斥锁、队列管理、事件管理、软件定时器等。 这些模块协同工作,使得LiteOS内核能够完成许多事情。同时,Huawei LiteOS支持 UP(单核)与 SMP(多核)模式,即支持在单核或者多核的环境上运行。本系列将着重围绕基础内核部分的开发进行学习。
在了解各模块的特点及用法之前,我们先来了解一下LiteOS内核的启动流程,以下是一张LiteOS启动的大致流程图。

对应于实际的操作,一般我们在把程序烧录到开发板中时,会首先复位,这样在启动过程中,开发板执行的第一个函数就是LiteOS内核中的Reset_Handler,这个函数位于targets目录下目标开发板的los_startup_gcc.S中,这同时也是kernel的启动文件,不同架构的开发板具有不同的启动程序,这里主要是针对单核和多核的不同而推出的。
Reset_Handler函数主要进行了以下工作:初始化了stack pointer,PC指针,中断向量表,系统时钟,最后调用C语言库中的main函数。部分该函数源代码如图所示,从这些汇编语言中可以看到对SP指针进行了初始化,包括设定栈指针,从flash拷贝向量到sram,把数据段从flash拷贝到sram

本文详细介绍了Huawei LiteOS内核的启动流程,从Reset_Handler函数开始,包括栈指针初始化、中断向量表设置、系统时钟配置,最终调用main函数进行LiteOS的初始化。初始化涉及任务模块、内存系统、IPC模块、中断和系统时钟等。完成初始化后,任务调度开始,标志着LiteOS内核启动流程结束。
最低0.47元/天 解锁文章
1万+

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



