在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    6870

    瀏覽量

    123548
  • STM32
    +關注

    關注

    2270

    文章

    10920

    瀏覽量

    356912
  • 開源
    +關注

    關注

    3

    文章

    3391

    瀏覽量

    42623
  • RTOS
    +關注

    關注

    22

    文章

    818

    瀏覽量

    119789
  • 樹莓派
    +關注

    關注

    117

    文章

    1710

    瀏覽量

    105781

原文標題:一個開源的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 ?2788次閱讀

    在免費開源爆炸的時代之下,你如何選擇一款RTOS

    資深21ic網友從頭到腳表示,現在RTOS真的非常多,有開源的、有封閉的、有免費的、有收費的,如此繁雜的市場之下,他發表了自己如何選擇免費RTOS的看法
    的頭像 發表于 03-11 14:18 ?3888次閱讀

    市面上使用率較多開源RTOS的具體內容

    目前市面上的開源協議有很多種,比如:GPL、BSD、MIT、Mozilla、Apache 和 LGPL等。 選擇RTOS,通常會考慮開源、市場占有率、配套資料和例程,以及配套組件等,市面上使用率較多
    的頭像 發表于 05-11 14:06 ?3537次閱讀
    市面上使用率較多<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 ?1389次閱讀
    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 ?1412次閱讀
    主站蜘蛛池模板: 午夜想想爱午夜剧场| 天堂网在线最新版官网| 狼干综合| 你懂的在线免费| 日本成片视频| 美女视频网站色软件免费视频| 久久久久久88色偷偷| 视频黄色免费| 日韩理论电影2021第1页| 日本黄色免费一级片| 噜噜色.com| 国产精品女人在线观看| 中文日产国产精品久久| 日日夜夜爽| 又黄又免费的网站| 欧美不卡视频在线观看| 一级三级黄色片| 日韩美香港a一级毛片| 精品视频卡1卡2卡3| 一区二区三区免费视频播放器| www.色妞| 色多多福利网站老司机| 爱看精品福利视频观看| 亚洲精品一区二区中文| 中文字幕在线天堂| 色视频在线免费| 狠狠色丁香婷婷综合视频 | 免费国产成人午夜私人影视 | 日韩亚洲人成网站在线播放| 美女张开腿让男人桶爽| 永久免费在线播放| 欧美色成人综合| 国产情侣真实露脸在线最新| 天天做夜夜做久久做狠狠| 午夜影院观看| 国产免费一区二区三区香蕉精| 亚洲视频1| 色日本在线| 国产免费人成在线视频视频| 五月天婷婷网亚洲综合在线| 日韩高清在线日韩大片观看网址|