用户名密码 太空模具网  | 宇宙五金网 | 星星电子网| 银河汽车网 | 人才频道 | 技术休闲
 
 
数控系统 变频器 软件 伺服系统
机床附件 仪器仪表 机床刀夹具
拉床 锯床
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  • 广告三
  • 广告四
  • 广告五
  • 广告五
  • 广告三
  • 广告四
当前位置: 首页 > 新闻频道 > 专业论文 >
开源LiteOS在嵌入式系统的应用
来源:湖南工商大学 作者:谭平 李桂梅 周开军 王莉 何静   发表时间:2020/12/29 8:34:00  浏览次数:
【字体:
 
摘要:LiteOS是一款开源轻量级的国产实时操作系统,由华为公司针对物联网应用而开发的,可以广泛应用于智能家居、个人服饰、车联网、城市公共服务、制造业等领域,不仅能够大幅降低设备布置及维护成本,还能有效降低开发门槛、缩短开发周期。本文将LiteOS应用到嵌入式系统实验教学中,在教学过程中提倡并鼓励学生在实际开发中采用国产LiteOS。同时通过实验教学,激发学生对嵌入式系统实验课程以及操作系统理论课程的兴趣,加深学生对抽象知识的理解,达到良好的教学效果。

关键词:LiteOS;嵌入式系统;实验教学

现有的国产嵌入式实时操作系统有多种,如RTThread、DJYOS(都江堰操作系统)、LiteOS等。其中,LiteOS作为华为推出的一款轻量级实时操作系统,已广泛应用于很多领域,不仅能大幅降低设备布置及维护成本,还能缩短开发周期[1]。本文通过在嵌入式系统教学中引入LiteOS介绍与应用,一方面有利于推广国产实时操作系统,另一方面能够使学生对嵌入式系统课程以及操作系统理论课程产生兴趣。

1LiteOS简介

LiteOS是华为在2015年华为网络大会上发布的面向物联网领域的轻量级实时操作系统,遵循BSD-3开源许可协议。LiteOS联合业界主流MCU厂家,通过开发者活动,目前已经适配了30多款通用MCU开发套件。LiteOS操作系统包括内核(Kernel)和开发工具包(SoftwareDevelopmentKit,SDK)两部分。其中,LiteOS内核Kernel是LiteOS操作系统基础内核,包括任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理和定时器等操作系统基础组件,可以单独运行。该内核非常小,基础内核体积可以裁剪至不到10KB,具有高实时性、高稳定性、低功耗等特点,并且支持功能静态裁剪。而开发工具包LiteOSSDK包括端云互通组件、FOTA、JS引擎、传感器框架等内容。华为推出了LiteOS开发网站,提供LiteOS的入门介绍进阶指南、移植操作指南、开发者论坛等,相关知识内容可以参考网址:。

2LiteOS的常用模块说明

