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

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

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

定 價(jià):¥99.00

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

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

內(nèi)容簡介

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

作者簡介

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

圖書目錄

刖吾
第1章操作系統(tǒng)的功能及為什么
需要它 1
1.1從hello world開始 1
1.2操作系統(tǒng)功能演進(jìn) 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定時(shí)器 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è)計(jì)與構(gòu)建 122
4.1 操作系統(tǒng)內(nèi)核的設(shè)計(jì) 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**個(gè)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機(jī)器數(shù)據(jù)結(jié)構(gòu) 201
6.4.1設(shè)計(jì)數(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è)計(jì)一些數(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è)計(jì)一些數(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è)計(jì) 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分配時(shí)查找alcfrelst_t 234
7.3.5分配時(shí)查找和操作
mm叩dsc_t 236
7.3.6分配代碼寫得對嗎 239
7.3.7主釋放函數(shù) 240
7.3.8釋放時(shí)查找alcfrelst 241
7.3.9釋放時(shí)查找和操作
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分配時(shí)查找mplhead-t 257
7.4.6分配時(shí)新建頁級內(nèi)存池 258
7.4.7分配時(shí)操作mplhead_t 262
7.4.8分配代碼寫得對嗎 263
7.4.9釋放主函數(shù) 265
7.4.10釋放時(shí)查找mplhead-t ”266
7.4.11釋放時(shí)操作mpmeadj “268
7.4.12釋放時(shí)刪除頁級內(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分配時(shí)查找mplhead』 278
7.5.5分配時(shí)新建字級內(nèi)存池 279
7.5.6分配時(shí)操作mplhead_t 282
7.5.7分配代碼寫得對嗎 283
7.5.8釋放主函數(shù) 一285
7.5.9釋放時(shí)查找mpmead_j 285
7.5.10釋放時(shí)操作mplhead_t “287
7.5.11釋放時(shí)刪除字級內(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è)計(jì)數(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ū)動(dòng)模型 323
9.1操作系統(tǒng)內(nèi)核如何管理設(shè)備 ”323
9.1.1分權(quán)而治 323
9.1.2設(shè)備類型 325
9.1.3驅(qū)動(dòng)程序 327
?9.2相關(guān)數(shù)據(jù)結(jié)構(gòu) 。328
9.2.1驅(qū)動(dòng) 一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ū)動(dòng)模型的基礎(chǔ)設(shè)施 335
9.3.1驅(qū)動(dòng)程序從哪里執(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ū)動(dòng)程序函數(shù) 346
9.3.6等待服務(wù) ”347
9.3.7完成服務(wù) ”350
9.3.8驅(qū)動(dòng)模型輔助函數(shù) 352
9.4 systick驅(qū)動(dòng)程序?qū)嵗?~356
9.4.1 systick硬件 ”356
9.4.2 systick驅(qū)動(dòng)程序框架 -360
9.4.3 systick驅(qū)動(dòng)程序?qū)崿F(xiàn) ‘362
9.4.4測試systick驅(qū)動(dòng)程序 368
9.5 RTC驅(qū)動(dòng)程序?qū)嵗?-370
9.5.1 RTC硬件 一370
9.5.2 RTC驅(qū)動(dòng)程序?qū)崿F(xiàn) 375
9.6小結(jié) ”385
第10章進(jìn)程 386
10.1應(yīng)用程序的運(yùn)行 386
10.1.1程序運(yùn)行需要什么資源 387
10.1.2任何時(shí)刻資源都可用嗎 388
10.1.3提出多道程序模型 389
10.2相關(guān)的數(shù)據(jù)結(jié)構(gòu) 390
10.2.1設(shè)計(jì)進(jìn)程的數(shù)據(jù)結(jié)構(gòu) 391
10.2.2調(diào)度進(jìn)程表 ”392
10.3 LMOSEM內(nèi)核的**個(gè)進(jìn)程 394
10.3.1進(jìn)程管理組件的初始化 395
10.3.2建立空轉(zhuǎn)進(jìn)程 396
10.3.3空轉(zhuǎn)進(jìn)程運(yùn)行 399
10.4新建進(jìn)程 404
10.4.1分配進(jìn)程描述符 404
10.4.2分配內(nèi)存空間 406
10.4.3加入進(jìn)程調(diào)度表 408
10.5進(jìn)程調(diào)度 410
10.5.1調(diào)度算法 ”410
10.5.2處理進(jìn)程時(shí)間片 411
10.5.3檢查調(diào)度狀態(tài) 414
10.5.4選擇進(jìn)程 ”415
10.5.5進(jìn)程切換 一418
10.5.6進(jìn)程等待與喚醒 421
10.5.7進(jìn)程測試 “425
10.6小結(jié) -428
第11章文件系統(tǒng) 430
11.1文件系統(tǒng)設(shè)計(jì) 430
11.1.1文件系統(tǒng)只是一個(gè)設(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ū)動(dòng)整合 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)用機(jī)制 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時(shí)間管理系統(tǒng)調(diào)用 489
12.3進(jìn)程管理系統(tǒng)調(diào)用 492
12.3.1進(jìn)程的運(yùn)行與退出 492
12.3.2獲取進(jìn)程的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) www.autoforsalebyowners.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號