鸿蒙Hi3861学习十二-Huawei LiteOS-M(osXX与LOS_XX)

一、LOS_XX是什么

        LOS_XX是LiteOS_M或LiteOS_A内核提供的接口。例如:LOS_TaskCreate、LOS_TaskCreate、LOS_SemCreate等。因为LiteOS_M和LiteOS_A是针对不同的内核,所以LOS_XX在实现上也是有所不同的。也就是说LOS_XX跟具体的内核类型是有关系的

        这里只说一下的源文件位置,有兴趣可以自行研究。

        1.0版本,LiteOS_M

code-1.0\kernel\liteos_m\kernel\base

         1.0.1版本,LiteOS_M

code-1.0.1\L01\kernel\liteos_m\kernel\src

        1.1版本,LiteOS_M

code-1.1.0\code-1.1.0\kernel\liteos_m\kernel\src

 二、什么是osXX

        osXX是cmsis标准的接口,例如osThreadNew、osTimerNew、osSemaphoreNew等。

        因为这些函数我们在之前的文章中都有详细介绍,这里不做过多介绍,只介绍这些文件的位置,感兴趣的自行研究。

        1.0版本

code-1.0\kernel\liteos_m\components\cmsis\2.0

        1.0.1版本

code-1.0.1\L01\kernel\liteos_m\kal\cmsis

        1.1.0版本

code-1.1.0\code-1.1.0\kernel\liteos_m\kal\cmsis

         在cmsis_liteos2.c中,包含了osXX所有函数的实现

         需要注意的是,在1.0版本中,cmsis文件中还没有包含osMemoryXX相关的函数,只做了定义。所以,如果在1.0版本中调用osMemoryXX相关的函数,编译是会报错的。

三、二者的关系

        osXX实际上是对LOS_XX的更上一层的封装。上文说过,LOS_XX针对LiteOS_M和Lite_OSA实现是不同的。实际上,如果有更多的内核,LOS_XX可能会有更多不同的命名。那为了方便开发者开发,且在不同的内核上运行,osXX就诞生了。

        例如,如果A内核系统有AOS_XX,B内核有BOS_XX,C内核有COS_XX。当应用开发人员调用AOS_XX就只能在A内核上运行,调用BOS_XX只能在B内核上运行。这显然增加了跨内核的复杂度。而如果应用开发人员调用osXX,只要A内核、B内核、C内核都提供了osXX的实现,那么应用开发人员就不需要做任何适配,就可以在A内核、B内核、C内核的系统上跑

        注:1.0版本,只支持cmsis标准。1.0.1版本及更高版本,支持cmsis标准和posix标准

        1.0.1版本

code-1.0.1\L01\kernel\liteos_m\kal

         其实,从代码中也是可以找到osXX与LOS_XX的关系的。这里以osThreadNew函数为例,先看一下该函数的实体。

        可以看到,osThreadNew函数的实体中,实际还是调用了LOS_TaskCreate来实现任务的创建

猜你喜欢

转载自blog.csdn.net/qq_26226375/article/details/130621092