有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 皋陶 于 2020-10-16 23:53 编辑
目录1 RTOS简述 2 常用实时操作系统概述 3 FreeRTOS简介 4 蜂鸟E203移植FreeRTOS 4.1 HBird-E-SDK中FreeRTOS程序代码结构 4.2 FreeRTOS原理和移植介绍 4.2.1 RTOS操作系统的基本原理 4.2.2 FreeRTOS源码解析和移植介绍 4.2.3 任务与中断的关系 4.3 运行FreeRTOS
1 RTOS 简述
实时操作系统(RTOS)是指当外界事件或者数据产生时,能够接受并以足够快的速度予以处理,处理的结果又能在规定的时间内来控制生产过程或对处理系统能够做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。主要特点是提供及时响应和考可靠性。 在服务器、个人电脑、手机上运行的操作系统,譬如Windows和Linux,强调在一处理器上能运行更多任务。此类操作系统的代码均具有一定规模,并且不一定能保证实时性。而对于处理器硬件资源有限,对实时性又有特殊要求的嵌入式应用领域,就需要一种代码规模适中,实时性好的操作系统。 实时性可以分为硬实时和软实时。硬实时的功能是必须在给定时间内完成操作,如果不能完成将可能导致严重后果。比如汽车安全气囊触发机制就是一个很好的硬实时的例子,在撞击后安全气囊必须在给定时间内弹出,如果响应时间超出给定时间,可能使驾驶员受到严重伤害。 对于软实时,一个典型的实例是IPTV数字电视机顶盒,需要实时的解码视频流,如果丢失了一个或几个视频帧,视频品质也不会相差多少。软实时系统从统计角度来说,一个任务有确定的执行时间,事件在截止时间到来之前也能得到处理,即使违反截止时间也不会带来致命的错误。
2 常用实时操作系统概述
常用的实时操作系统(RTOS)有以下几种:FreeRTOS、VxWorks、uc/os-II、uclinuxeCos、RT-Thread和SylixOS等。下面分别对这几种RTOS进行介绍说明。
SylixOS: — — 翼辉SylixOS实时操作系统是一款功能全面、稳定可靠、易于开发的国产实时系统平台。其解决方案覆盖网络设备、国防安全、工业自动化、轨道交通、电力、医疗、航空航天等诸多领域。SylixOS是国内唯一一款支持SMP的大型实时操作系统。翼辉开发嵌入式操作系统SylixOS始于2006年,至今在军工领域已有众多项目或产品基于SylixOS进行开发,例如雷达、弹载飞控系统、星载任务计算机、机载火控系统、计重收费与超限检测仪、火灾报警系统、特种车辆与船用发动机状态显示器、潜艇蓄电池监控系统、轮式装甲车实时监控系统等,其中大部分产品都要求7*24小时不间断运行,当前很多SylixOS系统节点已不间断运行超过5万小时(6年)。 RT-Thread: — — RT-Thread是一款主要由中国开源社区主导开发的开源实时操作系统(许可证GPLv2)。实时线程操作系统不仅是一个单一的实时操作系统内核,它也是一个完整的应用系统,包含了实时、嵌入式系统相关的各个组件:TCP/IP协议栈、文件系统、libc接口、图形用户界面等。RT-Thread拥有良好的软件生态,支持市面上所有主流的编译工具如GCC、Keil、IAR等,工具链完善、友好,支持各类标准接口,如POSIX、CMSIS、C++应用环境、Javascript执行环境等,方便开发者移植各类应用程序。商用支持所有主流MCU架构,如ARMCortex-M/R/A、MIPS、X86、Xtensa、Andes、C-Sky、RISC-V,几乎支持市场上所有主流的MCU和Wi-Fi芯片 FreeRTOS:
— — 有关FreeRTOS见第3章。 VxWorks: — — 由美国WindRiver公司于1983年推出的一款实时操作系统。由于其良好的持续发展能力,高性能内核以及友好的开发环境,因此在嵌入式系统领域占有一席之地。VxWorks由400多个相对独立、短小精悍的目标模块组成,用户可根据需要进行配置和裁剪,在通信、军事、航天、航空等领域应用广泛。 uc/os-II: — — 前身是uc/os,最早由1992年美国嵌入式专家Jean J.Labrosse在《嵌入式系统编程》杂志上发表,其主要特点有公开源代码,代码结构清晰明了,注释详尽,组织有条理,可移植性好,可裁剪,可固化。 Uclinux: — — 是由Lineo公司主推的开放源代码的操作系统,主要针对目标处理器没有存储管理单元的嵌入式系统而设计的。Uclinux从Linux2.0/2.4内核派生而来,拥有Linux的绝大部分特性,通常用于内存很少的嵌入式操作系统。其主要特点有体积小、稳定、良好的移植性、优秀的网络功能等。 eCos: — — 含义为嵌入式可配置操作系统,主要用于消费电子、电信、车载设备、手持设备等低成本和便携式应用。其最显著的特点为可配置性,可以在源码级别实现对系统的配置和裁剪,还可安装第三方组件扩展系统功能。
3 FreeRTOS 简介
由于RTOS需要占用一定系统资源,只有少数RTOS支持在小内存的MCU上运行,FreeRTOS是一款迷你型实时操作系统内核,功能包括:任务管理、时间管理、信号量、消息队列、内存管理等功能,可基本满足较小系统的需要。相对于VxWorks、uc/os-II等商业操作系统,FreeRTOS完全免费,具有源码公开、可移植、可裁剪、任务调度灵活等特点,可以方便地移植到各种MCU上运行,其突出的特性如下。
4 蜂鸟E203移植FreeRTOS
本节介绍如何在HBird-E-SDK环境下移植一个简单的FreeROTS示例。用户可以以此为基础进行丰富和完善,开发更多的复杂示例。 有关HBird-E-SDK环境的快速上手请参见《蜂鸟E203快速上手介绍》,有关HBird-E-SDK系统性的详细介绍请参见中文书籍《RISC-V架构与嵌入式开发入门指南》的第11章。
4.1 HBird-E-SDK中FreeRTOS程序代码结构
在HBird-E-SDK环境中,FreeRTOS示例程序的相关代码结构如下所示。
Makefile为主控制脚本,其代码片段如下:
4.2 FreeRTOS原理和移植介绍
由于RTOS需要占用一定系统资源,只有少数RTOS支持在小内存的MCU上运行,FreeRTOS是一款迷你型实时操作系统内核,功能包括:任务管理、时间管理、信号量、消息队列、内存管理等功能,可基本满足较小系统的需要。相对于VxWorks、uc/os-II等商业操作系统,FreeRTOS完全免费,具有源码公开、可移植、可裁剪、任务调度灵活等特点、可以方便地移植到各种MCU上运行。
4.2.1 RTOS操作系统的基本原理
传统裸机程序是一个大while循环,将所有事情看作一个任务,顺序执行代码,遇到中断发生则响应中断(可能发生中断嵌套),响应完中断后会继续之前被中断的任务,其过程如图4-1所示。
而在RTOS中,将所有事情分成各个模块,每一个模块的内容看作一个任务,任务的执行顺序是灵活的,根据相应的调度算法管理任务的运行,灵活性比裸机程序强,其过程如图4-2所示。 FreeRTOS中的调度算法分为时间片调度算法和抢占式调度,在FreeRTOS的FreeRTOSConfig.h文件中配置如下:
即使不配置configUSE_TIME_SLICING为1,FreeRTOS也会默认开启时间片调度。时间片调度算法和抢占式调度的特点简述如下:
4.2.2 FreeRTOS源码解析和移植介绍
在HBird-E-SDK环境中,FreeRTOS源代码和蜂鸟E203移植相关的代码结构如下所示。
如上所示,FreeRTOS的代码层次结构分明,用户只需要修改三个文件名为“port*”的源代码,完成基本的中断和异常的底层移植,即可完成对于FreeRTOS的移植。
蜂鸟E203移植FreeRTOS操作系统时,实现固定时间切换任务的操作由内核自带的mtime计时器中断支持,可以设置为每隔一个固定的时间段发生一次计时器中断(称之为System Tick),在中断处理函数中进入调度器切换下一个任务。在port.c文件中mtime计时器设置代码如下:
更多移植代码详情,请用户自行参见三个文件名为“port*”的源代码。
4.2.3 任务与中断的关系
FreeRTOS的任务和中断的优先级关系是移植FreeRTOS的难点,需要被正确的理解,否则程序会运行出错:
关于FreeRTOS的任务优先级和中断优先级如何设置,以及FreeRTOS的更多详细信息,请用户自行查阅相关FreeRTOS手册学习。
4.3 运行FreeRTOS
FreeRTOS示例可运行于HBird-E-SDK环境中,使用《蜂鸟E203快速上手介绍》中描述的运行方法按照如下步骤运行:
- make software PROGRAM=FreeRTOSv9.0.0NANO_PFLOAT=0
复制代码
- make upload PROGRAM=FreeRTOSv9.0.0
复制代码
// 由于示例程序将需要通过UART打印结果到主机PC的显示屏上。参考《蜂鸟E203快速上手介绍》所述方法将串口显示电脑屏幕设置好,使得程序的打印信息能够显示在电脑屏幕上。由于步骤二已经将程序烧写进FPGA开发板的Flash之中,因此每次按MCU开发板的RESET按键,则处理器复位开始执行FreeRTOS程序,并将RISC-V字符串打印至主机PC的串口显示终端上。
关于FPGA原型开发板的具体内容可参见: 蜂鸟FPGA开发板和JTAG调试器介绍
文章回顾
此篇为《蜂鸟FPGA开发板全知道篇4:移植FreeRTOS》。
文章回顾:
完
|