0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于开源RTOS的Chibios评测

嵌入式IoT 来源:嵌入式IoT 作者:嵌入式IoT 2020-10-10 09:41 次阅读

一个开源的RTOS的Chibios的评测

1.Chibios介绍

1.1 chibios是什么?

1.2 chibios的特点

2.chibios的工程组织

2.1 ChibiOS/RT

2.2 ChibiOS/NIL

2.3 ChibiOS/LIB

2.4 ChibiOS/SB

2.5 ChibiOS/HAL

2.6 ChibiStudio

3.RTOS设计思想浅析

3.1 中断处理

3.2 系统状态

3.3 调度机制

3.4 线程工作空间

4.在树莓派上真实体验效果

5.总结

1.Chibios介绍

1.1 chibios是什么?

chibios的作者是Giovanni Di Sirio。chibi这个名称在日语是小孩的意思,所以ChibiOS (ちびOS)也被可以理解成小型的操作系统。官网链接如下:

http://www.chibios.org/dokuwiki/doku.php

ChibiOS / RT于2007年9月份在SourceForge公开发布。由于作者对当时现有的RTOS的不满,所以写了这个系统,作者心目中的RTOS应该是:

优雅

快速

静态的

这些也是chibios的核心思想与系统的特点。所以专注于代码的优美性和一致性,以及内存的静态使用、确定性、强大的抽象功能,都是这个系统关键的特性。

1.2 chibios的特点

随着芯片性能和功能的不断完善,资源的管理也变得十分复杂。就目前来说,已经出现了很多的嵌入式操作系统来进行这些资源的管理和使用。现在来分析一个GPL3协议的开源RTOS,chibios的使用。ChibiOS/RT是为了8、16和32位微控制器而设计的。该RTOS其内存的占用和运行效率是项目至始至终优化的方向。

STM32(Cortex-M3,72MHz)上,一个典型的ChibiOS/RT实例会占用1.2kB到5.5kB的空间。内核每秒可以创建和终止220000多个线程,而且能在1.2微秒内完成一次线程切换。随着每一个架构移植的发布,ChibiOS的性能测试数据都会被照例公布。

ChibiOS/RT的小型内核支持:

抢占性多任务

128个优先级

同优先级线程按照时间片轮转调度

软件定时器

计数信号

支持优先级继承的自旋锁

同步和异步信息,以及消息队列

事件标志和处理函数

支持的同步I/O和带超时的异步I/O

线程安全的堆或内存池分配器

支持多种底层硬件的硬件抽象层

支持lwIP和uIP协议栈

支持FatFS文件系统

所有的系统对象,比如线程、信号量等都能在运行时创建或者删除。除了可用内存的限制之外没有内核对象创建数量上限。为了增强可靠性,整个内核本身是静态编译的,并且不需要一个动态内存分配器;内核中也没有表或者数组的上限。整个系统的API设计中不包含诸如错误码或者异常一类的错误状况。

2.chibios的工程组织

一个chibios的工程主要包含以下几个独立的工程,分别为RT、NIL、OSLIB、SB、HAL、EX、ChibiStudio。下面我们来单独叙述每个部分的功能和作用。

2.1 ChibiOS/RT

该设计是为功能完备的RTOS设计的,出发点在于性能完善和代码量大小合适。

主要的特点:

高性能

静态的体系结构

强大的调试功能

代码库清理

与CMSIS RTOS的兼容性比较好

2.2 ChibiOS/NIL

NIL的设计思想是适合资源非常小的设备。

主要的特点:

系统很小,最小配置可以在低于1KB的ram上运行。

小的内存管理,小的线程,信号量管理

全静态的架构

2.3 ChibiOS/LIB

作为一个额外的库,可以被ChibiOS/RT与ChibiOS/NIL共同使用,是操作系统的扩展功能。主要的功能如下:

1.二值信号量

2.邮箱

3.fifo

4.动态线程

5.内存堆管理

6.内存池管理

2.4 ChibiOS/SB

该扩展主要是针对 Cortex-M3, M4 and M7内核。其主要的作用是可以让应用独立的运行在一个沙盒里。

这种沙盒应用是支持两种,一种是静态的内存,一种是动态的内存。

2.5 ChibiOS/HAL

系统的硬件抽象层,该抽象层可以让系统和驱动进行很好的对接,应用程序使用起来更加容易。主要特定:

将硬件抽象出来,应用程序可以不用管驱动的具体实现

支持大多数的MCU外设

能够支持RT和NIL

方便移植

2.6 ChibiStudio

一个基于ARM的开发环境的IDE,支持编译、下载和运行。

3.RTOS设计思想浅析

要想弄清楚这个系统的功能,就必须理解RTOS的核心。下面从中断处理、系统状态、调度,工作空间四个方面来理解Chibios。

3.1 中断处理

在Chibios中,有三种类型的中断。

