μCOS-Ⅲ_簡介

μCOS-Ⅲ簡介


文章目錄

  • μCOS-Ⅲ簡介
  • 前言
  • 一、什么是 μC/OS-III?
  • 二、μC/OS-III的特點
  • 三、μC/OS-III的版本和參考資料
    • 1、μC/OS-III版本
    • 2、μC/OS-III源碼獲取
    • 3、μC/OS-III參考資料
  • 四、μC/OS-III源碼簡介
  • 總結


前言

μcos-III是一個可以基于ROM運行的、可裁剪的、搶占式、實時多任務內核,具有高度可移植性,在一段學習后留個筆記簡單記錄下相關知識歡迎大佬指正!!!!


一、什么是 μC/OS-III?

μC/OS-III 基于 C 語言編寫的第三代小型實時操作系統,也就是 RTOS(Real Time Operating System),與之類似的 RTOS 還有 FreeRTOS、RT-Thread 等。

作為操作系統最直觀的特點就是一個 CPU 核心“同時運行”多個任務,這個特性就被稱為“多任務”(實際上一個 CPU 核心在某一時刻只能運行一個任務),系統中任務調度器的責任就是決定在某一時刻 CPU 究竟要運行哪一個任務,任務調度器使得 CPU 在各個任務之間來回切換并處理任務,由于切換處理任務的速度非常快,因此給人造成了一種同一時刻有多個任務同時運行的錯覺。

操作系統的分類方式可以由任務調度器的工作方式決定, 比如有的操作系統給每個任務分配同樣的運行時間,時間到了就切換到下一個任務, Unix 操作系統就是這樣的。 RTOS 的任務調度器被設計為可預測的, 而這正是嵌入式實時操作系統所需要的。在實時環境中, 要求操作系統必須實時地對某一個事件做出響應,因此任務調度器的行為必須是可預測的。 像 μC/OS-III這種傳統的 RTOS 類操作系統是由用戶給每個任務分配一個任務優先級, 任務調度器就可以根據此優先級來決定下一刻應該運行哪個任務。

二、μC/OS-III的特點

μC/OS-III 是一個可裁剪、可固化到 ROM 的搶占式實時內核,并且可管理任務的數量不受
限制。 μC/OS-III 是第三代的 μC/OS 內核,具有以下幾個重要的特性:
支持多種不同架構的不同型號的處理器: ARM架構系列,例如STM32和GD32的 F1、 F4、 F7 和 H7 等型號的 MCU 都可支持,只需簡單的移植,這些 MCU 上運行 μC/OS-III ,非常方便
搶占式多任務管理: μC/OS-III 是一個支持多任務搶占的內核,因此總是優先執行任務優先
級高的任務。
時間片調度: μC/OS-III 允許系統中有多個相同任務優先級的任務,如果系統中處于就緒狀
態的任務中,優先級最高的任務有多個,那么 μC/OS-III 將以時間片的方式調度任務,即根據用
戶指定的時間(時間片)輪流調度這些任務。
極短的中斷禁用時間: μC/OS-III 通過鎖定任務調度器代替禁用中斷來保護一些關鍵區域
(臨界區),這確保了 μC/OS-III 能夠快速地響應中斷。
任務數量不限: μC/OS-III 理論上支持不受限制的任務數量,但實際上,系統中任務的最大
數量受處理器內存空間的限制。
任務優先級數量不限: μC/OS-III 支持的任務優先級數量不受限制,但對于大多數應用場景
而言,使用 32~256 個任務優先級就綽綽有余了。
內核對象數量不限: μC/OS-III 提供了多種內核對象,如任務、信號量、事件標志、消息隊
列、軟件定時器和內存區等,并且在不考慮處理器內存限制的情況下,用戶可以無限制的創建
這些內核對象。
時間戳: μC/OS-III 提供了時間戳功能,用戶可以非常方便地測量系統在運行過程中,處理
器處理某些事件所消耗的時間,以方便用戶對系統進行針對性的優化。
自定義鉤子函數: μC/OS-III 提供了一些在內核執行操作之前、之后或過程中的鉤子函數,
這樣可以方便用戶擴展 μC/OS-III 的功能。
防死鎖: μC/OS-III 允許任務在等待某些內核對象前,設置一個等待的最大超時時間,這樣
可以有效地防止死鎖的發生。
軟件定時器: 在 μC/OS-III 中,用戶可以創建任意數量的“單次”和“周期”軟件定時器,
并且每個軟件定時器都可以有獨立的超時回調函數。
任務內嵌信號量: μC/OS-III 提供了任務的內嵌信號量功能,這使得任務可以直接獲取來自
其他任務或中斷的信號,而不需要任何的中間內核對象,大大地提高了系統的運行效率。
任務內嵌消息隊列: μC/OS-III 提供了任務的內嵌消息隊列,這使得任務可以直接接收來自
其他任務或中斷的消息,而不需要任何的中間內核對象,大大地提高了系統的運行效率。

