深度探索嵌入式操作係統

深度探索嵌入式操作係統 pdf epub mobi txt 電子書 下載2025

出版者:機械工業齣版社
作者:彭東
出品人:
頁數:527
译者:
出版時間:2015-10
價格:99.00元
裝幀:平裝
isbn號碼:9787111514879
叢書系列:Linux/Unix 技術叢書
圖書標籤:
  • 操作係統
  • 嵌入式
  • 嵌入式操作係統
  • 軟件開發
  • 計算機
  • OS
  • 程序設計
  • 計算機科學
  • 嵌入式係統
  • 操作係統
  • 嵌入式操作係統
  • 實時操作係統
  • RTOS
  • ARM
  • Linux
  • C語言
  • 開發
  • 原理
想要找書就要到 小美書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

具體描述

相信很多同行和筆者以前一樣,閱讀過很多操作係統理論方麵的書籍,感覺它們所講述的理論大同小異且比較容易理解,但是真要我們自己去動手開發和實現操作係統時,我們可能連操作係統的第一行代碼該怎麼寫都不知道。為什久會這樣?

因為操作係統是硬件平颱上的第—層軟件,若不瞭解硬件平颱的細節,是不能實現操作係統的,所以本書一開始就選擇瞭一款常用的硬件平颱,並對其進行瞭詳細描述,重點介紹瞭硬件平颱上的實時時鍾、定時器、串口、中斷控製器、內存芯片、flash芯片、CPU、MMU等,然後介紹操作係統架構設計和開發環境與開發工具,尤其開發工具,詳細瞭解開發工具會大大方便後麵的開發工作並解決一些睏惑,最後介紹瞭操作係統的初始化、HAL、內存管理、中斷管理、設備管理、進程管理、文件係統、係統調用接口、應用程序庫。對這些組件的介紹都是先明確這個組件要完成什久功能,達到什麼要求。接著詳述這個組件必須要關注的硬件的細節,然後把我們的想法和設計歸納成數據結構。最後編寫完成這些功能的代碼。

這些內容將奠定本書田晏作係統實踐領域中裏程碑式的地位。

著者簡介

為什麼寫這本書

隨著移動互聯網技術的成熟,物聯網也開始嶄露頭角,由此産生瞭各種小型、低功耗的智能硬件,這些智能硬件被嵌入到移動電話、手錶、冰箱、空調、電視機、洗衣機等常用電子産品中,使這些常用電子産品功能更加強大、更加智能,而且它們可以連接到網絡,便於用戶遠程操控,從而大大改善瞭人們的生活。

因此,嵌入式行業纔變得如此火熱,那些被嵌入到電子産品中的智能硬件,也需要一些小巧、特殊的操作係統軟件纔能正常工作,這類小巧、特殊的操作係統軟件,稱為嵌入式係統。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),需要的讀者可自行下載。

緻謝

我,自幼患病,讀書不多,計算機成瞭唯一的興趣愛好,沒有父母的長期支持,連生活都尚且不能自理,更彆說完成此書瞭,他們對我的幫助和關愛,縱使韆萬言語也難錶一二。由於經常在物理機上測試內核,要拆裝一些設備和器件,這多虧瞭我的小弟,因為他一有時間就幫我做這部分工作。當然還有幫助過我的朋友,有一些是身邊的,有些是網絡中的。對父母、所有的親人、朋友,我也隻有常懷感恩之心,說聲謝謝,謝謝他們一直的支持、幫助,謝謝他們一直對我那滿滿的關愛!

讓筆者和你一起帶著未知,帶著好奇,帶著興奮,踏上操作係統的旅程吧!

圖書目錄

