自己在上學的時候,搞過2年的微控制器stm32程式設計,當時還記得一心想在上面跑個作業系統,ucos作業系統,但是當時自己為什麼要上這個作業系統,不是特別的清楚,後來自己在實際工作中,做了應用軟體,感覺有了一些深刻的體會。
1.上作業系統有很多資源可以利用,系統的記憶體管理,執行緒程序的使用。檔案系統的使用,圖形系統的使用,這個是你在沒有上作業系統的時候不能使用的。
2.對於多工的處理更加簡單了,原來比方說我了個機械人的程式,用裸機進行的,我有5個感測器,我還有乙個液晶屏,還有1個按鍵,我就得用定時器來進行,進乙個定時器,我就做一件事,主程式裡只能做一件事,而如果我上了作業系統,我在主程序裡就可以開多個執行緒,來同時做這樣的事,不用我自己去管理這種處理順序,由作業系統替我進行管理。
原文的鏈結如下:
以下是2023年原文:
以前對微控制器程式設計做過一些零散的總結,近兩個月又學習了一下作業系統,對作業系統原理和實現有了初步了解。所以就想到寫一篇長文總結,系統總結一下微控制器程式設計和作業系統原理,作為乙個從微控制器程式設計到作業系統的過渡文章。
一開始想要作為乙個帖子分享的,但是內容太多,所以做成了乙個pdf檔案,看上去比較正規,調理也清晰一點,但是內容也就停留在帖子的水平。希望能給從微控制器往作業系統過渡的童鞋帶來一點幫助,正如我學作業系統時也看了別人的文章一樣。
以下是文章的前言和目錄。
前言在2023年年初,筆者開始了微控制器的學習,那時還是學生的我已經深深地被微控制器吸引。之後幾乎放棄了學校課程,把所有精力都放在微控制器上,參加了一些比賽,並取得不錯的成績。
在開始工作之後,筆者從事微控制器開發。在工作期間的高強度程式設計下,嘗試了多種微控制器程式設計結構,對微控制器各種結構的構建做了分析和總結,並深刻感受到作業系統產生的必要性,對作業系統的探索有著越來越強的慾望。
在工作一段時間之後,筆者決定辭職。我不想憑僅有的那麼一點微控制器知識做乙個嵌入式碼農,我渴望學習新的知識,掌握更高階的理論……好吧~至少做乙個高階一點的碼農。而下一步的目標就是——linux。
但是筆者並沒有直接進行linux的學習,因為作業系統對我來說還是個新事物,我甚至不知道作業系統和微控制器程式設計的最本質區別是什麼,於是我想先搞清楚作業系統的本質原理之後再進行linux的學習。筆者是物理學專業的,並沒有系統學習過作業系統的概念。事實上很多介紹作業系統的書籍也沒有提到作業系統的底層實現,更沒有介紹它與微控制器程式設計之間的關係。正如我在辭職的這段時間學完ucos之後,對作業系統核心構建有了了解,但是卻仍然不知底層的任務切換是如何實現的。
however,經過兩個月的學習,筆者終於清楚了作業系統的基本原理,也深刻體會到作業系統和微控制器各種程式設計結構的區別和聯絡。於是我想到把之前的微控制器程式設計經驗和近期對作業系統的學習結合到一起,寫乙個從微控制器到作業系統過渡的文章。一方面對微控制器程式設計結構做乙個系統總結,另一方面對作業系統原理也進行一次整理。把作業系統和微控制器程式設計整合到乙個知識體系中去,以便日後接受更多的作業系統核心知識。
本文分為兩部分——「微控制器程式設計篇」和「作業系統篇」。
微控制器程式設計篇主要介紹微控制器的各種程式設計結構,及其實現方法。是在假設已經可以驅動微控制器和各個模組的前提下,討論如何整合和使用這些資源,以實現功能。在這一篇中,將會看到程式主體逐漸從主函式轉移到定時器,並且明確這些變化的目的。最後還會接觸到物件導向的程式設計方式,並體會這種方式帶來的好處。
作業系統篇將會介紹作業系統的最基本的任務切換原理,以及作業系統是如何實現在微控制器程式設計中難以實現的功能的。並在arm平台上實現任務切換和簡單的作業系統。至於更複雜的作業系統核心構建本文沒有多說,各種常用的作業系統核心都有很多資料可以查閱,不過我會向大家推薦一本在網上公開但沒有出版的書——《底層工作者手冊之嵌入式作業系統核心》,這本書詳細闡述了作業系統核心的構建方法。
目錄第一篇 微控制器程式設計
第1章 主函式順序呼叫 2
1.1 主函式順序呼叫的一般結構... 2
1.2 主函式順序呼叫結構的特點... 2
第2章 介面函式結構 4
2.1 介面函式一般結構... 4
2.2 更高的角度分析這種結構... 5
第3章 定時器分配任務 8
3.1 用介面函式構成的基礎框架... 8
3.2 結合定時器程式設計分析... 9
3.3 任務分割... 11
3.4 定時器分配任務程式結構總結... 12
第4章 占用式與非占用式程式結構分析 14
4.1 什麼是占用式程式... 14
4.2 占用式程式的缺點... 14
4.3 對占用式程式的改造... 15
4.4 改造的本質... 16
4.5 非占用式程式結構的優勢... 17
4.6 非占用式程式的一般結構... 17
4.7 吐槽... 18
第5章 定時器執行任務 19
5.1 定時器執行任務的程式結構... 19
5.2 定時器裡面任務函式的特點... 20
5.3 過程任務的定時器化... 21
5.4 定時器執行任務程式結構總結... 25
5.5 我們追求的是什麼... 25
第6章 物件導向思想+事件驅動結構 27
6.1 物件和事件... 27
6.2 c語言對乙個物件的封裝... 28
6.3 事件分配機制... 31
6.4 系統層構建... 33
6.5 庫函式... 33
第二篇 作業系統
第7章 為什麼要有作業系統 35
第8章 任務切換的具體工作 36
8.1 cpu工作原理... 36
8.2 任務切換做的事... 38
第9章 在s3c6410上實現任務切換 39
9.1 了解s3c6410的暫存器... 39
9.2 要用到的幾條彙編指令... 41
9.3 在s3c6410上實現任務切換... 45
9.4 在s3c6410上實現簡單作業系統... 46
-------------------
TesegOS微控制器實時作業系統
tesegos面向8位機或32位低端mcu而設計,是一款簡單易用,資源利用率高,簡潔 易掌握的微型任務排程器。tesegos採用搶占式任務排程策略 已準備好的高優先順序任務會通過中斷的方式優先得到執行,相同優先順序的任務按準備好時的時間順序得到執行,同優先等級的任務不會互相搶占。tesegos中不限...
華為微控制器作業系統 華為物聯網作業系統LiteOS
注意 本課程中講的liteos是liteos kernel面向華為雲iot發展的一套iotos,又叫iot link,並不是harmonyos鴻蒙系統。鴻蒙系統中也使用liteos 作為kernel,而且有liteos m和liteos a兩套。實際上鴻蒙中的liteos m和本課程講的liteos...
為電腦裝上作業系統
為電腦裝上作業系統。或者電腦系統不小心破壞了,需要重灌 需要的工具有 1張 系統光碟。也就是常用的xp光碟,可以直接到電腦裝機店 能夠買到,大約 在 5 10元 當然,這個是盜版的,普通使用者無須買正版 太貴了 裝電腦系統很簡單,只需要你有點耐心去等待點 下一步,需要點時間 咱們廢話不多說。首先,你...