注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)操作系統(tǒng)深度探索嵌入式操作系統(tǒng):從零開始設(shè)計、架構(gòu)和開發(fā)

深度探索嵌入式操作系統(tǒng):從零開始設(shè)計、架構(gòu)和開發(fā)

深度探索嵌入式操作系統(tǒng):從零開始設(shè)計、架構(gòu)和開發(fā)

定 價:¥99.00

作 者: 彭東
出版社: 機械工業(yè)出版社
叢編項:
標(biāo) 簽: 操作系統(tǒng)/系統(tǒng)開發(fā) 計算機/網(wǎng)絡(luò) 系統(tǒng)開發(fā)

ISBN: 9787111514879 出版時間: 2015-10-01 包裝: 平裝
開本: 16開 頁數(shù): 527 字?jǐn)?shù):  

內(nèi)容簡介

  本書的*終目的是構(gòu)建一個用于學(xué)習(xí)的嵌入式操作系統(tǒng)內(nèi)核,并工作在真正的物理機上。為了達(dá)到這一目的,本書大體上分為兩部分:硬件部分和軟件部分。硬件部分首先分析了我們選擇的平臺,以及這個平臺上的組件。軟件部分首先分析了操作系統(tǒng)內(nèi)核是干什么的,其中都有些什么組件,這些個組件分別是干什么的有什么作用。然后是如何設(shè)計操作系統(tǒng)架構(gòu)并將這些重要的組件組合在一起,以及設(shè)計時需要注意些什么。*后介紹了構(gòu)建操作系統(tǒng)的工具。

作者簡介

  彭東,中國計算機領(lǐng)域的“鬼才”,自幼患病,從2008年開始直到現(xiàn)在,始終不間斷地研究和自學(xué)計算機,精通各種編程語言,精通算法與數(shù)據(jù)結(jié)構(gòu),精通編譯原理,精通操作系統(tǒng)理論并十分了解現(xiàn)有的Linux和Windows操作系統(tǒng),還精通X86和ARM兩大硬件平臺體系結(jié)構(gòu)。先后獨自從零開始開發(fā)了LMOS、LMOSEM兩大操作系統(tǒng)內(nèi)核,現(xiàn)在的LMOS已經(jīng)是多進程、多線程、多CPU、支持虛擬內(nèi)存的x86_64體系下的全64位操作系統(tǒng)內(nèi)核,代碼量已經(jīng)有10萬多行了,而LMOSEM則是本書中所寫的基于ARM平臺的嵌入式操作系統(tǒng)。LMOS的早期版本曾在IT168等社區(qū)發(fā)布,引起了廣泛討論,獲得了極高的評價。

圖書目錄

