99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于開源RTOS的Chibios評測

嵌入式IoT ? 來源:嵌入式IoT ? 作者:嵌入式IoT ? 2020-10-10 09:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一個(gè)開源的RTOS的Chibios的評測

1.Chibios介紹

1.1 chibios是什么?

1.2 chibios的特點(diǎn)

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設(shè)計(jì)思想淺析

3.1 中斷處理

3.2 系統(tǒng)狀態(tài)

3.3 調(diào)度機(jī)制

3.4 線程工作空間

4.在樹莓派上真實(shí)體驗(yàn)效果

5.總結(jié)

1.Chibios介紹

1.1 chibios是什么?

chibios的作者是Giovanni Di Sirio。chibi這個(gè)名稱在日語是小孩的意思,所以ChibiOS (ちびOS)也被可以理解成小型的操作系統(tǒng)。官網(wǎng)鏈接如下:

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

ChibiOS / RT于2007年9月份在SourceForge公開發(fā)布。由于作者對當(dāng)時(shí)現(xiàn)有的RTOS的不滿,所以寫了這個(gè)系統(tǒng),作者心目中的RTOS應(yīng)該是:

優(yōu)雅

快速

靜態(tài)的

這些也是chibios的核心思想與系統(tǒng)的特點(diǎn)。所以專注于代碼的優(yōu)美性和一致性,以及內(nèi)存的靜態(tài)使用、確定性、強(qiáng)大的抽象功能,都是這個(gè)系統(tǒng)關(guān)鍵的特性。

1.2 chibios的特點(diǎn)

隨著芯片性能和功能的不斷完善,資源的管理也變得十分復(fù)雜。就目前來說,已經(jīng)出現(xiàn)了很多的嵌入式操作系統(tǒng)來進(jìn)行這些資源的管理和使用?,F(xiàn)在來分析一個(gè)GPL3協(xié)議的開源RTOS,chibios的使用。ChibiOS/RT是為了8、16和32位微控制器而設(shè)計(jì)的。該RTOS其內(nèi)存的占用和運(yùn)行效率是項(xiàng)目至始至終優(yōu)化的方向。

STM32(Cortex-M3,72MHz)上,一個(gè)典型的ChibiOS/RT實(shí)例會占用1.2kB到5.5kB的空間。內(nèi)核每秒可以創(chuàng)建和終止220000多個(gè)線程,而且能在1.2微秒內(nèi)完成一次線程切換。隨著每一個(gè)架構(gòu)移植的發(fā)布,ChibiOS的性能測試數(shù)據(jù)都會被照例公布。

ChibiOS/RT的小型內(nèi)核支持:

搶占性多任務(wù)

128個(gè)優(yōu)先級

同優(yōu)先級線程按照時(shí)間片輪轉(zhuǎn)調(diào)度

軟件定時(shí)器

計(jì)數(shù)信號

支持優(yōu)先級繼承的自旋鎖

同步和異步信息,以及消息隊(duì)列

事件標(biāo)志和處理函數(shù)

支持的同步I/O和帶超時(shí)的異步I/O

線程安全的堆或內(nèi)存池分配器

支持多種底層硬件的硬件抽象層

支持lwIP和uIP協(xié)議棧

支持FatFS文件系統(tǒng)

所有的系統(tǒng)對象,比如線程、信號量等都能在運(yùn)行時(shí)創(chuàng)建或者刪除。除了可用內(nèi)存的限制之外沒有內(nèi)核對象創(chuàng)建數(shù)量上限。為了增強(qiáng)可靠性,整個(gè)內(nèi)核本身是靜態(tài)編譯的,并且不需要一個(gè)動(dòng)態(tài)內(nèi)存分配器;內(nèi)核中也沒有表或者數(shù)組的上限。整個(gè)系統(tǒng)的API設(shè)計(jì)中不包含諸如錯(cuò)誤碼或者異常一類的錯(cuò)誤狀況。

2.chibios的工程組織

一個(gè)chibios的工程主要包含以下幾個(gè)獨(dú)立的工程,分別為RT、NIL、OSLIB、SB、HAL、EX、ChibiStudio。下面我們來單獨(dú)敘述每個(gè)部分的功能和作用。

2.1 ChibiOS/RT

該設(shè)計(jì)是為功能完備的RTOS設(shè)計(jì)的,出發(fā)點(diǎn)在于性能完善和代碼量大小合適。

主要的特點(diǎn):

高性能

靜態(tài)的體系結(jié)構(gòu)

強(qiáng)大的調(diào)試功能

代碼庫清理

與CMSIS RTOS的兼容性比較好

2.2 ChibiOS/NIL

NIL的設(shè)計(jì)思想是適合資源非常小的設(shè)備。

主要的特點(diǎn):

系統(tǒng)很小,最小配置可以在低于1KB的ram上運(yùn)行。

