思维导图 https://download.csdn.net/download/lanlingxueyu/88816723
其中硬件相关层按不同编译工具链、芯片架构分类,
提供统一的HAL(Hardware Abstraction Layer)
接口其他模块属于硬件无关层,
其中基础内核模块提供基础能力,
扩展模块提供网络、文件系统等组件能力
KAL(Kernel Abstraction Layer)模块提供统一的标准接口
和
POSIX(Portable Operating System Interface,可移植操作系统接口)
都是可移植操作接口的标准,属于应用接口层,可增强应用软件的可移植性,降低开发难度。
#######
####### CMSIS是对于那些基于ARM Cortex处理器的微控制器独立于供应商的硬件抽象层。它包含多个组件层,其中之一是RTOS层,该层定义了一套通用及标准化的RTOSAPI接口,减少了应用开发者对特定RTOS的依赖,方便用户软件的移植重用。该套API有2个版本,分别为版本1(CMSIS-RTOSv1)和版本2(CMSIS-RTOSv2),OpenHarmonyLiteos-M仅提供其版本2的实现。
#######
####### OpenHarmony内核使用musl libc库以及自研接口,支持部分标准POsIX接口,开发者可基于POSIX标准接口开发内核之上的组件及应用。
####### 高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度
####### 阻塞态(Blocked)包含任务被挂起(suspend状态)、任务被延时(delay状态)、任务正在等待信号量、读写队列或者等待事件等
####### 就绪态->运行态:任务创建后进入就绪态,发生任务切换时,就绪队列中最高优先级的任务被执行,从而进入运行态,同时该任务从就绪队列中移出
####### 运行态->就绪态:有更高优先级任务创建或者恢复后,会发生任务调度,此刻就绪队列中最高优先级任务变为运行态,那么原先运行的任务由运行态变为就绪态,依然在就绪队列中
####### 就绪态->阻塞态:任务也有可能在就绪态时被阻塞(挂起),此时任务状态由就绪态变为阻塞态,该任务从就绪队列中删除,不会参与任务调度,直到该任务被恢复
####### 阻塞态->就绪态:阻塞的任务被恢复后(任务恢复、延时时间超时、读信号量超时或读到信号量等),此时被恢复的任务会被加入就绪队列,从而由阻塞态变成就绪态:此时如果被恢复任务的优先级高于正在运行任务的优先级,则会发生任务切换,该任务由就绪态变成运行态
####### 运行态->阻塞态:正在运行的任务发生阻塞(挂起、延时、读信号量等)时,将该任务插入到对应的阻塞队列中,任务状态由运行态变成阻塞态,然后发生任务切换运行就绪队列中最高优先级任务
####### 运行态->退出态:运行中的任务运行结束,任务状态由运行态变为退出态。退出态包含任务运行结束的正常退出状态以及nvalid状态。例如,任务运行结束但是没有自删除,对外呈现的就是lnyalid状态,即退出态
####### 阻塞态->退出态:阻塞的任务调用删除接口,任务状态由阻塞态变为退出态
####### 任务ID
######## 在任务创建时通过参数返回给用户,是任务的重要标识
####### 任务优先级
######## 表示任务执行的优先顺序
####### 任务入口函数
######## 新任务得到调度后将执行的函数。该函数由用户实现,在任务创建时,通过任务创建结构体设置
####### 任务栈
######## 每人任务都拥有一人独立的栈空间,我们称为任务栈。栈空间里保存的信息包含局部变量、寄存器、函数参数、函数返回地址等
####### 任务上下文
######## 任务在运行过程中使用的一些资源,如寄存器等,称为任务上下文
####### 任务控制块TCB
######## 每个任务都含有一个任务控制块(TCB)
####### 任务切换
######## 包含获取就绪队列中最高优先级任务、切出任务上下文保存、切入任务上下文恢复等动作
####### 1.锁任务调度LOs_TaskLock,防止高优先级任务调度。
2.创建任务Los_TaskCreate。
3.解锁任务LOs_TaskUnlock,让任务按照优先级进行调度。