今日看点

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

相关阅读

京剧:地地道道的中国国粹

京剧,曾称平剧,亦称乱弹、国剧。我国知名戏曲剧种,中国五大戏曲剧种之一,场景布置注重写意,腔调以西皮、二黄为主,用胡琴和锣鼓等伴奏,被视为中国国粹,中国戏曲三鼎甲“榜首”。京剧艺术博大精深,文戏武戏各...

2025-08-02

京剧锣鼓演奏中的忌讳

李渔在《闲情偶寄》“锣豉忌杂”一节中一曰赳:戏场锣鼓,筋节所关。当敲不敲,不当敲而敲,与宜重而轻,宜轻反重者,均足令戏文减价。” 同是一个[快长锤]锣鼓,变换演奏速度和力度(也包括音高),可用于不同的...

2025-08-02

京剧四大须生都是谁

四大须生,指四位著名的京剧老生表演艺术家。在京剧史上,有前四大须生和后四大须生的说法。而在前四大须生和后四大须生中马连良均榜上有名,因此,列名四大须生的著名京剧演员有七位,他们分别是:余叔岩、言菊朋、...

2025-08-02

京剧演唱中的十大禁忌

1、吃字:戏曲演员在唱念上,讲究口齿清楚,这样才能吐字真切,发音准确,把唱词或话白送入观众耳中。“吃字”即为咬字不清,犹如把字吃到肚子里一样,演员导致"吃字"的原因在于不能够正确的运用唇,齿,舌,牙,...

2025-08-02

董平能成为五虎将的原因

我们知道,梁山排定座次之后,就设立了很多小组,最著名的就是马军五虎将。分别是关胜,林冲,秦明,呼延灼,董平。但是通过上次的帖子,我们发现董平其实是没资格进入五虎的。今天我发现,让董平进五虎,是宋江玩弄...

2025-08-02

京剧台步:走出来的功夫

戏校每天有一堂课专门走台步,无论什么行当都必须练台步,这是基本功。假若连台步也走不好,怎么能唱戏呢?京剧讲究“四功五法”,“步”是其中很重要的一法。每个行当的台步都有自己的规范。 行当不同,台步就不同...

2025-08-02

公孙胜排名第四的原因

众所周知,梁山一百单八将虽以兄弟相称,但是其中党派林立,划分了许多阵营。这些阵营虽然不至于水火不容,却也绝对算不上和谐。在这些阵营中,对立最为明显的,则是晁盖旧部和宋江一党。 毕竟宋江取代的,是晁盖的...

2025-08-02

王安石寻笔的故事

王安石寻笔王安石听说李白有一支可以生长出花的笔之后,自己也想寻找一支这样神奇的笔,今天就给大家讲一个关于王安石寻笔的小故事。有一天王安石读书的时候从书里看到李白有一支可以生长出花的笔。他就去找他的老师...

2025-08-02

《游褒禅山记》原文及创作背景

《游褒禅山记》是北宋的政治家、思想家王安石在辞职回家的归途中游览了褒禅山后,以追忆形式写下的一篇游记。该篇游记因事见理,夹叙夹议,其中阐述的诸多思想,不仅在当时难能可贵,在当今社会也具有极其深远的现实...

2025-08-02

王安石小故事:不迩声色

不迩声色:王安石任知制诰时,王安石的妻子吴氏,给王安石置一妾。那女子前去伺候王安石,王安石问:“你是谁?”女子说自己是“家欠官债、被迫卖身”而来。王安石听罢,不仅没收她为妾,还送钱给她,帮助她还清官债...

2025-08-02