小的內(nèi)存管理,小的線程,信號量管理

全靜態(tài)的架構(gòu)

2.3 ChibiOS/LIB

作為一個(gè)額外的庫,可以被ChibiOS/RT與ChibiOS/NIL共同使用,是操作系統(tǒng)的擴(kuò)展功能。主要的功能如下:

1.二值信號量

2.郵箱

3.fifo

4.動(dòng)態(tài)線程

5.內(nèi)存堆管理

6.內(nèi)存池管理

2.4 ChibiOS/SB

該擴(kuò)展主要是針對 Cortex-M3, M4 and M7內(nèi)核。其主要的作用是可以讓應(yīng)用獨(dú)立的運(yùn)行在一個(gè)沙盒里。

這種沙盒應(yīng)用是支持兩種,一種是靜態(tài)的內(nèi)存,一種是動(dòng)態(tài)的內(nèi)存。

2.5 ChibiOS/HAL

系統(tǒng)的硬件抽象層,該抽象層可以讓系統(tǒng)和驅(qū)動(dòng)進(jìn)行很好的對接,應(yīng)用程序使用起來更加容易。主要特定:

將硬件抽象出來,應(yīng)用程序可以不用管驅(qū)動(dòng)的具體實(shí)現(xiàn)

支持大多數(shù)的MCU外設(shè)

能夠支持RT和NIL

方便移植

2.6 ChibiStudio

一個(gè)基于ARM的開發(fā)環(huán)境的IDE,支持編譯、下載和運(yùn)行。

3.RTOS設(shè)計(jì)思想淺析

要想弄清楚這個(gè)系統(tǒng)的功能,就必須理解RTOS的核心。下面從中斷處理、系統(tǒng)狀態(tài)、調(diào)度,工作空間四個(gè)方面來理解Chibios。

3.1 中斷處理

在Chibios中,有三種類型的中斷。

Regular Interrupts:也就是定期中斷,這種中斷模式下,可屏蔽的中斷源不能被搶占,但是需要按照特定的規(guī)則來編寫這種中斷的處理函數(shù)。

Fast Interrupts:可以快速相應(yīng)的中斷,可搶占資源。

Non Maskable Interrupts:系統(tǒng)中正常的中斷處理。

在RTOS中,比較關(guān)鍵的地方就是確定性與穩(wěn)定性。確定性一般就是表示處理中斷的時(shí)間盡可能短而且時(shí)間可預(yù)測,一定程度上,中斷響應(yīng)時(shí)間也是評判一個(gè)RTOS的性能的重要指標(biāo)。

3.2 系統(tǒng)狀態(tài)

系統(tǒng)RTOS在使用時(shí),每個(gè)線程都會處于各種狀態(tài)。用下面的一張圖例來進(jìn)行表示:

Init:系統(tǒng)初始化階段,這個(gè)階段中,所有可屏蔽的中斷都無法響應(yīng)。當(dāng)系統(tǒng)處于該狀態(tài)時(shí),除了chSysInit()可以被調(diào)用,其他的API都無法被使用。

Normal:正常狀態(tài),當(dāng)前狀態(tài)下所有的系統(tǒng)中斷可以響應(yīng),并且線程正常的運(yùn)行。

Suspended:系統(tǒng)掛起狀態(tài),這種狀態(tài)下,只有FIQ可以響應(yīng),普通的中斷不能響應(yīng),并且不能使用chSysDisable()或chSysEnable()之外的任何系統(tǒng)API來更改狀態(tài)。

Disabled:系統(tǒng)處于該狀態(tài)時(shí),所有的中斷都不能被響應(yīng),無法使用chSysSuspend()或chSysEnable()之外的任何系統(tǒng)API來更改狀態(tài)。

Sleep:與體系架構(gòu)相關(guān)的低功耗模式,空閑線程進(jìn)入該模式后,等待事件重新喚醒變成Normal狀態(tài)。

S-Locked:內(nèi)核已鎖定,常規(guī)中斷源已禁用。快速中斷源使能。在這種狀態(tài)下可以調(diào)用S類和I類API。

I-Locked:內(nèi)核被鎖定,常規(guī)中斷源被禁用。I-Class API可從此狀態(tài)調(diào)用。

SRI:全稱為Serving Regular Interrupt,不能訪問任何系統(tǒng)API,但是可以使用chSysLockFromIsr()切換到I-Locked狀態(tài),然后調(diào)用任何I-Class API。中斷處理程序在某些體系結(jié)構(gòu)上可以搶占,因此在調(diào)用系統(tǒng)API之前切換到I鎖定狀態(tài)非常重要。

3.3 調(diào)度機(jī)制

在理解調(diào)度機(jī)制之前,先看看線程的狀態(tài)。

