[摘要]在万物物联的时代,嵌入式物联网设备的数量大幅增加。随着需求的不断提高,嵌入式物联网产品方案的设计灵活性应当得到足够的重视。来自华为的国产开源物联网实时操作系统LiteOS内核精简、安全性、实时性高。在移动物联网终端有着广泛的应用前景。本文介绍了一种基于SOPC平台的华为LiteOS的移植,对通过使用FPGA平台的芯片系统应用方案设计具有一定的参考价值。
本文源自王浩天; 汲伟明, 科技经济导刊 发表时间:2021-04-25
[关键词]实时操作系统;鸿蒙LiteOS;FPGA;移植
1.研究背景
实时操作系统,尤其是物联网操作系统是嵌入式物联网设备中不可或缺的组成部分。随着嵌入式物联网产品的需求复杂度的大幅提高,嵌入式系统的功能和智能化需求也随之增多,软件的复杂度不断提高。相较于直接操作底层硬件,嵌入式实时操作系统能够更合理、更有效地利用系统资源[1],其在方案制定和实现阶段有着低成本,短开发周期的特点。常见的嵌入式实时操作系统架构如图1所示。
另一方面,虽然网络传输技术正在不断进步,但受制于成本原因,在低成本方案上运用高性能网络传输模组的可行性较低,中低端嵌入式物联网产品方案通常网络带宽低,很难通云计算进行高效进行实时图像处理和采集作业,而使用自身的MCU实现方法速度较慢,丢帧现象普遍,很难满足速度、精度的要求[2]。
FPGA以其相对低功耗,高实时性,可重构性强等特点,非常适合芯片方案的设计和验证,而通过FPGA的逻辑电路对图像进行简单预处理,易于维护且高效[3]。
而基于FPGA的片上可编程系统(SystemonProgrammableChip,SOPC)以其灵活度高,可裁减的特点[4],非常适合用于物联网芯片的系统方案设计环节。
综上所述,在基于FPGA的SOPC中运行实时操作系统能够在兼具性能的同时对复杂软件和应用有良好的适应性,这些特性使得此种SOPC平台在嵌入式物联网产品的方案设计环节上有较好的应用前景。
2.华为鸿蒙LiteOS操作系统
2.1LiteOS系统结构特征
华为LiteOS是一个基于任务优先级抢占调度机制内核的操作系统。华为LiteOS整体遵从分层设计,自下而上可分为:内核层、系统服务层、框架层和应用层。系统功能按照:系统->子系统->功能模块,依次级展开。在不同的设备环节和使用场景下,华为LiteOS支持根据实际需求裁剪非必要的子系统或功能块。其基础内核最小可裁剪至10k,因此具有良好的可移植性。
2.2LiteOS进程机制
业内产生的物联网操作系统种类繁多,这其中包括AndroidThings,AmazonFreeRTOS,ThreadX等[5]。LiteOS与μC/OS-II类似,采用抢占式调度机制来控制内核进程,并通过为每个用户态进程分配独立的进程空间,使进程之间互不可见,以此实现进程间隔离[6]。
在LiteOS中,进程的状态主要有如图三所示的五种(阻塞和阻塞挂起同为一个进程态)。当进程创建后,LiteOS会为每一个进程分配进程空间,在该进程中只能操作自己进程空间的资源,无法操作除公共资源外的其他资源。在使用进程时,允许进程挂起,恢复,延时等操作,同时也可以设置某个进程调度优先级和调度策略。当进程结束的时候,进程会主动释放持有的进程资源,但该进程持有的pid资源需要通过父进程才能回收。LiteOS的进程状态转移如图四所示。
2.3LiteOS的进程优先级管理
进程是资源分配和独立运行的基本单位,是操作系统的核心概念[7]。LiteOS内核的进程模块可以提供多个独立进程,并实现了进程间通信和进程切换。LiteOS内核中的进程采用抢占式调度机制,支持时间片轮转调度方式和FIFO调度机制。LiteOS内核的进程一共有32个优先级(0-31),可被配置的进程优先级共有22个,其最高优先级为10,最低优先级为31。高优先级的进程可抢占低优先级进程,低优先级进程必须在高优先级进程阻塞或结束后才能被CPU调度。
3.片上可编程系统
SOPC(SystemonProgrammableChip,可编程片上系统),即用可编程逻辑技术将整个系统集成到一块芯片上。SOPC通常是指基于FPGA(Field-ProgrammableGateArray,现场可编程门阵列)的带1个或多个软核或者硬核微处理器以及一些外围设备的片上系统SoC(SystemOnChip)[8]。SOPC的优势在于其在设计过程中,能够快速高效地适应需求升级所带来的硬件变更,以达到缩短开发周期,降低开发成本的目的。目前,主流的嵌入式软核处理器有:NiosII处理器[9]和MicroBlaze[10]处理器以及ARM公司提供的软核。笔者根据LiteOS提供的可运行平台以及泛用性综合考虑,最终选择了使用ARM公司的Cortex-M3处理器。
4.物联网操作系统LiteOS在SOPC上的移植
本文移植的平台为来自Xilinx的ZYNQFPGA平台。在FPGA内部运行ARMCortex-M3内核,并在此内核上完成LiteOS的移植工作。与在传统MCU上移植操作系统不同,在SOPC上移植操作系统,需要先在FPGA上搭建移植平台的环境。
4.1基于FPGA的Cortex-M3软核的搭建
ARM公司的Cortex-M3软处理器(下称M3),具有低功耗、高性能、价格低的特点,因此在嵌入式方案设计领域得到了广泛的应用[11]。基于FPGA搭建的M3软处理器由于其自身软核的特点,拥有非常多的配置项。笔者使用Vivado工具对M3进行搭建,M3软处理器的配置如图5所示。由于在M3软处理器上移植LiteOS需要使用Keil进行在线调试和代码文件烧录,因此笔者在配置M3软处理器时,保留了JTAG端口和串行通信端口,并通过AXI总线与其他模块相连。M3内核拥有多达256个中断,笔者在此仅使用其中的76个。在2.1节中介绍了LiteOS的最小内核仅需10k的内存大小,因此这里给CM3内核分配256k的flash内存。M3软处理器搭建的示意图如图6所示。
4.2LiteOS在SOPC上的移植验证
为了验证LiteOS在SOPC上的移植情况是否成功,笔者在ZYNQ开发板上通过对LiteOS的单/多任务创建进行移植验证。在4.1节中,笔者在搭建Cortex-M3软核时,将串行通信端口保留,并通过FPGA的可编程引脚直接连接至开发板上的CH340芯片上。根据在2.2节中介绍了LiteOS的任务创建方式,在LiteOS中创建任务需要使用LOS_KernelInit函数对内核进行初始化,当初始化完成后,即可对任务进行初始化,并编写串行通信输出函数,最终在任务启动函数LOS_Start中启动任务。
通过对串行通信传输数据的获取可知,输出数据与程序内部预设数据相同,Cortex-M3软核已在LiteOS的控制下完成了单任务串口输出验证。
5.结语
本文介绍了华为LiteOS开源物联网实时操作系统的基本原理,并针对LiteOS于运行在SOPC上的Cortex-M3嵌入式软核的移植进行了说明。通过在LiteOS上运行的串行通信任务对LiteOS在SOPC上的运用方式进行了说明,取得一定的效果。对基于SOPC平台构建物联网系统的设计有一定的参考价值。
论文指导 >
SCI期刊推荐 >
论文常见问题 >
SCI常见问题 >