三、μC/OS-III的版本和參考資料

1、μC/OS-III版本

μC/OS 至今為止一共發展了三個版本,分別為 μC/OS、 μC/OS-II 和 μC/OS-III,這三個版本
的特征比較如下表所示:
在這里插入圖片描述
在這里插入圖片描述

2、μC/OS-III源碼獲取

在移植 μC/OS-III 的時候還需要用到 μC/OS-III 官方提供的兩個額外的庫,分別為 μC/CPU 和 μC/LIB,在下文會分別介。μC/OS-III 官方:https://weston-embedded.com/,提供了大量的 μC/OS-III 相關的資料和不同版本的源代碼,現在的目標就是要獲取 μC/OS-III、 μC/CPU 和 μC/LIB 這三個組件的源代碼,打開后如下圖所示:在這里插入圖片描述
鼠標指針放到頂部MICRIUM,可看到“CODEBASE”,點擊“CODEBASE”就能跳到μC/OS-III 官方 GitHub 倉庫,如下圖所示:
在這里插入圖片描述
在Repositories”在全部倉庫中進行檢索,輸入LIB、CPU或OS3即可檢索對應的倉庫源碼,然后切換到該倉庫已經發布的版本的 Tag,能夠點擊圖綠的圖標“Code”,然后點擊“DownloadZIP”就能后下載到指定版本 的源代碼壓縮包了,接著再對其進行解壓,就能夠得到 μC/OS-III 的源代碼。
在這里插入圖片描述

3、μC/OS-III參考資料

參考資料在頂部導航欄“MICRIUM” 中的“Kernels”,就能看到 μC/OS 的詳情頁了,打開后如下圖所示:
在這里插入圖片描述
在 μC/OS 的詳情頁中可以看到,頂部導航欄中有一個“DOCUMENTATION” 的標簽按鈕,這就是 μC/OS 官方資料的入口。接著點擊“DOCUMENTATION”,就能夠打開 μC/OS 官方的文檔中心,如下圖所示:
在這里插入圖片描述
在 μC/OS 官方的文檔中心中可以看到 μC/OS 官方為自家的多種組件都提供了詳細的文檔資料,例如 μC/CAN、 μC/CANopen、 μC/Clk 等等。 在文檔中心中索引找到并打開 μC/OS-III 的在線文檔資料, 打開 μC/OS-III 的在線文檔資料后,就能夠在頁面的側看到 μC/OS-III 在線文檔的導航欄,如下圖所示:
在這里插入圖片描述
從上圖左側欄看,μC/OS-III官方提供了大量關于μC/OS-III的在線資料,其中包括了μC/OSIII 的用戶手冊、 μC/OS-III 的參考手冊以及 μC/OS-III 的 API 參考手冊等等。在 μC/OS-III 的 API參考手冊中詳細地介紹了 μC/OS-III 中各個 API 的使用說明,包括 API 函數的參數說明、返回值說明以及 API 用法舉例。可以在頁面的右側看到, μC/OS-III 官方不僅提供了完整的在線文檔,還提供了 PDF 格式的特定于硬件的 μC/OS-III 書籍。

四、μC/OS-III源碼簡介

μC/OS-III、 μC/CPU 和 μC/LIB 這三個組件的源代碼已經下載完成,那么這三個文件分別是做什么用的呢?所示:
在這里插入圖片描述


總結