基本上在大部分的RTOS的設(shè)計(jì)上,線程的狀態(tài)都是這些。在執(zhí)行調(diào)度策略的時(shí)候,也是非常簡單,就是將高優(yōu)先級的線程掛載在調(diào)度器的雙向鏈表上,按照優(yōu)先級的高低進(jìn)行,數(shù)字越小,優(yōu)先級越低。

如果有同等優(yōu)先級,則按照時(shí)間片輪循的方式進(jìn)行。

3.4 線程工作空間

和其他RTOS類似,線程都會有字節(jié)的??臻g。

系統(tǒng)進(jìn)行搶占時(shí),會進(jìn)行當(dāng)前線程的壓棧和需要執(zhí)行的線程的出棧操作。

4.在樹莓派上真實(shí)體驗(yàn)效果

說再多也不如真機(jī)上進(jìn)行測試得到的感悟更加的深刻。現(xiàn)在為了體驗(yàn)效果,可以在樹莓派2/樹莓派3上進(jìn)行測試。目前為了方便調(diào)試,先采用qemu進(jìn)行模擬仿真。在qemu上運(yùn)行的程序再移植到真實(shí)的樹莓派硬件上,基本上問題不大。

本次的實(shí)驗(yàn)環(huán)境為Ubuntu18.04,需要安裝配置好arm-none-eabi-gcc,以及安裝好qemu。也可以在Windows環(huán)境中進(jìn)行測試。

首先需要準(zhǔn)備代碼,當(dāng)前的代碼倉庫在

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

將代碼clone出來后,進(jìn)入ChibiOS-RPi/demos/ARM11-BCM2835-GCC目錄,輸入make開始編譯代碼。

編譯完成后,可以看到在ChibiOS-RPi/demos/ARM11-BCM2835-GCCuild目錄生成了ch.elf文件以及ch.bin文件。如果要在真機(jī)上運(yùn)行,可以將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上運(yùn)行的時(shí)候,只需要輸入

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

這樣就可以在屏幕上看到Chibios的控制臺了。

當(dāng)出現(xiàn)控制臺界面時(shí),輸入info可以看到當(dāng)前硬件信息。

5.總結(jié)

本文簡單的介紹了一下Chibios的基本情況和在樹莓派上運(yùn)行該系統(tǒng)。從RTOS的角度上來說,該rtos的設(shè)計(jì)思想值得學(xué)習(xí)。其實(shí)看一個(gè)RTOS的優(yōu)劣好壞,不僅僅在于使用的是否上手容易,而在于系統(tǒng)的設(shè)計(jì)是否友好,是否穩(wěn)定,也需要有足夠的性能。做嵌入式底層開發(fā)和做RTOS開發(fā),不應(yīng)該只是局限于使用一個(gè)RTOS,也不應(yīng)該只關(guān)注上層的業(yè)務(wù)邏輯。一個(gè)好的應(yīng)用,必須是有足夠的深度和高度,不斷的優(yōu)化設(shè)計(jì)。當(dāng)前,有許多的RTOS可以被使用,有很多系統(tǒng)都有自己值得學(xué)習(xí)和研究的地方。因?yàn)榍度胧絉TOS的靈活性很大,不同的業(yè)務(wù)場景也需要不同的需求,或者每個(gè)系統(tǒng)都會有其行業(yè)的特殊性,但是萬變不離其宗,了解各個(gè)系統(tǒng)的特性,是很值得去學(xué)習(xí)的。

Chibios的一些具體的細(xì)節(jié)我還沒有研究的很深刻,我覺得sandbox是一項(xiàng)很有意思的功能,將系統(tǒng)的應(yīng)用程序獨(dú)立的在空間中運(yùn)行,這就很值得去看。另外這個(gè)系統(tǒng)的主要還是應(yīng)用在小的單片機(jī)上,我現(xiàn)在還沒有實(shí)際的數(shù)據(jù)去展示,等一段時(shí)間后,可以看看這個(gè)系統(tǒng)的評測結(jié)果。

責(zé)任編輯:YYX

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7142

    瀏覽量

    125544
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11031

    瀏覽量

    364606
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3676

    瀏覽量

    43803
  • RTOS
    +關(guān)注

    關(guān)注

    24

    文章

    851

    瀏覽量

    121135
  • 樹莓派
    +關(guān)注

    關(guān)注

    121

    文章

    2001

    瀏覽量

    107417

原文標(biāo)題:一個(gè)開源的RTOS的Chibios的評測

