今日看点

HarmonyOS CMSIS

发表于话题:HarmonyOS 2
发布时间:2021-06-02

HarmonyOS CMSIS-RTOS2接口简介

目录

作者介绍CMSIS-RTOS2接口简介鸿蒙与CMSIS-RTOS2接口联系如何使用CMSIS-RTOS2接口往期回顾

作者介绍

刘懿宵,男,西安工程大学电子信息学院,2017级本科生。
专业:通信工程
电子邮件:liuyixiao@stu.xpu.edu.cn

CMSIS-RTOS2接口简介

什么是CMSIS-RTOS2接口
CMSIS是Cortex微控制器软件接口标准(Cortex Microcontroller Software Interface Standard)是ARM和一些编译器厂家以及半导体厂家共同遵循的一套标准,是由ARM专门针对Cortex-M系列提出的标准。在该标准的约定下,ARM和芯片厂商会提供一些通用的API接口来访问Cortex内核以及一些专用外设,以减少更换芯片以及开发工具等移植工作所带来的金钱以及时间上的消耗。

CMSIS-RTOS2(CMSIS-RTOS API Version 2)是Arm® Cortex®-M 处理器的通用的RTOS接口。为需要RTOS功能的软件组件提供了标准化的API。

CMSIS-RTOS2是一个通用的API,它与底层的RTOS内核无关,写应用序的程序员在用户代码中调用CMSISRTOS2 API函数,可以更方便地将应用程序从一个RTOS到另一个RTOS,使用CMSIS-RTOS2 API的中间件也可以避免很多不必要的移植工作。

鸿蒙与CMSIS-RTOS2接口联系

鸿蒙在CMSIS-RTOS2接口中封装了LiteOS-m的内核代码
CMSIS-RTOS2实现://kernel/liteos_m/kal/cmsis/cmsis_liteos2.c

osStatus_t osKernelInitialize(void) { if (OS_INT_ACTIVE) { return osErrorISR; } if (g_kernelState != osKernelInactive) { return osError; } if (LOS_OK == LOS_KernelInit()) { g_kernelState = osKernelReady; return osOK; } else { return osError; } }

调用了LOS_KernelInit