μC/OS-III官方提供了大量關于μC/OS-III的在線資料,適合作為嵌入式操作系統入門學習。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42482.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42482.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42482.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp Vue 使用 sip.js進行語音通話視頻通話

下載或者安裝 sip.js 到 uniapp 項目&#xff0c;APP 端在 menifest.json 中配置麥克風權限 menifest.json 中 app 權限配置選中&#xff1a; android.permission.RECORD_AUDIO android.permission.MODIFY_AUDIO_SETTINGS sip.js 低版本 如 V0.13.0 版本的寫法 <template&…

latex 筆記:cs論文需要的排版格式

主要針對英文文獻 1 基本環境 連字符 不同長度的"-"表示不同含義。 一個"-"長度的連字符用于詞中兩個"-"長度的連字符常用于制定范圍三個"-"長度的連字符是破折號數學中的負數要用數學環境下的-得到 強調 在正式文章中, 通常不…

神經網絡基礎-神經網絡補充概念-48-rmsprop

概念## 標題 RMSProp&#xff08;Root Mean Square Propagation&#xff09;是一種優化算法&#xff0c;用于在訓練神經網絡等機器學習模型時自適應地調整學習率&#xff0c;以加速收斂并提高性能。RMSProp可以有效地處理不同特征尺度和梯度變化&#xff0c;對于處理稀疏數據和…

Open3D點云數據處理(二十):最小二乘直線擬合(三維)

文章目錄 1 最小二乘三維直線擬合原理2 代碼實現3 直線擬合的評估指標4 計算擬合的評估指標5 np.linalg.lstsq() 函數詳解專欄目錄:Open3D點云數據處理(Python) 1 最小二乘三維直線擬合原理 最小二乘三維直線擬合的原理是通過最小化數據點到直線距離的平方和,找到最優的直…

ARM64 程序調用標準

ARM64 程序調用標準 1 Machine Registers1.1 General-purpose Registers1.2 SIMD and Floating-Point Registers 2 Processes, Memory and the Stack2.1 Memory Addresses2.2 The Stack2.2.1 Universal stack constraints2.2.2 Stack constraints at a public interface 2.3 Th…

【C語言】字符串和內存函數的介紹 -- 詳解

重點介紹處理字符和字符串的庫函數的使用和注意事項。 C語言中對字符和字符串的處理很是頻繁&#xff0c;但是C語言本身是沒有字符串類型的&#xff0c;字符串通常放在常量字符串中或者字符數組中。字符串常量適用于那些對它不做修改的字符串函數。 一、求字符串長度?strlen …

python的requests庫使用