文章出處:【微信號:Embeded_IoT,微信公眾號:嵌入式IoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Banana Pi BPI-R3開源路由器啟動(dòng)及性能評測

    Banana Pi BPI-R3開源路由器啟動(dòng)及性能評測
    發(fā)表于 02-01 16:32

    有用過chibios實(shí)時(shí)系統(tǒng)的嗎?求助 求教

    有用過chibios實(shí)時(shí)系統(tǒng)的嗎?求助 求教
    發(fā)表于 05-19 17:09

    開源RTOS怎么選擇

    這么多開源RTOS,怎么知道哪個(gè)適合我的項(xiàng)目?
    發(fā)表于 04-17 08:09

    關(guān)于鴻蒙os的開源程度。 開源到什么程度,是100%開源嗎?

    想了解下關(guān)于鴻蒙os的開源程度。 開源到什么程度,是100%開源嗎?
    發(fā)表于 09-22 11:15

    有用過chibios實(shí)時(shí)系統(tǒng)的嗎?求助 求教

    有用過chibios實(shí)時(shí)系統(tǒng)的嗎?求助 求教
    發(fā)表于 03-25 11:19

    關(guān)于RTOS編寫要解決哪些核心問題呢

    SysTick的作用有哪些?關(guān)于RTOS編寫要解決哪些核心問題呢?
    發(fā)表于 11-29 06:52

    開源RTOS在STM32單片機(jī)中的應(yīng)用

    開源RTOS在STM32單片機(jī)中的應(yīng)用
    發(fā)表于 09-25 09:50 ?20次下載
    <b class='flag-5'>開源</b><b class='flag-5'>RTOS</b>在STM32單片機(jī)中的應(yīng)用

    如何選擇適合自己的開源RTOS

    選擇適合自己的開源RTOS
    的頭像 發(fā)表于 03-12 11:44 ?3125次閱讀

    在免費(fèi)開源爆炸的時(shí)代之下,你如何選擇一款RTOS

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

    市面上使用率較多開源RTOS的具體內(nèi)容

    目前市面上的開源協(xié)議有很多種,比如:GPL、BSD、MIT、Mozilla、Apache 和 LGPL等。 選擇RTOS,通常會考慮開源、市場占有率、配套資料和例程,以及配套組件等,市面上使用率較多
    的頭像 發(fā)表于 05-11 14:06 ?3762次閱讀
    市面上使用率較多<b class='flag-5'>開源</b><b class='flag-5'>RTOS</b>的具體內(nèi)容

    TencentOS-tiny 正式開源,全網(wǎng)首發(fā)評測,帶你極速上手體驗(yàn)!

    文末有體驗(yàn)心得和RTOS比較,趕時(shí)間的小伙伴可以直接拉到文末哦~1. TencentOS-tiny 正式開源國產(chǎn) RTOS 如雨后春筍般誕生的今天,騰訊于昨日正式開源發(fā)布了自己的物聯(lián)網(wǎng)
    發(fā)表于 12-07 13:51 ?14次下載
    TencentOS-tiny 正式<b class='flag-5'>開源</b>,全網(wǎng)首發(fā)<b class='flag-5'>評測</b>,帶你極速上手體驗(yàn)!

    RT-Thread全球技術(shù)大會:什么是RTOS?關(guān)于開源RTOS的3個(gè)階段

    RT-Thread全球技術(shù)大會:什么是RTOS?關(guān)于開源RTOS的3個(gè)階段 ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 11:00 ?1654次閱讀
    RT-Thread全球技術(shù)大會:什么是<b class='flag-5'>RTOS</b>?<b class='flag-5'>關(guān)于</b><b class='flag-5'>開源</b><b class='flag-5'>RTOS</b>的3個(gè)階段

    Zephyr RTOS和HC-SR04超聲波傳感器開源

    電子發(fā)燒友網(wǎng)站提供《Zephyr RTOS和HC-SR04超聲波傳感器開源.zip》資料免費(fèi)下載
    發(fā)表于 06-20 09:44 ?4次下載
    Zephyr <b class='flag-5'>RTOS</b>和HC-SR04超聲波傳感器<b class='flag-5'>開源</b>

    Arduino的現(xiàn)代RTOS和狀態(tài)機(jī)開源分享

    電子發(fā)燒友網(wǎng)站提供《Arduino的現(xiàn)代RTOS和狀態(tài)機(jī)開源分享.zip》資料免費(fèi)下載
    發(fā)表于 06-27 14:57 ?0次下載
    Arduino的現(xiàn)代<b class='flag-5'>RTOS</b>和狀態(tài)機(jī)<b class='flag-5'>開源</b>分享

    freertos和rtos區(qū)別是什么

    FreeRTOS 和 RTOS(實(shí)時(shí)操作系統(tǒng))是兩個(gè)不同的概念,但它們之間有緊密的聯(lián)系。FreeRTOS 是一個(gè)特定的開源實(shí)時(shí)操作系統(tǒng),而 RTOS 是實(shí)時(shí)操作系統(tǒng)的一般概念。 概念定義 RT
    的頭像 發(fā)表于 09-02 14:18 ?2990次閱讀