osThreadId_t osThreadNew(osThreadFunc_t func, void *argument, const osThreadAttr_t *attr) { UINT32 uwTid; UINT32 uwRet; LosTaskCB *pstTaskCB = NULL; TSK_INIT_PARAM_S stTskInitParam; if (OS_INT_ACTIVE) { return NULL; } if ((attr == NULL) || (func == NULL) || (attr->priority < osPriorityLow1) || (attr->priority > osPriorityAboveNormal6)) { return (osThreadId_t)NULL; } (void)memset_s(&stTskInitParam, sizeof(TSK_INIT_PARAM_S), 0, sizeof(TSK_INIT_PARAM_S)); stTskInitParam.pfnTaskEntry = (TSK_ENTRY_FUNC)func; #ifndef LITEOS_WIFI_IOT_VERSION stTskInitParam.uwArg = (UINT32)argument; #else stTskInitParam.auwArgs[0] = (UINT32)argument; #endif stTskInitParam.uwStackSize = attr->stack_size; stTskInitParam.pcName = (CHAR *)attr->name; stTskInitParam.usTaskPrio = OS_TASK_PRIORITY_LOWEST - ((UINT16)(attr->priority) - LOS_PRIORITY_WIN); /* 0~31 */ uwRet = LOS_TaskCreate(&uwTid, &stTskInitParam); if (LOS_OK != uwRet) { return (osThreadId_t)NULL; } pstTaskCB = OS_TCB_FROM_TID(uwTid); return (osThreadId_t)pstTaskCB; }

新建

osStatus_t osDelay(uint32_t ticks) { UINT32 uwRet = 0; if (ticks == 0) { return osOK; } if (osKernelGetState() != osKernelRunning) { uwRet = LOS_HalDelay(ticks); } else { uwRet = LOS_TaskDelay(ticks); } if (uwRet == LOS_OK) { return osOK; } else { return osError; } }

延迟

如何使用CMSIS-RTOS2接口

1、在业务代码中包含“cmsis_os2.h”
2、通过调用“cmsis_os2.h”中的API函数使用系统相关功能

osThreadId_t osThreadNew (osThreadFunc_t func, void *argument, const osThreadAttr_t *attr); //新建 /** * @brief Obtains the name of a thread. * * @param thread_id Indicates the thread ID, which is obtained using osThreadNew or osThreadGetId. * @return Returns the thread name; returns NULL in the case of an error. * @since 1.0 * @version 1.0 */ const char *osThreadGetName (osThreadId_t thread_id); //获取任务名 /** * @brief Obtains the ID of the currently running thread. * * @return Returns the thread ID; returns NULL in the case of an error. * @since 1.0 * @version 1.0 */ osThreadId_t osThreadGetId (void); //获取任务ID /** * @brief Obtains the state of a thread. * * @param thread_id Indicates the thread ID, which is obtained using osThreadNew or osThreadGetId. * @return Returns the thread state. * @since 1.0 * @version 1.0 */

更多API介绍请参考:https://arm-software.github.io/CMSIS_5/RTOS2/html/index.html

主要看这部分

往期回顾

2021物联网开发学习自学历程记录汇总

标签组:[软件] [接口] [cmsis

本文来源:https://www.kandian5.com/articles/23884.html

相关阅读

王承恩墓简介

北京昌平区明十三陵陵区内、思陵前方有一座陪葬墓,普遍认为该墓是明朝末年明崇祯皇帝朱由检的心腹太监王承恩的墓葬,通常称为王承恩墓。墓保留仍旧比较完好。墓葬简介陵只剩一个直径6米的土堆,但却完整地保留了三...

2025-04-30

西井陪葬墓简介

西井,属于北京昌平区明十三陵陵区内,是明长陵的妃嫔陪葬墓之一。位于定陵西南,昭陵之北,占地面积比东井还大。概述 西井的现存状况不如东井,围墙只有北面一段残存。宝城和殿堂仅存遗址可以辨认。宝城下面几十米...

2025-04-30

明悼陵介绍

悼陵,即“世宗三妃墓”,俗称"大宫"。是北京昌平明十三陵的七座陪葬墓之一。位于袄儿峪。原葬明世宗嘉靖皇帝的原配妻子孝洁陈皇后。后来陈皇后迁葬永陵,悼陵成为明世宗其他三位妃子的墓所。墓葬简介世宗三妃墓(...

2025-04-30

东井陪葬墓介绍

东井,当地俗称东娘娘宫,位于北京昌平区明十三陵陵区内,是长陵的妃嫔陪葬墓之一。东井在德陵东南馒头山之南,坐东朝西。在德陵村和德陵之间,与一户农家小院隔路相邻。在一片荒草之中,愕然耸立着一块无字碑,与十...

2025-04-30

郑贵妃墓简介

郑贵妃墓,位于北京昌平区、明十三陵陵区内,万娘坟村(万贵妃墓)而南约1公里处的银钱(泉)山,坐北朝南。是明十三陵的7座妃子墓之一,墓主人为明神宗万历皇帝的皇贵妃郑氏。墓园介绍郑贵妃墓是明十三陵的7座妃...

2025-04-30

神宗四妃墓介绍

神宗四妃墓,又称作神宗四妃坟,俗称东小宫。是明十三陵的7座妃子墓之一,是明神宗万历皇帝四位妃子的合葬墓。神宗四妃墓位于北京市昌平区十三陵,郑贵妃墓西南200米处。规模不大,也就相当于郑贵妃墓的四分之一...

2025-04-30

明茂陵与聚宝山的关系

明茂陵,位于裕陵右侧的聚宝山下,是明朝第八代皇帝宪宗纯皇帝朱见深(年号成化)和王氏、纪氏、邵氏三位皇后的合葬陵寝。茂陵的建筑在清初时保存尚好,而且祾恩殿内的陈设也保存较多。顾炎武《昌平山水记》记载顺治...

2025-04-30

明十三陵神路简介

十三陵神道,即长陵神道,是长陵陵寝建筑的前导部分。总长约7.3公里。明朝时由南而北,依次建有石牌坊、三空桥、大红门、神功圣德碑亭、石像生、棂星门、南五空桥、七空桥、北五空桥等系列神道墓仪设施及桥涵建筑...

2025-04-30

《吕氏春秋·开春论》贵卒赏析

【原文】力贵突①,智贵卒②。得之同则速为上,胜之同则湿③为下。所为贵骥者,为其一日千里也;旬日取之④,与驽骀⑤同。所为贵镞矢者⑥,为其应声而至;终日而至,则与无至同。吴起谓荆王⑦曰:“荆所有余者地也;...

2025-04-30

《庄子·外篇·达生》原文

达生之情者,不务生之所无以为;达命之情者,不务知之所无奈何。养形必先之以物,物有余而形不养者有之矣。有生必先无离形,形不离而生亡者有之矣。生之来不能却,其去不能止。悲夫!世之人以为养形足以存生,而养形...

2025-04-30