随着5G和智能化的来临,物联网(IoT)的发展也变得更加快速。当前的物联网领域已经形成了庞大的生态系统,市场上的微控制器(MCU)供应商和嵌入式操作系统(一般也是实时操作系统)也多达几十个,开发者面对的嵌入式软件工程越发复杂。为减少开发工作量并降低产品存在缺陷的风险,软件重用变得越来越重要。因此各标准组织和相关利益厂商,都在积极制定和推动软件接口标准。
和操作系统(OS)相关的一个重要标准是POSIX(Portable Operating System Interface of UNIX),表示可移植操作系统接口。虽然POSIX中的X代表的是UNIX,但其实POSIX并不局限于UNIX,许多其它的OS也可以符合POSIX标准。
POSIX是IEEE为在各种OS上运行的软件而定义的一组API接口标准,目标是获得源代码级别的软件可移植性。也就是说,在一个符合POSIX标准的OS上开发的应用程序,在其它的POSIX操作系统上无需修改也可以直接编译运行。
LiteOS作为一款嵌入式操作系统,必须要考虑软件的可移植性,有效降低开发者的开发难度。当前LiteOS已经支持100+个POSIX标准接口,涵盖了一些常用的基本接口,包括线程操作(比如线程同步、线程调度、管理线程属性等)、消息队列操作、软件定时器操作、socket通信操作、文件系统类操作等等。感兴趣的话,可以去源码lib/huawei_libc下面查看。
除了POSIX标准,在物联网领域还有一个CMSIS(Cortex Microcontroller Software Interface Standard)标准,它是ARM同各个微控制器供应商、工具供应商和软件解决方案一起开发的Cortex微控制器软件接口标准。它使得微控制器和软件供应商可以使用一致的软件结构来开发Cortex微控制器的软件。
CMSIS-RTOS是CMSIS的一部分,它本身是一种API规范,各厂商可以基于CMSIS-RTOS构建自己的实时操作系统(RTOS)。由于基于CMSIS-RTOS的API是标准化的,所以基于这些API开发的应用软件,不需要进行额外的移植开发工作,就可跑在任何支持CMSIS-RTOS的OS上。随着基于CMSIS-RTOS的中间件越来越多,支持CMSIS-RTOS后的OS也会因此获得更多的中间件。LiteOS基于CMSIS-RTOS API v1和v2,对自己的API进行了封装,可以在源码目录compat/cmsis下看到对CMSIS-RTOS API v1和v2的支持。
V1和V2版本接口层级的差异见:https://www.keil.com/pack/doc/CMSIS/RTOS2/html/os2MigrationFunctions.html
推荐使用新版本(cmsis v2)
参考:https://bbs.huaweicloud.com/forum/thread-65163-1-1.html