μCos-ii學習筆記1_概述

来源:http://www.cnblogs.com/yunbianluoye/archive/2016/12/15/6183089.html
-Advertisement-
Play Games

一、μCos-ii _概述 網上關於μCosii的文章多不勝數,本人學習的過程中也參考了很多人的理解和想法,看的是盧有亮老師的《嵌入式實時操作系統-μC/OS原理與實踐》(第2版),同時也參考了邵貝貝老師的《嵌入式實時操作系統μCOS-II》,斷斷續續一個月看了幾遍書,也在stm32上簡單移植了μC ...


一、μCos-ii _概述

      網上關於μCosii的文章多不勝數,本人學習的過程中也參考了很多人的理解和想法,看的是盧有亮老師的《嵌入式實時操作系統-μC/OS原理與實踐》(第2版),同時也參考了邵貝貝老師的《嵌入式實時操作系統μCOS-II》,斷斷續續一個月看了幾遍書,也在stm32上簡單移植了μCos-ii,這裡也談下自己的理解,如有紕漏,敬請指教。

1.什麼是操作系統,為什麼要學操作系統?

     生活中PC上最常見的無非Windows、Mac OS、Linux等操作系統,移動設備上的Android、ios等。我們發現在這樣一個操作系統的平臺上,可以方便的進行各種應用程式的開發,而可以不用考慮對底層硬體的操作。

     因此,操作系統是建立在系統硬體與用戶程式之間的一層重要的系統軟體,,是對硬體的第一層抽象與封裝,它向上層提供封裝好的API(應用程式介面),同時還承擔著任務管理、事件管理、記憶體管理、文件管理、CPU管理、記憶體管理、I/O管理等核心功能。

     我認為學習操作系統可以幫助我們避免抽象,更深入的理解電腦運行方式,從而構建出更加完整的知識體系。人們通過不斷的抽象和創造,從晶體管到門電路,發展到集成電路,再到硬體平臺和操作系統、人機介面,最後到與人打交道的應用程式,一步步實現了電腦的應用和普及。操作系統作為其中極其重要的一環是不可或缺的。

2.實時操作系統μCOS-II

      μCOS-II作為實時操作系統(RTOS),最大的特點顧名思義就是實時性,即操作系統從接收任務到完成任務所需要的時間是基本確定的,其中又分為硬實時系統(規定時間內必須完成操作)和軟實時系統(按優先順序儘快完成造作即可)。其特點還包括多任務、多級中斷和優先順序調度機制。當然,μCOS-II也可能是實時操作系統里代碼最精簡,最適合入門選手的操作系統了,不過麻雀雖小,五臟俱全,對於學習和瞭解整個操作系統的框架還是基本夠用的。盧老師書中指出的學習路徑值得推薦:

            圖 1  μCos-ii嵌入式操作系統學習路徑

3. μCOS-II系統基本構成

     先明確幾個重要概念:

1> 任務:在μCos-ii中體現為一個進程,是CPU執行調度和分配的最小單元,在程式中一般就體現為一個相對獨立的函數。一般以迴圈的方式運行,當然運行需要滿足一定的條件(包括處於就緒狀態並且在就緒任務中優先順序最高,不用等待其他事件發生或者需要等待的事件已經發生,系統進行了任務調度),其中任務調度也是μCos-ii的靈魂所在。需要說明的是,μCos-ii是多任務操作系統,每個任務也會有很多不同的狀態,這點後續還會再說明。

2> 事件:事件指在操作系統運行過程中發生的重要事情,在μCos-ii中包括信號量、互斥信號量、事件標誌組、消息郵箱、消息隊列等5種,所有這5種事件或者說機制的設立都是為了一個目的:實現任務間的合作和無衝突的運行,或者也叫作“任務間同步”。如果把各個任務比作一條產線上的工人,那麼事件的機制就是總控臺下達的指令,只有所有工人按照指令工作,產線才能正常運行。當然,總控台需要瞭解各個崗位上的狀況,所以這些信息也許要各個工人(任務)來提供。

