华为LiteOS *** 作系统基础知识入门与内核移植

华为LiteOS *** 作系统基础知识入门与内核移植,第1张

LiteOS *** 作系统是华为在2015年发布的一个轻量级的面向物联网的 *** 作系统,同时也是华为物联网1+2+1物联网解决方案的组成部分,此 *** 作系统具备零配置,自发现,自组网的特点,让LiteOS的终端物联能够自动接入支持的网络,使得硬件开发变得更加简单,对于开发者来说也有很强的便利性。本文章将对LiteOS *** 作系统基本结构及应用场景进行简单介绍,最后介绍如何移植LiteOS内核。

1. LiteOS内核结构简介

HUWEI LiteOS内核结构如图所示,其内核主体可分为硬件抽象层,基础内核和扩展内核,其中基础内核中的极小内核是LiteOS *** 作系统能够裁剪的最小单位,包括任务管理、内存管理、中断管理、异常管理和系统时钟等功能,可裁剪部分则包括信号量、互斥锁、队列管理、事件管理、软件定时器等。而除了基础内核,Huawei LiteOS还提供了扩展内核,包括C++支持、动态加载、低功耗以及维测模块。低功耗通过支持Tickless机制、run-stop休眠唤醒,可以大大降低系统功耗。维测部分包含了获取CPU占用率、支持串口执行Shell命令等功能。除此之外,LiteOS也具有云端协同的能力,集成了全套IOT协议,LwM2M、CoAP、mbedtls、LwIP等。

2. 应用场景举例

基于其可裁剪型强,对MCU环境适配性强等优势,LiteOS在多个领域都得到了广泛应用

在家居领域,华为推出了华为HiLink智能家居解决方案,该方案结构图如图所示

 从图中看,该方案主要由HiLink SDK,智能设备,HiLink智能路由,云平台,手机APP及互联协议组成;整体的运作流程是,生态伙伴产品硬件内部已经安装了HiLink SDK及LiteOS内核,基于内核含有的通信协议(Zigbee,NBioT)等,与HiLink智能路由产生联系,生态伙伴产品通过智能路由组网与APP和家庭云互传信息,以达到智能家居的效果。

而LiteOS在这套智能家居应用场景使用中主要有以下优势:1.通过优化网络层和系统底层的互联互通协议,既降低了产品使用时间延迟,也提高了家居产品与网络连接的稳定性和可靠性。2.与手机其他传感设备建立连接,例如话筒等,通过语音识别等其他识别方式使得客户可以不止通过APP,也可以通过语音 *** 作其他方式,在手机灭屏的情况下对智能家居进行控制。

另一个应用场景举例是华为的华为智能停车方案,华为智能停车方案是为了解决传统停车中出现的人工管理,施工难度大,运维复杂,车主体验差,收费混乱等问题而提出的智能停车方案,其系统图如下所示

 这套基于NB-IOT的智能停车方案,通过在停车地点设置停车传感器和NB-IOT模组,将停车信息经由基站中转,上传到IOT平台,在云端自动对停车业务进行监督管理,最后在用户的手机端(APP)诱导用户进行 *** 作(支付停车费用,提醒时间等)。

LiteOS在这套方案中的主要作用和优势是1.增加了终端更多的停车功能(相较于以前终端只有单一判断是否在停车位上)2.轻量级的能量消耗使得停车终端电源的更换周期变长,且无需布线,安装简单,适合量产3.支持自动升级固件和服务算法,应用等。

3. LiteOS系统的移植

对于LiteOS这样的物联网 *** 作系统,由于其专用性较强,在移植时没办法适配所有型号的开发板,因为不同开发板的外设和芯片类型上存在差异。

目前LiteOS主要支持ARM Cortex-M0,Cortex-M3,Cortex-M4,Cortex-M7,Cortex-A等系列的芯片架构。因此在选择移植的硬件环境上,可以选择STM32系列的单片机开发板。

而移植的软件环境搭建,首先需要STM32CubeMX软件,STM32CubeMX是ST意法半导体公司开发的一款图形化开发工具,根据选择的STM32开发板型号,自由地为使用者提供配置相应开发板引脚,时钟频率等功能的选项,根据配置结果生成C语言的裸机工程文件。

生成裸机工程文件的主要原因是我们需要使用裸机文件中的硬件配置和外设驱动文件,并对开发板进行测试。而在首次生成裸机工程的过程中,主要是对STM32开发板的时钟,串口,LED引脚,定时器,烧录方式这些基础性功能进行配置,以便验证裸机工程能否正常运行在开发板上。

同时我们也需要LiteOS Studio软件及配套辅助的git工具、make构建软件、arm-none-eabi编译器软件、C/C++扩展、JLink烧录软件、USB转串口驱动等,LiteOS Studio是LiteOS集成开发环境,一站式开发工具,支持C、C++、汇编等语言,是开发过程中主要的烧录工具。以上具体 *** 作步骤都可以在gitee上的LiteOS仓库找到。

我们在生成好裸机文件之后,改写裸机工程中的main函数,写入LED闪烁代码,随后就可以使用LiteOS Studio对裸机工程进行编译,通过Makefile文件中的依赖关系,最终生成.hex和.bin格式的可执行文件。如图所示

 

通过JLink烧录工具将裸机程序收录进开发板中,烧录完成后重启开发板,就可以观察到LED灯光闪烁的现象。

调试好裸机文件之后,便可以着手将LiteOS *** 作系统编译移植进开发板了,首先我们下载LiteOS源码(在gitee,GitHub上都可以找到),找到源码下的target目录,target目录里面存储着目前所有LiteOS支持的所有种类开发板的裸机文件,如果这些文件中没有目前使用的开发板型号,那么我们就需要基于裸机工程进行以下 *** 作:

增加新移植开发板的目录。

适配新开发板的外设驱动和HAL库配置文件

配置系统时钟。

适配定时器初始化文件。

添加GPIO初始化文件。

适配串口初始化文件。

修改链接脚本。

适配编译配置。

具体 *** 作可以参考gitee上的步骤

在完成上述配置后,通过编译和烧录,验证移植后的LiteOS源码,验证方法与裸机文件的烧录相同。在验证结束后,将编译生成的Huawei_LiteOS.bin文件烧录进开发板,可以观察到串口输出为

证明烧录成功,硬件平台已经移植了LiteOS内核 。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/757683.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-01
下一篇 2022-05-01

发表评论

登录后才能评论

评论列表(0条)

保存