Regular Interrupts:也就是定期中断,这种中断模式下,可屏蔽的中断源不能被抢占,但是需要按照特定的规则来编写这种中断的处理函数。

Fast Interrupts:可以快速相应的中断,可抢占资源。

Non Maskable Interrupts:系统中正常的中断处理。

在RTOS中,比较关键的地方就是确定性与稳定性。确定性一般就是表示处理中断的时间尽可能短而且时间可预测,一定程度上,中断响应时间也是评判一个RTOS的性能的重要指标。

3.2 系统状态

系统RTOS在使用时,每个线程都会处于各种状态。用下面的一张图例来进行表示:

Init:系统初始化阶段,这个阶段中,所有可屏蔽的中断都无法响应。当系统处于该状态时,除了chSysInit()可以被调用,其他的API都无法被使用。

Normal:正常状态,当前状态下所有的系统中断可以响应,并且线程正常的运行。

Suspended:系统挂起状态,这种状态下,只有FIQ可以响应,普通的中断不能响应,并且不能使用chSysDisable()或chSysEnable()之外的任何系统API来更改状态。

Disabled:系统处于该状态时,所有的中断都不能被响应,无法使用chSysSuspend()或chSysEnable()之外的任何系统API来更改状态。

Sleep:与体系架构相关的低功耗模式,空闲线程进入该模式后,等待事件重新唤醒变成Normal状态。

S-Locked:内核已锁定,常规中断源已禁用。快速中断源使能。在这种状态下可以调用S类和I类API。

I-Locked:内核被锁定,常规中断源被禁用。I-Class API可从此状态调用。

SRI:全称为Serving Regular Interrupt,不能访问任何系统API,但是可以使用chSysLockFromIsr()切换到I-Locked状态,然后调用任何I-Class API。中断处理程序在某些体系结构上可以抢占,因此在调用系统API之前切换到I锁定状态非常重要。

3.3 调度机制

在理解调度机制之前,先看看线程的状态。

基本上在大部分的RTOS的设计上,线程的状态都是这些。在执行调度策略的时候,也是非常简单,就是将高优先级的线程挂载在调度器的双向链表上,按照优先级的高低进行,数字越小,优先级越低。

如果有同等优先级,则按照时间片轮循的方式进行。

3.4 线程工作空间

和其他RTOS类似,线程都会有字节的栈空间。

系统进行抢占时,会进行当前线程的压栈和需要执行的线程的出栈操作。

4.在树莓派上真实体验效果

说再多也不如真机上进行测试得到的感悟更加的深刻。现在为了体验效果,可以在树莓派2/树莓派3上进行测试。目前为了方便调试,先采用qemu进行模拟仿真。在qemu上运行的程序再移植到真实的树莓派硬件上,基本上问题不大。

本次的实验环境为Ubuntu18.04,需要安装配置好arm-none-eabi-gcc,以及安装好qemu。也可以在Windows环境中进行测试。

首先需要准备代码,当前的代码仓库在

https://gitee.com/bigmagic/ChibiOS-RPi

将代码clone出来后,进入ChibiOS-RPi/demos/ARM11-BCM2835-GCC目录,输入make开始编译代码。

编译完成后,可以看到在ChibiOS-RPi/demos/ARM11-BCM2835-GCCuild目录生成了ch.elf文件以及ch.bin文件。如果要在真机上运行,可以将ch.bin修改成kernel.img,然后下载

https://gitee.com/bigmagic/raspi_sd_fw/tree/master/raspi3/raspi3-32/sd_boot_rtt

中的文件,将kernel7.img删除,并且将kernel.img放入。将这些文件放到SD卡中即可。通过串口可以看到输出信息。

在qemu上运行的时候,只需要输入

qemu-system-arm-Mraspi2-m1024M-smp4-serialnull-serialstdio-kernelch.elf

这样就可以在屏幕上看到Chibios的控制台了。

当出现控制台界面时,输入info可以看到当前硬件信息。

5.总结

本文简单的介绍了一下Chibios的基本情况和在树莓派上运行该系统。从RTOS的角度上来说,该rtos的设计思想值得学习。其实看一个RTOS的优劣好坏,不仅仅在于使用的是否上手容易,而在于系统的设计是否友好,是否稳定,也需要有足够的性能。做嵌入式底层开发和做RTOS开发,不应该只是局限于使用一个RTOS,也不应该只关注上层的业务逻辑。一个好的应用,必须是有足够的深度和高度,不断的优化设计。当前,有许多的RTOS可以被使用,有很多系统都有自己值得学习和研究的地方。因为嵌入式RTOS的灵活性很大,不同的业务场景也需要不同的需求,或者每个系统都会有其行业的特殊性,但是万变不离其宗,了解各个系统的特性,是很值得去学习的。

