為什麼寫這本書
隨著移動互聯網技術的成熟,物聯網也開始嶄露頭角,由此産生瞭各種小型、低功耗的智能硬件,這些智能硬件被嵌入到移動電話、手錶、冰箱、空調、電視機、洗衣機等常用電子産品中,使這些常用電子産品功能更加強大、更加智能,而且它們可以連接到網絡,便於用戶遠程操控,從而大大改善瞭人們的生活。
因此,嵌入式行業纔變得如此火熱,那些被嵌入到電子産品中的智能硬件,也需要一些小巧、特殊的操作係統軟件纔能正常工作,這類小巧、特殊的操作係統軟件,稱為嵌入式係統。2013年下半年,我開始學習嵌入式係統,並編寫瞭一個嵌入式操作係統—LMOSEM。在互聯網上也認識瞭不少研究嵌入式的朋友,在他們的要求和規勸下,我終於有勇氣把我研究齣來的東西歸納、整理成冊,也算是我學習的筆記,於是就有瞭這本書。雖然有很多的顧慮,怕貽笑方傢、怕誤導同道……但是我的每行代碼、每個點子,都在實機上測試過並證明瞭其正確性,所以也就心下一片坦然瞭。如果這本書能夠被後來者藉鑒一二,或者解決他們的一些疑惑,我自然欣慰萬分。
關於LMOSEM
關於LMOSEM,這得從LMOS開始說起。2010年下半年,我開始準備要寫個操作係統內核,沒有其他目的,隻是齣於學習,齣於興趣。由於是自己獨立從零開始設計、編寫的,我覺得自己這種行為有點瘋狂,索性用LMOS(liberty madness operating system)命名瞭我的操作係統。LMOS經過這幾年的獨立開發,現在已經發布瞭6個測試版本。先後從32位單CPU架構發展到64位多CPU架構,現在的LMOS已經是多進程、多綫程、多CPU、支持虛擬內存的x86_64體係下的操作係統內核。LMOS的這些特性,非常適閤通用計算機領域,如PC、工作站、小型服務器。這些特性導緻LMOS代碼量龐大,一些組件不夠小巧,削剪起來非常復雜,很難保證削剪後的組件是否健壯,因此LMOS不適閤於嵌入式領域,所以筆者纔重新開發瞭LMOSEM—適閤嵌入式領域的操作係統。
LMOSEM依然刪除瞭很多代碼,因為寫書要做到簡單,便於理解。即便如此,LMOSEM依然包含瞭現代操作係統的大部分重要組件,如內存管理、進程管理、驅動模型、文件係統等。這些組件的實現過程在本書中都會有詳細的介紹。LMOSEM不支持實時性功能,嵌入式操作係統也不一定要是實時性的操作係統,何況我們是齣於學習的目的。為瞭代碼的清晰、簡單,我們暫不考慮安全性和性能方麵的問題。等到明白瞭操作係統原理,我們再去不斷修正、優化,使之功能變得更多,性能變得更強。筆者開發的LMOSEM操作係統項目,是在Linux操作係統下開發的,用到瞭Linux操作係統的很多工具。筆者不會和讀者討論為什麼不用常用的Windows係統,也不會說誰好、誰不好。如果讀者非常喜歡Windows係統,那麼也可以嘗試著把這個項目遷移到Windows係統下。但是筆者書中演示的環境還是Linux係統。關於如何搭建開發環境,本書後麵的章節有詳細的介紹。在那裏讀者會發現用Linux係統開發LMOSEM內核有很多方便之處,如會用到的MAKE、GCC、LD等,這些工具在Linux係統下都很容易得到,在Windows係統下雖然也能做到,但相對麻煩一點。何況今天的Linux係統已經很好用瞭。
讀者對象
如果讀者是一位純粹的操作係統愛好者,對其有著濃厚的興趣,那麼本書將非常適閤。
如果讀者是嵌入式領域的從業者或者學生,也可以從本書中獲得很多幫助。
如果讀者是一位普通的應用軟件開發者,業餘時間也可以翻翻此書,書中的一些設計方法和編程手段,或許可以藉鑒一二。
如果你隻是想瞭解一些計算機硬件係統和軟件係統的常識,那麼本書同樣會讓你獲益。
如何閱讀本書
為瞭能更輕鬆地閱讀這本書,筆者建議先瞭解C語言這門編程語言,對數據結構有所瞭解就更好瞭。除這些外,筆者假定讀者沒有其他任何技能。除瞭需要的上述技能,讀者還需要對操作係統有強大的興趣和求知欲,要有堅強的意誌、永遠不放棄的精神。開發操作係統內核本身就不是件容易的事,必然會有很多問題在等著我們,但是遇到問題不要害怕,靜下心從容麵對,隻要我們不放棄,問題最終會解決。
本書很簡單,沒有拐彎抹角,沒有反復修飾,但是必要的細節從不漏掉。寜可在細節上囉嗦一點,也不在不相關的地方多寫一句。
本書的最終目的是構建一個用於學習的嵌入式操作係統內核,並工作在真正的物理機上。為瞭達到這一目的,本書大體上分為三部分:綜述、硬件部分和軟件部分。
綜述部分(第1章)。
第1章,先說明操作係統的概念、功能和演進曆史,最後得齣現代操作係統的模型,使我們可以瞭解操作係統的輪廓。
硬件部分(第2~3章)。
第2章,從選擇硬件平颱開始,首先概述硬件平颱的整體情況,接著瞭解編寫操作係統內核必需的一些平颱上的組件,如實時時鍾、定時器、串口、中斷控製器、內存芯片、Flash芯片、CPU、MMU等。讓讀者有初步的印象,在寫代碼用到某個組件時再詳述其內部編程細節。
第3章,詳細介紹處理器,重點介紹處理器的結構和特性、處理器的地址空間、處理器的狀態和工作模式、處理器的寄存器和指令集。最後介紹處理器中的MMU和Cache,對於MMU,主要介紹MMU的作用和它對操作係統內核開發的影響、如何對MMU編程、MMU的幾種地址映射方式。而對於Cache,重點介紹Cache的作用、Cache的類型、Cache的使用。
. 軟件部分(第4~12章)。
第4章,介紹操作係統內核設計、操作係統內核的開發環境、開發操作係統內核的工具:GCC、LD、MAKE,以及它們的使用方法,最後介紹硬件平颱的安裝與測試。
第5章,首先介紹C語言使用寄存器的約定,以及它是如何處理參數、返迴值的。接著介紹C語言基本數據類型的位寬及占用內存的大小,並用它們構建後麵將要用到的一些基本的數據結構,如list_h_t、spinlock_t、kwlst_t、sem_t。然後介紹C語言的數據結構在內存中存在的形式、對齊方式。最後介紹GCC獨有的嵌入匯編代碼的方式。
第6章,開始介紹LMOSEM的初始化,從第一行匯編代碼開始、初始化MMU和中斷嚮量、初始化串口設備、初始化內存管理數據結構和中斷相應的數據結構,最後對一些數據結構進行測試。
第7章,開始介紹LMOSEM的內存管理組件。LMOSEM的內存管理組件分為三層:塊級內存管理、頁級內存管理、字級內存管理,這三個層分彆應對不同的內存分配請求。本章將結閤實際代碼介紹如何一步步實現這三大內存管理層。
第8章,介紹LMOSEM的中斷管理組件,內容包括中斷控製器的細節、中斷管理組件的結構、如何處理中斷、安裝中斷處理的迴調函數等。
第9章,介紹LMOSEM的設備驅動模型,其中介紹LMOSEM如何管理眾多的硬件設備、LMOSEM支持的設備類型、驅動模型的數據結構和基礎性代碼,最後用兩個驅動程序實例介紹如何在LMOSEM的驅動模型下編寫規範的設備驅動程序。
第10章,介紹LMOSEM的進程管理組件,包括進程的由來、進程相關的數據結構、係統空轉進程的建立與運行、進程調度、新建進程、進程的睡眠與喚醒、進程測試等相關內容。
第11章,介紹LMOSEM的文件係統組件,包括文件係統的設計、文件係統的建立、文件係統的基礎操作、文件本身的操作,如文件的打開、新建、讀寫、刪除等。最後對文件係統組件進行嚴格的測試。
第12章,介紹LMOSEM的接口,包括許多LMOSEM的API和庫函數的實現細節,主要包括時間、進程、內存、文件與設備、標準輸入/輸齣等方麵的API和庫函數。
勘誤和支持
由於筆者水平有限,加之編寫時間倉促,書中難免會齣現一些不準確的地方,懇請讀者批評指正,在技術之路上共勉。我的CU博客地址是:http://blog.chinaunix.net/uid/28032128.html。本書源代碼已製作成光盤鏡像文件,並上傳到華章網站(www.hzbook.com),需要的讀者可自行下載。
緻謝
我,自幼患病,讀書不多,計算機成瞭唯一的興趣愛好,沒有父母的長期支持,連生活都尚且不能自理,更彆說完成此書瞭,他們對我的幫助和關愛,縱使韆萬言語也難錶一二。由於經常在物理機上測試內核,要拆裝一些設備和器件,這多虧瞭我的小弟,因為他一有時間就幫我做這部分工作。當然還有幫助過我的朋友,有一些是身邊的,有些是網絡中的。對父母、所有的親人、朋友,我也隻有常懷感恩之心,說聲謝謝,謝謝他們一直的支持、幫助,謝謝他們一直對我那滿滿的關愛!
讓筆者和你一起帶著未知,帶著好奇,帶著興奮,踏上操作係統的旅程吧!
相信很多同行和筆者以前一樣,閱讀過很多操作係統理論方麵的書籍,感覺它們所講述的理論大同小異且比較容易理解,但是真要我們自己去動手開發和實現操作係統時,我們可能連操作係統的第一行代碼該怎麼寫都不知道。為什久會這樣?
因為操作係統是硬件平颱上的第—層軟件,若不瞭解硬件平颱的細節,是不能實現操作係統的,所以本書一開始就選擇瞭一款常用的硬件平颱,並對其進行瞭詳細描述,重點介紹瞭硬件平颱上的實時時鍾、定時器、串口、中斷控製器、內存芯片、flash芯片、CPU、MMU等,然後介紹操作係統架構設計和開發環境與開發工具,尤其開發工具,詳細瞭解開發工具會大大方便後麵的開發工作並解決一些睏惑,最後介紹瞭操作係統的初始化、HAL、內存管理、中斷管理、設備管理、進程管理、文件係統、係統調用接口、應用程序庫。對這些組件的介紹都是先明確這個組件要完成什久功能,達到什麼要求。接著詳述這個組件必須要關注的硬件的細節,然後把我們的想法和設計歸納成數據結構。最後編寫完成這些功能的代碼。
這些內容將奠定本書田晏作係統實踐領域中裏程碑式的地位。
發表於2024-12-22
深度探索嵌入式操作係統 2024 pdf epub mobi 電子書 下載
圖書標籤: 操作係統 嵌入式 嵌入式操作係統 軟件開發 計算機 OS 程序設計 計算機科學
對嵌入式硬件結構、內存數據結構、存儲方式描述比較清晰,能夠給予嵌入式學習進行指導。推薦讀。
評分堆砌
評分對嵌入式硬件結構、內存數據結構、存儲方式描述比較清晰,能夠給予嵌入式學習進行指導。推薦讀。
評分略度過一遍,整本書思路清晰,作者的錶達能力贊。從零開始,實現瞭操作係統的基本功能,沒有虛擬內存,對於希望瞭解操作係統運行原理的讀者會十分有用。可結閤uCos學習!
評分深入淺齣,很好的入門教程
深度探索嵌入式操作係統 2024 pdf epub mobi 電子書 下載