3> 時鐘:這個理解起來比較簡單,就像單片機的晶振一樣,操作系統也需要這樣一個節拍信號,作為系統的時鐘,也叫作時鐘節拍μCos-ii中這種機制一般都是設定好固定的定時器中斷(例如10ms一次),每次進入中斷系統時鐘加1。這個10ms就是操作系統執行任務調度和延時等操作的最小事件單位。

4> 中斷:與裸機開發中斷相應類似,也是保證實時性的基礎。事實上,任務調度大多依靠中斷,更多的任務切換也發生在中斷中,例如中斷服務程式中執行提交信號量或消息之類的代碼,就會時一些等待信號量和消息的代碼就緒,併在任務調度後得到運行。

5> 臨界區:任務中訪問共用資源的那一段程式稱為臨界區,因為共用資源需要互斥訪問,即不允許兩個任務同時訪問互斥資源。這裡有兩個重要的要求:

(1)臨界區不予許任務切換;

(2)臨界區代碼必須儘量短來保證實時性。

實現臨界區互斥訪問的機制一般有三種,後續還會再分析。

     概述就講到這裡,簡單總結下:

     μCos-ii是一種多任務輕量化的實時嵌入式操作系統,它通多任務管理(μCos-ii靈魂)實現多任務的調度和切換,利用事件管理,包括信號量、互斥信號量、事件標誌組、消息郵箱、消息隊列等機制實現任務間通信,從而確保多任務的合作和無衝突運行。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在測試PlateSpine克隆的資料庫伺服器時,由於資源有限,克隆過來的資料庫伺服器只給了9G的記憶體,結果在測試時,老是會出現OOMkiller導致宕機,即out of memory killer,是linux下麵當記憶體耗盡時的的一種處理機制。當記憶體較少時,OOM會遍歷整個進程鏈表,然後根據進程的內... ...
  • 本教程講述在單機環境下搭建Hadoop偽分散式集群環境,幫助初學者方便學習Hadoop相關知識。 首先安裝Hadoop之前需要準備安裝環境。 安裝Centos6.5(64位)。(操作系統再次不做過多描述,自行百度) 安裝JDK1.7(64位)。 安裝Hadoop2.2(穩定版本64位) 註意:以上三 ...
  • 當我們需要修改數據表名或者修改數據表欄位時,就需要使用到MySQL ALTER命令。 開始本文教程前讓我們先創建一張表,表名為:testalter_tbl... ...
  • 打開資料庫的SQL Server Managerment Studio >資料庫 >打開資料庫會看見"可編程行" >打開有存儲過程 >新建存儲過程 實例: a.(資料庫端) CREATE PROCEDURE [dbo].[get] @hyzk varchar(255), @feibie varcha ...
  • 'hello world' > 'Hello world' update tableName set columnName=CHAR(ASCII(SUBSTRING(columnName, 1, 1))-32)+SUBSTRING(columnName, 2, len(columnName)) WH ...
  • T-sql是對SQL(structure query language )的升級。可以加函數。 系統資料庫:master管理資料庫。model模版資料庫,msdb備份等操作需要用到的資料庫,tempdb臨時資料庫。 用戶資料庫:用戶自己創建。實際上用戶創建資料庫就是想master這個資料庫下麵去註冊... ...
  • 問題描述:不知道誤操作了什麼,導致cmd視窗的滑鼠顯示位置出現錯位,如下: 現在要將滑鼠位置調整回來。 使用工具:cmd。 操作步驟: 1、查看cmd屬性可以看到 可以看到是UTF-8編碼格式的,我們需要修改其為GBK編碼。 2、在cmd下輸入命令:chcp 936 即可修改為GBK編碼。修改後的結 ...
  • 換了一臺新電腦, 在使用 ant 拷貝大量文件的時候 cmd 視窗過了很久沒有繼續輸出新的內容,遠遠超過平時的耗時, 以為已經卡死 按下 ctrl + c 取消, 這時並沒有取消, 而是輸出了新內容,顯示整個過程已經完成 build success了 。 執行其他耗時命令也是這樣,不繼續輸出。 go ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...