Chibios的一些具体的细节我还没有研究的很深刻,我觉得sandbox是一项很有意思的功能,将系统的应用程序独立的在空间中运行,这就很值得去看。另外这个系统的主要还是应用在小的单片机上,我现在还没有实际的数据去展示,等一段时间后,可以看看这个系统的评测结果。

责任编辑:YYX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6743

    浏览量

    123196
  • STM32
    +关注

    关注

    2266

    文章

    10875

    浏览量

    354879
  • 开源
    +关注

    关注

    3

    文章

    3256

    浏览量

    42411
  • RTOS
    +关注

    关注

    22

    文章

    809

    浏览量

    119441
  • 树莓派
    +关注

    关注

    116

    文章

    1699

    浏览量

    105531

原文标题:一个开源的RTOS的Chibios的评测

文章出处:【微信号:Embeded_IoT,微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Banana Pi BPI-R3开源路由器启动及性能评测

    Banana Pi BPI-R3开源路由器启动及性能评测
    发表于 02-01 16:32

    有用过chibios实时系统的吗?求助 求教

    有用过chibios实时系统的吗?求助 求教
    发表于 05-19 17:09

    开源RTOS怎么选择

    这么多开源RTOS,怎么知道哪个适合我的项目?
    发表于 04-17 08:09

    关于鸿蒙os的开源程度。 开源到什么程度,是100%开源吗?

    想了解下关于鸿蒙os的开源程度。 开源到什么程度,是100%开源吗?
    发表于 09-22 11:15

    有用过chibios实时系统的吗?求助 求教

    有用过chibios实时系统的吗?求助 求教
    发表于 03-25 11:19

    关于RTOS编写要解决哪些核心问题呢

    SysTick的作用有哪些?关于RTOS编写要解决哪些核心问题呢?
    发表于 11-29 06:52

    开源RTOS在STM32单片机中的应用

    开源RTOS在STM32单片机中的应用
    发表于 09-25 09:50 20次下载
    <b class='flag-5'>开源</b><b class='flag-5'>RTOS</b>在STM32单片机中的应用

    如何选择适合自己的开源RTOS

    选择适合自己的开源RTOS
    的头像 发表于 03-12 11:44 2713次阅读

    在免费开源爆炸的时代之下,你如何选择一款RTOS

    资深21ic网友从头到脚表示,现在RTOS真的非常多,有开源的、有封闭的、有免费的、有收费的,如此繁杂的市场之下,他发表了自己如何选择免费RTOS的看法
    的头像 发表于 03-11 14:18 3803次阅读

    市面上使用率较多开源RTOS的具体内容

    目前市面上的开源协议有很多种,比如:GPL、BSD、MIT、Mozilla、Apache 和 LGPL等。 选择RTOS,通常会考虑开源、市场占有率、配套资料和例程,以及配套组件等,市面上使用率较多
    的头像 发表于 05-11 14:06 3494次阅读
    市面上使用率较多<b class='flag-5'>开源</b><b class='flag-5'>RTOS</b>的具体内容

    TencentOS-tiny 正式开源,全网首发评测,带你极速上手体验!

    文末有体验心得和RTOS比较,赶时间的小伙伴可以直接拉到文末哦~1. TencentOS-tiny 正式开源国产 RTOS 如雨后春笋般诞生的今天,腾讯于昨日正式开源发布了自己的物联网
    发表于 12-07 13:51 14次下载
    TencentOS-tiny 正式<b class='flag-5'>开源</b>,全网首发<b class='flag-5'>评测</b>,带你极速上手体验!

    RT-Thread全球技术大会:什么是RTOS关于开源RTOS的3个阶段

    RT-Thread全球技术大会:什么是RTOS关于开源RTOS的3个阶段             审核编辑:彭静
    的头像 发表于 05-27 11:00 1337次阅读
    RT-Thread全球技术大会:什么是<b class='flag-5'>RTOS</b>?<b class='flag-5'>关于</b><b class='flag-5'>开源</b><b class='flag-5'>RTOS</b>的3个阶段

    Zephyr RTOS和HC-SR04超声波传感器开源

    电子发烧友网站提供《Zephyr RTOS和HC-SR04超声波传感器开源.zip》资料免费下载
    发表于 06-20 09:44 0次下载
    Zephyr <b class='flag-5'>RTOS</b>和HC-SR04超声波传感器<b class='flag-5'>开源</b>

    Arduino的现代RTOS和状态机开源分享

    电子发烧友网站提供《Arduino的现代RTOS和状态机开源分享.zip》资料免费下载
    发表于 06-27 14:57 0次下载
    Arduino的现代<b class='flag-5'>RTOS</b>和状态机<b class='flag-5'>开源</b>分享

    freertos和rtos区别是什么

    FreeRTOS 和 RTOS(实时操作系统)是两个不同的概念,但它们之间有紧密的联系。FreeRTOS 是一个特定的开源实时操作系统,而 RTOS 是实时操作系统的一般概念。 概念定义 RT
    的头像 发表于 09-02 14:18 975次阅读