刖吾
第1章操作系統(tǒng)的功能及為什么
需要它 1
1.1從hello world開始 1
1.2操作系統(tǒng)功能演進 3
1.3小結(jié) 7
第2章硬件平臺 8
2.1選擇平臺 8
2.1.1 mini2440 8
2.1.2 mini2440平臺的信息 9
2.2必須要關(guān)注的硬件 13
2.2.1原因 14
2.2.2 RTC 15
2.2.3定時器 16
2.2.4串口 17
2.2.5中斷控制器 18
2.2.6 SDRAM 19
2.2.7 NOmaSh 23
2.2.8 Nandflash 24
2.3小結(jié) 26
第3章處理器 28
3.1 ARM公司與其處理器 28
3.2 ARM920T的結(jié)構(gòu)與特性 29
3.2.1 ARM920T CPU結(jié)構(gòu) 29
3.2.2 ARM920TCPU特性 32
3.3 ARM920T存儲體系 33
3.3.1 ARM920T地址空間 33
3.3.2 ARM920T存儲器格式 34
3.3.3 ARM920T存儲地址對齊 -35
3.4 ARM920T狀態(tài) 35
3.4.1 ARM狀態(tài) 36
3.4.2 Thumb狀態(tài) 36
3.5ARM920T處理器的7種工作模式 37
3.6寄存器 38
3.7異常和中斷 43
3.7.1什么是異常和中斷 43
3.7.2異常中斷向量 46
3.8ARM920T指令集 47
3.8.1 指令及其編碼格式 48
3.8.2分支跳轉(zhuǎn)指令 50
3.8.3數(shù)據(jù)處理指令 53
3.8.4裝載和存儲指令 63
3.8.5程序狀態(tài)寄存器操作指令 73
3.8.6協(xié)處理器操作指令 76
3.8.7異常中斷產(chǎn)生指令 79
3.9 MMU 80
3.9.1 MMU概述 80
? 3.9.2為什么要有MMU 82
3.9.3 ARM920T CP15協(xié)處理器85
3.9.4 MMU頁表
3.9.5 MMU頁面訪問權(quán)限的控制 98
3.9.6 MMU的快表TLB 113
3.9.7 MMU的編程接口 114
3.10 Cache115
3.10.1 ARM920T的Cache 115
3.10.2 Cache的原理116
3.10.3 Cache的類型及要注意的
問題117
3.10.4 ARM920T Cache的編程接口 l 19
3.11小結(jié) 120
第4章操作系統(tǒng)內(nèi)核的設(shè)計與構(gòu)建 122
4.1 操作系統(tǒng)內(nèi)核的設(shè)計 122
4.1.1 內(nèi)核要完成的功能 123
4.1.2內(nèi)核的架構(gòu) 124
4.1.3分離硬件的相關(guān)性 126
4.1.4我們的選擇 127
4.2開發(fā)環(huán)境及相關(guān)工具 129
4.2.1 Linux環(huán)境 129
4.2.2文本編輯器 132
4.2.3 GCC 134
4.2.4 LD 136
4.2.5 make “l(fā)39
4.3 LMOSEM的構(gòu)建系統(tǒng) 142
4.3.1 LMOSEM的makefile 142
4.3.2 LMOSEM的鏈接腳本 147
4.4開發(fā)板的安裝 150
4.5小結(jié) 154
第5章語言間調(diào)用約定與基本數(shù)據(jù)
結(jié)構(gòu) 156
5.1寄存器使用約定 156
5.1.1寄存器別名 157
5.1.2參數(shù)傳遞與返回值 157
5.2基本數(shù)據(jù)結(jié)構(gòu) 159
5.2.1 C語言的基本數(shù)據(jù)結(jié)構(gòu) 160
5.2.2 list h t數(shù)據(jù)結(jié)構(gòu) 16l
5.2.3 spinlock_t數(shù)據(jù)結(jié)構(gòu) 164
5.2.4 kwlst t數(shù)據(jù)結(jié)構(gòu) 165
5.2.5 sem t數(shù)據(jù)結(jié)構(gòu) 166
5.3數(shù)據(jù)結(jié)構(gòu)存在于內(nèi)存中的形式 l68
5.4 C與匯編的混用 170
5.5小結(jié) 174
第6章內(nèi)核初始化 175
6.1開始 175
6.1.1**行匯編代碼 175
6.1.2**個C函數(shù) 178
6.2 MMU和中斷向量的初始化 181
6.2.1初始化MMU “181
6.2.2復(fù)制中斷向量 -186
6.3串口初始化 190
6.3.1串口硬件 190
6.3.2 內(nèi)核的printf 196
6.4機器數(shù)據(jù)結(jié)構(gòu) 201
6.4.1設(shè)計數(shù)據(jù)結(jié)構(gòu) 201
6.4.2確定一些重要數(shù)據(jù)結(jié)構(gòu)與內(nèi)核
的地址 ”203
6.5初級內(nèi)存管理初始化 205
6.5.1設(shè)計一些數(shù)據(jù)結(jié)構(gòu) -205
6.5.2初始化mmapdsc_t結(jié)構(gòu)數(shù)組 209
6.5.3建立起內(nèi)存分配數(shù)據(jù)結(jié)構(gòu) 212
6.6中斷初始化 215
6.6.1設(shè)計一些數(shù)據(jù)結(jié)構(gòu) 215
6.6.2初始中斷源描述符 -220
6.7初始化測試 222
6.8小結(jié) 225
?第7章內(nèi)存管理 226
7.1 內(nèi)核功能層入口 226
7.2 內(nèi)存管理組件的設(shè)計 228
7.3塊級內(nèi)存管理 229
7.3.1塊級內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)視圖 229
7.3.2塊級內(nèi)存管理接口 230
7.3.3主分配函數(shù) 232
7.3.4分配時查找alcfrelst_t 234
7.3.5分配時查找和操作
mm叩dsc_t 236
7.3.6分配代碼寫得對嗎 239
7.3.7主釋放函數(shù) 240
7.3.8釋放時查找alcfrelst 241
7.3.9釋放時查找和操作
HHnapdscj 242
7.3.10測試塊級內(nèi)存管理層 246
7.4頁級內(nèi)存管理 -248
7.4.1 頁級內(nèi)存管理接口及調(diào)用
流程 248
7.4.2相關(guān)的數(shù)據(jù)結(jié)構(gòu) 25 1
7.4.3頁級內(nèi)存管理初始化 254
7.4.4分配主函數(shù) 256
7.4.5分配時查找mplhead-t 257
7.4.6分配時新建頁級內(nèi)存池 258
7.4.7分配時操作mplhead_t 262
7.4.8分配代碼寫得對嗎 263
7.4.9釋放主函數(shù) 265
7.4.10釋放時查找mplhead-t ”266
7.4.11釋放時操作mpmeadj “268
7.4.12釋放時刪除頁級內(nèi)存池 269
7.4.13測試頁級內(nèi)存管理層 271
7.5字級內(nèi)存管理 273
7.5.1字級內(nèi)存接口及調(diào)用流程 274
7.5.2相關(guān)的數(shù)據(jù)結(jié)構(gòu) 275
7.5.3分配主函數(shù) 276
^
7.5.4分配時查找mplhead』 278
7.5.5分配時新建字級內(nèi)存池 279
7.5.6分配時操作mplhead_t 282
7.5.7分配代碼寫得對嗎 283
7.5.8釋放主函數(shù) 一285
7.5.9釋放時查找mpmead_j 285
7.5.10釋放時操作mplhead_t “287
7.5.11釋放時刪除字級內(nèi)存池 “288
7.5.12測試字級內(nèi)存管理層 289
7.6小結(jié) 292
第8章中斷管理 293
8.1 中斷與中斷控制器 293
8.1.1什么是中斷 --293
8.1.2 S3C2440A中斷控制器 294
8.2 中斷管理的架構(gòu)與相關(guān)數(shù)據(jù)
結(jié)構(gòu) 298
8.2.1 中斷管理的架構(gòu) -298
8.2.2設(shè)計數(shù)據(jù)結(jié)構(gòu)intfltdscj
和intserdsc-t ”298
8.3中斷處理 -301
8.3.1 中斷輔助例程 301
8.3.2從中斷向量開始 “305
8.3.3 保存CPU上下文 306
8.3.4中斷主分派例程 3 lO
8.3.5確定中斷源 “314
8.3.6調(diào)用中斷處理例程 317
8.4安裝中斷回調(diào)例程 319
8.5小結(jié) 322
第9章驅(qū)動模型 323
9.1操作系統(tǒng)內(nèi)核如何管理設(shè)備 ”323
9.1.1分權(quán)而治 323
9.1.2設(shè)備類型 325
9.1.3驅(qū)動程序 327
?9.2相關(guān)數(shù)據(jù)結(jié)構(gòu) 。328
9.2.1驅(qū)動 一329
9.2.2派發(fā)例程類型 一329
9.2.3設(shè)備ID “330
9.2.4設(shè)備 “331
9.2.5 10包 “332
9.2.6設(shè)備表 ”333
9.3驅(qū)動模型的基礎(chǔ)設(shè)施 335
9.3.1驅(qū)動程序從哪里執(zhí)行 335
9.3.2新建與注冊設(shè)備 340
9.3.3注冊回調(diào)函數(shù) ”344
9.3.4發(fā)送IO包 一345
9.3.5調(diào)用驅(qū)動程序函數(shù) 346
9.3.6等待服務(wù) ”347
9.3.7完成服務(wù) ”350
9.3.8驅(qū)動模型輔助函數(shù) 352
9.4 systick驅(qū)動程序?qū)嵗?~356
9.4.1 systick硬件 ”356
9.4.2 systick驅(qū)動程序框架 -360
9.4.3 systick驅(qū)動程序?qū)崿F(xiàn) ‘362
9.4.4測試systick驅(qū)動程序 368
9.5 RTC驅(qū)動程序?qū)嵗?-370
9.5.1 RTC硬件 一370
9.5.2 RTC驅(qū)動程序?qū)崿F(xiàn) 375
9.6小結(jié) ”385
第10章進程 386
10.1應(yīng)用程序的運行 386
10.1.1程序運行需要什么資源 387
10.1.2任何時刻資源都可用嗎 388
10.1.3提出多道程序模型 389
10.2相關(guān)的數(shù)據(jù)結(jié)構(gòu) 390
10.2.1設(shè)計進程的數(shù)據(jù)結(jié)構(gòu) 391
10.2.2調(diào)度進程表 ”392
10.3 LMOSEM內(nèi)核的**個進程 394
10.3.1進程管理組件的初始化 395
10.3.2建立空轉(zhuǎn)進程 396
10.3.3空轉(zhuǎn)進程運行 399
10.4新建進程 404
10.4.1分配進程描述符 404
10.4.2分配內(nèi)存空間 406
10.4.3加入進程調(diào)度表 408
10.5進程調(diào)度 410
10.5.1調(diào)度算法 ”410
10.5.2處理進程時間片 411
10.5.3檢查調(diào)度狀態(tài) 414
10.5.4選擇進程 ”415
10.5.5進程切換 一418
10.5.6進程等待與喚醒 421
10.5.7進程測試 “425
10.6小結(jié) -428
第11章文件系統(tǒng) 430
11.1文件系統(tǒng)設(shè)計 430
11.1.1文件系統(tǒng)只是一個設(shè)備 430
11.1.2數(shù)據(jù)格式與存儲塊 432
11.1.3如何組織文件 433
11.1.4關(guān)于我們文件系統(tǒng)的限制 434
11.2相關(guān)的數(shù)據(jù)結(jié)構(gòu) 434
11.2.1超級塊 435
11.2.2位圖 435
11.2.3 目錄 一437
11.2.4文件管理頭 “438
11.3文件系統(tǒng)格式化 440
11.3.1建立超級塊 ”440
11.3.2建立位圖 445
11.3.3建立根目錄 448
11.4文件系統(tǒng)基礎(chǔ)操作 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關(guān)閉文件 472
11.5.6驅(qū)動整合 473
11.6文件系統(tǒng)測試 475
11.6.1格式化測試 475
11.6.2文件操作測試 479
11.7小結(jié) 482
第12章系統(tǒng)調(diào)用與應(yīng)用程序庫 483
12.1系統(tǒng)調(diào)用機制 483
12.1.1軟中斷指令 484
12.1.2傳遞系統(tǒng)調(diào)用參數(shù) 486
12.1.3 系統(tǒng)調(diào)用分發(fā)器 488
12.2時間管理系統(tǒng)調(diào)用 489
12.3進程管理系統(tǒng)調(diào)用 492
12.3.1進程的運行與退出 492
12.3.2獲取進程的ID 494
12.4內(nèi)存管理系統(tǒng)調(diào)用 496
12.5設(shè)備與文件系統(tǒng)調(diào)用 498
12.5.1設(shè)備與文件的打開 498
12.5.2設(shè)備與文件的關(guān)閉 506
12.5.3設(shè)備與文件的讀寫 508
12.5.4設(shè)備與文件的控制 5 12
12.6應(yīng)用程序庫 514
12.7測試 520
12.8小結(jié) 526
后記 528

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號