华为LiteOS操作系统基础知识入门与内核移植
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操作系统基础知识入门与内核移植相关推荐
- 学习笔记:Java 并发编程①_基础知识入门
若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 视频下载: ...
- 2022最新知识,一步一步学习C语言基础知识入门(图例解析)
一.C语言基础知识入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是 ...
- Linux操作系统基础知识学习
Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundation,FSF)的一个项目, ...
- C语言基础知识入门和C语言入门基础知识大全
一.C语言基础知识入门 C语言一出现,就以其丰富的功能.强大的表达能力.灵活性.方便性和广泛的应用,在世界范围内迅速普及和普及.C语言不仅高效而且可移植.它可以用来开发应用软件.驱动程序.操作系统等. ...
- 计算机和操作系统基础知识
-----------------------siwuxie095 计算机和操作系统基础知识 1.操作系统(Operating System,简称 OS),是管理计算机硬件与 软件资源的计算机程序,同 ...
- 计算机网络建设中涉及到哪些硬件,网络基础知识入门
网络基础知识入门 导语:随着计算机的广泛应用和网络的流行,我们应该要知道一些网络基础知识,下面是小编收集整理的网络基础入门知识,欢迎参考! 计算机网络是什么 这是首先必须解决的一个问题,绝对是核心概念 ...
- 【正点原子STM32连载】第五章 STM32基础知识入门 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...
- 渗透基础知识入门(自学笔记)
渗透基础知识入门 学渗透,要学的东西还是比较广,需要有一些基础知识作铺垫开始学,而且作为一个刚踏上学习道路不久的小伙子更应该在学习道路中不断补充更多基础知识,如编程语言,网络知识等,该篇笔记做一些基础 ...
- Linux(一)操作系统基础知识
Linux操作系统基础知识 1.Linux简介与程序开发环境 1.1 什么是Linux? Linux是一个可以自由发布的类UNIX内核实现,它是一个操作系统的底层核心.Linux是由芬兰赫尔辛基大学的 ...
最新文章
- 2019 ACM - ICPC 西安邀请赛 B. Product (杜教筛) 简单数论(bushi)
- NA-NP-IE系列实验13:使用子网地址
- hdu 2191 悼念512汶川大地震遇难同胞 【多重背包】(模板题)
- Linux环境下服务器 Tomcat war包部署步骤
- div中的table内容过多时不超出div的范围解决方法
- 论文浅尝 | 基于知识库的自然语言理解 02#
- Linux用户资源限制-ulimit
- web前端学习笔记(python)(一)
- webservices系列(三)——调用线上webservice(天气预报和号码查询)
- 端口状态 LISTENING、ESTABLISHED、TIME_WAIT、FIN_WAIT_2、CLOSE_WAIT、CLOSE_WAIT
- 玩转Metasploit系列(第二集)
- http抓包实践--(六)-fiddler抓包手机
- 【Android智能硬件开发】【010】安卓读写串口
- 导致页面布局混乱的几个元凶
- 黑客帝国中英文对照经典对白
- 金蝶K3案例实验实际成本前台操作
- C++中的同名二义性和路径二义性
- 计算机编程领域最伟大的20个发明
- 【可爱甜美圆嘟嘟的孩子壁纸】
- SVM算法实现(一)