今日看点

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月13日,由爱奇艺出品、北京战友文化联合出品及承制、中视同成联合承制、爱奇艺爱撒糖工作室联合打造的古装悬疑探案剧《魅影神捕》在横店举行开机仪式。该剧由龚宇、原昕担任出品人,王晓晖担任总监制,邵文...

2025-06-14

齐桓公称霸天下的多维密码:地理、改革与战略的完美融合

齐桓公(前685年-前643年在位)作为春秋五霸之首,其称霸之路绝非偶然。从地理优势到制度革新,从人才选拔到外交策略,齐桓公的霸业是多重因素交织的结果。 一、地理优势:资源禀赋奠定物质基础 齐国地...

2025-06-14

新加坡演员孙政双线出击!《微笑一号店》展暖男本色《临江仙》塑冷酷龙渊

近期,新加坡演员孙政以截然不同的形象活跃于中国观众的视野,在热播的经营纪实互动真人秀综艺《微笑一号店》中,孙政是笑容温暖、阳光清爽的甜品学员;而在同期上线的仙侠剧《临江仙》里,孙政则化身气场迫人、神情...

2025-06-14

秦武王之后:秦昭襄王的崛起与秦国霸业的转折

秦武王嬴荡在位仅四年,便因“举鼎绝膑”的意外事件殒命,其短暂统治如流星划过秦国崛起的历史长空。然而,这位以“勇力”著称的君主之死,却意外成为秦国政治格局剧变的导火索。他的离世不仅揭开秦国高层权力斗争的...

2025-06-14

SEVENTEEN为日韩合拍剧《初恋DOGs》献唱主题曲《Where love passed》

6月13日,据韩媒消息,组合SEVENTEEN为日韩合拍剧《初恋DOGs》献唱主题曲《Where love passed》,成员WOOZI亲自作词作曲。13日,所属社PLEDIS表示:“...

2025-06-14

秦始皇可能活在地宫吗?历史、科学与传说的三重解构

在骊山北麓的苍茫雾霭中,秦始皇陵地宫如同一部未解的密码,千百年来引发无数猜想。从“以水银为百川江河”的《史记》记载,到现代考古探测到的“强汞异常”,这座地下帝国始终笼罩着神秘色彩。然而,当我们将“秦始...

2025-06-14

防弹少年团田柾国就帽子争议进行道歉 今后将谨慎注意

防弹少年团田柾国因佩戴了印有疑似涉及日本右翼字句的帽子引发争议,随后在Weverse公开致歉。14日凌晨,田柾国在Weverse发文表示:"因在彩排过程中佩戴了一顶印有特定字句的帽子,令许多粉丝感到...

2025-06-14

泰山封禅在哪里举行:揭秘中国古代帝王与泰山的神圣对话

在中国古代帝王的心目中,泰山绝非一座普通的山岳,而是“天人合一”的神圣象征。自秦始皇起,历代帝王封禅泰山的传统延续千年,这一仪式不仅是对泰山地理高度的征服,更是对精神权威的终极宣告。然而,泰山封禅究竟...

2025-06-14

相叶雅纪迎来第二个孩子 2021年与妻子结婚

据日媒报道表示,岚成员相叶雅纪的第二个孩子已经出生,这一消息在《女性Seven》的采访中得到证实,网友们也纷纷祝福相叶雅纪。现在岚5位成员中有3位已经结婚,3位成员都有了孩子。二宫和也有2个孩子,樱...

2025-06-14

嬴驷与秦始皇:跨越百年的帝国奠基之路

在秦国统一天下的历史长卷中,嬴驷(秦惠文王)与嬴政(秦始皇)的名字犹如两座巍峨的丰碑,相隔百年却血脉相连。这位高祖父与玄孙的传承关系,不仅是简单的家族谱系延续,更是秦国从“偏居西陲”到“横扫六合”的战...

2025-06-14