LiteOS内核分为任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理和定时器等操作系统基础组件,每个组件模块都提供相关功能函数。本文对常用组件模块进行简单介绍。LiteOS的任务模块可以给用户提供多个任务,实现了任务之间的切换和通信,能够帮助用户管理业务程序流程,从而用户可以将更多的精力投入业务功能的实现中。任务主要包括就绪态(Ready)、运行态(Running)、阻塞态(Blocked)、退出态(Dead)。其关系如图1所示。相应的该模块有一系列函数完成任务的创建(LOS_TaskCreate)、删除(LOS_TaskDelete)、状态控制(LOS_TaskResume、LOS_TaskSuspend、LOS_TaskYield)以及优先级配置(LOS_TaskPriSet)等函数。LiteOS对每一个优先级的任务使用一个链表,当任务需要切换时,则从g_pstLosPriorityQueueList高优先级任务队列开始查找需要执行的任务。LiteOS为不同任务之间提供消息队列来实现数据的交互,每个任务只能读取一个消息队列。消息队列的主要函数包括创建消息队列(LOS_QueueCreate)、删除消息队列(LOS_QueueDelete)、读消息队列(LOS_QueueRead、LOS_QueueReadCopy)和写消息队列(LOS_QueueWrite、LOS_QueueWriteCopy)等。任务同步可以通过事件Event实现,一个任务可以等待多个事件的发生:可以是任意一个事件发生时唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒任务进行事件处理。注意,事件通信只能是事件类型的通信,事件不提供任务间的数据传输功能。相关函数有事件初始化(LOS_EventInit)、清除事件(LOS_EventClear)、读取事件(LOS_EventRead)、写事件(LOS_EventWrite)。LiteOS的消息队列和事件都支持超时机制,当出现超时情况后,任务会有两种极限情形:立即响应和用于等待。LiteOS在处理共享资源时可以采用信号量或互斥锁方式。信号量(Semaphore)可以实现任务之间同步或临界资源的互斥访问,常用于协助一组相互竞争的任务来访问临界资源。在多任务系统中,各任务之间需要同步或互斥实现临界资源的保护,信号量功能可以为用户提供这方面的支持。信号量相关函数有:信号量的创建(LOS_SemCreate)、信号量删除(LOS_SemDelete)、信号量申请(LOS_SemPend)和信号量释放(LOS_SemPos)等。互斥锁又称互斥型信号量,是一种特殊的二值性信号量,用于实现对共享资源的独占式处理。任意时刻互斥锁的状态只有两种,即开锁或闭锁。当有任务持有时,互斥锁处于闭锁状态,这个任务获得该互斥锁的所有权。当该任务释放时,该互斥锁被开锁,任务失去该互斥锁的所有权。当一个任务持有互斥锁时,其他任务将不能再对该互斥锁进行开锁或持有。它的操作函数有:创建互斥锁(LOS_MuxCreate)、删除互斥锁(LOS_MuxDelete)、互斥锁申请(LOS_MuxPend)和互斥锁释放(LOS_MuxPost)等。

3LiteOS在单片机原理教学中的应用举例

LiteOS提供了一些Demo程序,可以供入门者学习。本文首先介绍利用LiteOS的任务和软定时器实现LED闪烁的例子,方便大家了解LiteOS的使用方法,然后设计一个结合LiteOS的变声处理系统。由于该实验可以实时呈现变声效果,能较大程度激发学生的学习兴趣。

3.1基于LiteOS任务的LED闪烁实验

Blinky_demo是一个基于LiteOS简单任务的LED闪烁程序。该程序创建了1个队列消息、1个任务和2个软件定时器。其中,两个软定时器Time1和Timer2,分别按照间隔1000ms和500ms向消息队列发送消息,其中Timer1发送消息指令100,而Timer2发送消息指令200。这里发送消息是通过定时器的回调函数实现,当定时器的时间到了,定时器将启动回调函数,回调函数向消息队列发送相应的消息指令。而LED闪烁任务接收消息队列的信息,如果是消息指令是100,则控制LED1闪烁,如果是200,则控制LED2闪烁,如果没有获得消息,该任务则阻塞。其具体代码可查看。这个实验中主要让学生了解LiteOS中任务、消息队列、软定时器的概念,同时熟悉任务的状态变化以及消息队列的使用方法。

3.2基于LiteOS的变声处理实验