安裝 pip install requests方法 requests.get() 發起get請求調用 查詢 requests.post() 發起post請求調用 報錯 requests.put() 發起put請求調用 修改 requests.delete() 發起delete請求調用 刪除 requests.session() 獲取requests的session對象 requests.session().request(…

【Rust】Rust學習 第十四章進一步認識 Cargo 和 Crates.io

本章會討論 Cargo 其他一些更為高級的功能&#xff0c;我們將展示如何&#xff1a; 使用發布配置來自定義構建將庫發布到 crates.io使用工作空間來組織更大的項目從 crates.io 安裝二進制文件使用自定義的命令來擴展 Cargo Cargo 的功能不止本章所介紹的&#xff0c;關于其全…

云積天赫|AIGC+營銷的排頭兵

AIGC生成式人工智能&#xff0c;正逐漸成為人們關注的焦點。AIGC的出現&#xff0c;標志著人工智能已經進入了一個全新的時代。AIGC的出現&#xff0c;也為營銷行業帶來了新的活力。那么企業該怎么利用這次AIGC浪潮&#xff0c;成為AIGC營銷的排頭兵呢&#xff1f;      “…

【JavaScript】使用js實現滑塊驗證碼功能與瀏覽器打印

滑塊驗證碼 效果圖&#xff1a; 實現思路&#xff1a; 根據滑塊的最左側點跟最右側點&#xff0c; 是否在規定的距離內【頁面最左側為原點】&#xff0c;來判斷是否通過 html代碼&#xff1a; <!DOCTYPE html> <html><head><title>滑動圖片驗證碼&…

Python爬蟲常用:谷歌瀏覽器驅動——Chromedriver 插件安裝教程

前言 大家早好、午好、晚好吖 ? ~歡迎光臨本文章 我們在做爬蟲的時候經常要使用谷歌瀏覽器驅動&#xff0c;今天分享下這個Chromedriver 插件的安裝方法。 話不多說&#xff0c;直接開搞&#xff0c;如果有什么疑惑/資料需要的可以點擊文章末尾名片領取源碼 第一步、打開谷…

使用Dockker創建vwas容器時報錯的解決方法

執行命令 docker run -it -d -p 13443:3443 --cap-add LINUX_IMMUTABLE secfa/docker-awvs沒有詳細看報錯之前找了各種各樣的解決辦法&#xff0c;都無法解決。因此以后在看報錯提示的時候耐心一點看關鍵詞Error 后來才發現啟動vwas時docker報了這個錯&#xff1a; OSError: …

CANoe自動化工程的搭建

基于XMLCAPL建立自動化工程 1、導入ini文件2、新建 Test Environment3、報告類型4、代碼編寫 1、導入ini文件 工程的配置的文件&#xff0c;配置DUT相關信息&#xff0c;具體視工程而編寫內容。 2、新建 Test Environment 1、新建XML測試用例環境 2、導入XML測試用例文件 …

Jmeter常用功能-參數化介紹

JMeter也有像LR中的參數化&#xff0c;本篇就來介紹下JMeter的參數化如何去實現。 參數化&#xff1a;錄制腳本中有登錄操作&#xff0c;需要輸入用戶名和密碼&#xff0c;假如系統不允許相同的用戶名和密碼同時登錄&#xff0c;或者想更好的模擬多個用戶來登錄系統。 這個時…

mac M1安裝opencv方法及類型報錯解決

安裝opencv: pip install opencv-python pip install --user opencv-contrib-python pip install opencv-python 4.5.2.54 numpy 1.25.2 安裝過程中報錯如下&#xff1a; python-類型錯誤&#xff1a;“numpy._DTypeMeta”對象不可下標 TypeError: ‘numpy._DTypeMeta’ obje…

虛擬機/雙系統Ubuntu擴容

虛擬機Ubuntu擴容 1.需要刪除所有的快照 2.擴展虛擬機磁盤大小 虛擬機(M)→設置(s)→硬盤(SCSI)→擴展磁盤容量 3.Ubuntu內調整分區大小 安裝gparted分區工具&#xff1a;sudo apt-get install gparted 啟動gparted并resize分區 4.最后最好建一個快照&#xff0c;不然gg了…

WinPlan經營大腦垂直大模型行業報告

一、引言 在當前高度信息化的時代,企業經營管理決策的重要性已經得到了廣泛的認可。然而,在實際操作中,許多企業仍然在憑經驗、拍腦袋進行經營決策,缺乏數據工具與專職分析團隊,導致決策難、效率低等問題。針對這一問題,近年來,一種名為“WinPlan”的經營決策產品逐漸嶄…

[測試報告] 愛搜Blog 自動化測試報告

目錄 項目背景 項目功能 測試詳情 一、設計測試用例 二、功能測試步驟結果 1. 登錄頁面 2. 個人博客頁面 3. 博客詳情頁 4. 博客編輯頁 三、自動化測試及測試結果 1. 測試環境 2. 登錄測試用例&#xff1a; 3. 個人詳情頁測試用例&#xff1a; 4. 寫博客并發布測試…

Android免打包多渠道統計如何實現

摘要&#xff1a; 實際上只要完成1-2步即可實現多渠道打包&#xff0c;這也意味著&#xff0c;只要每次更新App時給出一個原始包&#xff0c;運營人員就能在后臺自己進行操作管理&#xff0c;簡單快捷到全程無需開發人員參與。 我們都知道&#xff0c;Android 市場被分割成幾十…

Go學習筆記之數據類型

文章目錄 GO數據類型數組array切片slice集合map結構體make和new GO數據類型 在go語言中&#xff0c;定義的全局數據結構不使用不會報錯&#xff0c;定義的局部數據結構必須使用&#xff0c;否則報錯&#xff1b;建議定義的數據類型就要使用&#xff0c;要么不定義。 數組array …