前言
第1章 操作係統的功能及為什麼需要它1
1.1從hello world開始1
1.2 操作係統功能演進3
1.3 小結7
第2章 硬件平颱8
2.1 選擇平颱8
2.1.1 mini24408
2.1.2 mini2440平颱的信息9
2.2 必須要關注的硬件13
2.2.1 原因14
2.2.2 RTC15
2.2.3 定時器16
2.2.4 串口17
2.2.5 中斷控製器18
2.2.6 SDRAM19
2.2.7 Norflash23
2.2.8 Nandflash24
2.3 小結26
第3章 處理器28
3.1 ARM公司與其處理器28
3.2 ARM920T的結構與特性29
3.2.1 ARM920T CPU結構29
3.2.2 ARM920T CPU特性32
3.3 ARM920T存儲體係33
3.3.1 ARM920T地址空間33
3.3.2 ARM920T存儲器格式34
3.3.3 ARM920T存儲地址對齊35
3.4 ARM920T 狀態35
3.4.1 ARM狀態36
3.4.2 Thumb 狀態36
3.5 ARM920T處理器的7種工作模式37
3.6 寄存器38
3.7 異常和中斷43
3.7.1 什麼是異常和中斷43
3.7.2 異常中斷嚮量46
3.8 ARM920T指令集47
3.8.1 指令及其編碼格式48
3.8.2 分支跳轉指令50
3.8.3 數據處理指令53
3.8.4 裝載和存儲指令63
3.8.5 程序狀態寄存器操作指令73
3.8.6 協處理器操作指令76
3.8.7 異常中斷産生指令79
3.9 MMU80
3.9.1 MMU概述80
3.9.2 為什麼要有MMU82
3.9.3 ARM920T CP15協處理器85
3.9.4 MMU 頁錶98
3.9.5 MMU頁麵訪問權限的控製113
3.9.6 MMU的快錶TLB113
3.9.7 MMU的編程接口114
3.10 Cache115
3.10.1 ARM920T的Cache115
3.10.2 Cache的原理116
3.10.3 Cache的類型及要注意的問題117
3.10.4 ARM920T Cache的編程接口119
3.11 小結120
第4章 操作係統內核的設計與構建122
4.1 操作係統內核的設計122
4.1.1 內核要完成的功能123
4.1.2 內核的架構124
4.1.3 分離硬件的相關性126
4.1.4 我們的選擇127
4.2 開發環境及相關工具129
4.2.1 Linux環境129
4.2.2 文本編輯器132
4.2.3 GCC134
4.2.4 LD136
4.2.5 make139
4.3 LMOSEM的構建係統142
4.3.1 LMOSEM的makefile142
4.3.2 LMOSEM的鏈接腳本147
4.4 開發闆的安裝150
4.5 小結154
第5章 語言間調用約定與基本數據結構156
5.1 寄存器使用約定156
5.1.1 寄存器彆名157
5.1.2 參數傳遞與返迴值157
5.2 基本數據結構159
5.2.1 C語言的基本數據結構160
5.2.2 list_h_t數據結構161
5.2.3 spinlock_t數據結構164
5.2.4 kwlst_t數據結構165
5.2.5 sem_t數據結構166
5.3 數據結構存在於內存中的形式168
5.4 C與匯編的混用170
5.5 小結174
第6章 內核初始化175
6.1 開始175
6.1.1 第一行匯編代碼175
6.1.2 第一個C函數178
6.2 MMU和中斷嚮量的初始化181
6.2.1 初始化MMU181
6.2.2 復製中斷嚮量186
6.3 串口初始化190
6.3.1 串口硬件190
6.3.2 內核的printf196
6.4 機器數據結構201
6.4.1 設計數據結構201
6.4.2 確定一些重要數據結構與內核的地址203
6.5 初級內存管理初始化205
6.5.1 設計一些數據結構205
6.5.2 初始化mmapdsc_t結構數組209
6.5.3 建立起內存分配數據結構212
6.6 中斷初始化215
6.6.1 設計一些數據結構215
6.6.2 初始中斷源描述符220
6.7 初始化測試222
6.8 小結225
第7章 內存管理226
7.1 內核功能層入口226
7.2 內存管理組件的設計228
7.3 塊級內存管理229
7.3.1 塊級內存管理數據結構視圖229
7.3.2 塊級內存管理接口230
7.3.3 主分配函數232
7.3.4 分配時查找alcfrelst_t 234
7.3.5 分配時查找和操作mmapdsc_t236
7.3.6 分配代碼寫得對嗎239
7.3.7 主釋放函數240
7.3.8 釋放時查找alcfrelst_t 241
7.3.9 釋放時查找和操作mmapdsc_t242
7.3.10 測試塊級內存管理層246
7.4 頁級內存管理248
7.4.1 頁級內存管理接口及調用流程248
7.4.2 相關的數據結構251
7.4.3 頁級內存管理初始化254
7.4.4 分配主函數256
7.4.5 分配時查找mplhead_t257
7.4.6 分配時新建頁級內存池258
7.4.7 分配時操作mplhead_t262
7.4.8 分配代碼寫得對嗎263
7.4.9 釋放主函數265
7.4.10 釋放時查找mplhead_t266
7.4.11 釋放時操作mplhead_t268
7.4.12 釋放時刪除頁級內存池269
7.4.13 測試頁級內存管理層271
7.5 字級內存管理273
7.5.1 字級內存接口及調用流程274
7.5.2 相關的數據結構275
7.5.3 分配主函數276
7.5.4 分配時查找mplhead_t278
7.5.5 分配時新建字級內存池279
7.5.6 分配時操作mplhead_t282
7.5.7 分配代碼寫得對嗎283
7.5.8 釋放主函數285
7.5.9 釋放時查找mplhead_t285
7.5.10 釋放時操作mplhead_t287
7.5.11 釋放時刪除字級內存池288
7.5.12 測試字級內存管理層289
7.6 小結292
第8章 中斷管理293
8.1 中斷與中斷控製器293
8.1.1 什麼是中斷293
8.1.2 S3C2440A中斷控製器294
8.2 中斷管理的架構與相關數據結構298
8.2.1 中斷管理的架構298
8.2.2 設計數據結構intfltdsc_t和intserdsc_t298
8.3 中斷處理301
8.3.1 中斷輔助例程301
8.3.2 從中斷嚮量開始305
8.3.3 保存CPU上下文306
8.3.4 中斷主分派例程310
8.3.5 確定中斷源314
8.3.6 調用中斷處理例程317
8.4 安裝中斷迴調例程319
8.5 小結322
第9章 驅動模型323
9.1 操作係統內核如何管理設備323
9.1.1 分權而治323
9.1.2 設備類型325
9.1.3 驅動程序327
9.2 相關數據結構328
9.2.1 驅動329
9.2.2 派發例程類型329
9.2.3 設備ID330
9.2.4 設備331
9.2.5 IO包332
9.2.6 設備錶333
9.3 驅動模型的基礎設施335
9.3.1 驅動程序從哪裏執行335
9.3.2 新建與注冊設備340
9.3.3 注冊迴調函數344
9.3.4 發送IO包345
9.3.5 調用驅動程序函數346
9.3.6 等待服務347
9.3.7 完成服務350
9.3.8 驅動模型輔助函數352
9.4 systick驅動程序實例356
9.4.1 systick硬件356
9.4.2 systick驅動程序框架360
9.4.3 systick驅動程序實現362
9.4.4 測試systick驅動程序368
9.5 RTC驅動程序實例370
9.5.1 RTC硬件370
9.5.2 RTC驅動程序實現375
9.6 小結385
第10章 進程386
10.1 應用程序的運行386
10.1.1 程序運行需要什麼資源387
10.1.2 任何時刻資源都可用嗎388
10.1.3 提齣多道程序模型389
10.2 相關的數據結構390
10.2.1 設計進程的數據結構391
10.2.2 調度進程錶392
10.3 LMOSEM內核的第一個進程394
10.3.1 進程管理組件的初始化395
10.3.2 建立空轉進程396
10.3.3 空轉進程運行399
10.4 新建進程404
10.4.1 分配進程描述符404
10.4.2 分配內存空間406
10.4.3 加入進程調度錶408
10.5 進程調度410
10.5.1 調度算法410
10.5.2 處理進程時間片411
10.5.3 檢查調度狀態414
10.5.4 選擇進程415
10.5.5 進程切換418
10.5.6 進程等待與喚醒421
10.5.7 進程測試425
10.6 小結428
第11章 文件係統430
11.1 文件係統設計430
11.1.1 文件係統隻是一個設備430
11.1.2 數據格式與存儲塊432
11.1.3 如何組織文件433
11.1.4 關於我們文件係統的限製434
11.2 相關的數據結構434
11.2.1 超級塊435
11.2.2 位圖435
11.2.3 目錄437
11.2.4 文件管理頭438
11.3 文件係統格式化440
11.3.1 建立超級塊440
11.3.2 建立位圖445
11.3.3 建立根目錄448
11.4 文件係統基礎操作452
11.4.1 獲取與釋放根目錄文件453
11.4.2 字符串操作455
11.4.3 分解路徑名457
11.4.4 檢查文件是否存在459
11.5 文件操作460
11.5.1 新建文件461
11.5.2 刪除文件463
11.5.3 打開文件466
11.5.4 讀寫文件469
11.5.5 關閉文件472
11.5.6 驅動整閤473
11.6 文件係統測試475
11.6.1 格式化測試475
11.6.2 文件操作測試479
11.7 小結482
第12章 係統調用與應用程序庫483
12.1 係統調用機製483
12.1.1 軟中斷指令484
12.1.2 傳遞係統調用參數486
12.1.3 係統調用分發器488
12.2 時間管理係統調用489
12.3 進程管理係統調用492
12.3.1 進程的運行與退齣492
12.3.2 獲取進程的ID494
12.4 內存管理係統調用496
12.5 設備與文件係統調用498
12.5.1 設備與文件的打開498
12.5.2 設備與文件的關閉506
12.5.3 設備與文件的讀寫508
12.5.4 設備與文件的控製512
12.6 應用程序庫514
12.7 測試520
12.8 小結526
後記528
· · · · · · (收起)

讀後感

評分

評分

評分

評分

評分

用戶評價

评分

深入淺齣,很好的入門教程

评分

略度過一遍,整本書思路清晰,作者的錶達能力贊。從零開始,實現瞭操作係統的基本功能,沒有虛擬內存,對於希望瞭解操作係統運行原理的讀者會十分有用。可結閤uCos學習!

评分

深入淺齣,很好的入門教程

评分

作者用樸實的筆法,一步一步帶領讀者從無到有實現瞭一個嵌入式操作係統。本書涵蓋瞭很多硬件、軟件架構方麵的知識點,是在是一部值得反復閱讀的好書。

评分

堆砌

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.quotespace.org All Rights Reserved. 小美書屋 版权所有