变声处理实验涉及数字信号处理以及语音信号处理中的相关内容。该实验的声音采集传感器采用驻极体声音传感器和Max9814放大器实现,通过STM32F407上的12位ADC实现模数转换得到音频数据,进而将音频数据进行变声处理,然后再通过DAC变成模拟信号驱动喇叭播放变声后的声音。该实验总共包括4个任务,分别是ADC采集音频数据任务、变声处理任务、DAC播放音频数据任务以及数据上传任务。这里的数据上传任务是将ADC采集的原始数据和变声后的数据通过串口上传给电脑,这样做的目的主要是方便在电脑进行算法的仿真、调试以及比较。变声的原理是采用幅度调制方式,即通过幅度调制,将声音的频率调制到fmod处,从而实现变声功能。其实现如式(1)所示:y[n]=x[n]·sin{2π·(fmod/fs)·n}(1)其中,x[n]是采集的音频数据,y[n]是变声后的数据,fs是采样频率,n是样本的时间索引,fmod是调制频率。为了保证任务之间的数据同步,采用2个消息队列和一个事件Event。这个实验的流程结构如图2所示。其中,ADC音频采集任务的实现过程为:单片机设置ADC为8KHz采样频率,ADC采集的数据通过DMA保存在缓存区,该缓存区采用乒乓结构,当其中一个缓存区数据满了,ADC音频采集任务就读取数据并通过消息队列1发送给变声处理任务。变声处理任务的过程为:读取队列消息1中的消息数据,按照公式1对数据进行处理,处理后的数据通过消息队列2发送给声音播放任务;同时原始数据和处理后的数据保存到上传数据缓冲区,通过写事件Event通知数据上传任务传输数据。DAC声音播放任务读取消息队列2中的消息数据,并把该数据通过DAC按照8KHz输出。而数据上传任务在读取Event后,将上传数据缓冲区的数据通过串口发送给电脑。图2音频变声实验流程结构这里需要注意,由于数据上传采用共享缓冲机制,因此需要利用互斥量来协调资源访问。变声处理程序必须先申请互斥,然后才能往共享缓冲区写数据,写完之后释放互斥,最后再写事件,告诉数据上传任务可以上传数据了。而上传任务在发送数据时,也必须申请互斥,等待数据上传之后才能释放互斥量。程序运行后,当人对着声音传感器说话时,可以从喇叭处听到变声之后的语音,从而达到实验目的。

4结语

本文对LiteOS做了简单介绍,并将LiteOS应用到《嵌入式系统与应用》课程的实验教学中。在教学过程中,提倡并鼓励学生在实际开发中采用国产LiteOS,扩大国产实时操作系统的用户人群,为国产实时操作系统的发展尽一份力。LiteOS还有许多其他有意思的工程应用,在后续工作中将进一步应用在嵌入式系统的实验教学中,激发学生对嵌入式系统实验课程以及操作系统理论课程的兴趣。

参考文献

[1]梁瑞宇,王青云,赵力.嵌入式语音信号处理实验系统的设计与实现[J].实验室研究与探索,2017,36(5):126-130.

最新新闻
热点新闻
相关主题    Related Subjects
 开源LiteOS在嵌入式系统的应用  纽约大学展示低成本的Solo 8开源四  谷歌云牵手全球7家开源公司 力抗亚马逊
 一个开源开放的SAP,会给业界带来什么  意法半导体推出新款STM8 Nucle  Comma.ai发布Openpilot
 开源可自制的双波长激光切割机Laser  将开源进行到底 中国开源工业PaaS协  以生态之名,浪潮与Odoo合资研发的首
 建立开源生态圈,让仪器更简单  Google发布可用于机器人、无人机的  微软开源Malmo AI平台 构建复杂
 微软拥抱开源:向Linux虚拟机管理者  美国资助激光金属增材制造开源算法  苹果宣布开源 ResearchKit
 微软计划做开源Windows系统  英特尔下周推出开源的3D印刷机器人  宋华振:开源技术将为国产控制系统发展注
 中马机器人:开源节流两不误  无锡开源机床面对市场形势实行结构调整  开源机床下半年销售额将超过1.66亿元
 无锡开源机床集团积极应对市场变化  扬州锻压机床开源节流创佳绩  开源集团科技创新加快信息化与工业化融合
 开源机床庆祝六十大寿  开源机床在轴承展上展风采  开源机床“3MZ3310A自动轴承内圈
 无锡开源机床集团公司产品首次打入德国市  重组后的无锡开源集团泰兴公司首批机床下  重组后无锡开源集团泰兴公司首批机床下线
中国数控机床网   关于本网 -服务中心-投稿信箱- 联系我们-使用帮助-投诉举报-会员服务区-实用数据-友情链接
Copyright©2003-2020 中国数控机床网 www.c-cnc.com All Rights Reserved
客户服务热线: 958509424 dejicnc789