草庐IT

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

weixin_51641707 2023-04-09 原文

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内核 。

有关华为LiteOS操作系统基础知识入门与内核移植的更多相关文章

  1. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  2. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  3. 华为常用命令 - 2

    system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100

  4. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  5. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  6. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  7. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  8. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  9. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  10. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

随机推荐