內容簡介
本書是《自己動手寫嵌入式作業系統》的全面升級版,作者對自己親自在PC上開發的嵌入式作業系統的“HelloChina”進行全面的升級和改進,書中詳細地敘述自己動手寫嵌入式作業系統所需的各方面知識,如載入和初始化、Shell、執行緒的實現、記憶體管理機制、互斥和同步機制及中斷和定時機制的實現,以及設備驅動程式管理框架和套用編程接口等。
本書中的每一個字都是作者辛勤勞動的結晶,本書所講到的嵌入式作業系統“HelloChina”更是作者親自實踐的成果,因此本書具有極高的實用性,對於嵌入式軟體開發工程師、套用軟體開發工程師均有很高的參考價值,對於大中院校的學生學習和理解作業系統及計算機原理也會有許多啟發,對於系統軟體愛好者更是一本不可多得的好書,因為它會使您得到完整而細緻的實踐過程。
目錄
第1章 概述 1
1.1 嵌入式系統概述 1
1.2 嵌入式作業系統概述 3
1.2.1 嵌入式作業系統的特點 3
1.2.2 嵌入式作業系統與通用作業系統的區別 4
1.2.3 嵌入式實時作業系統 6
1.3 作業系統的基本概念 6
1.3.1 微核心與大核心 7
1.3.2 進程、執行緒與任務 8
1.3.3 可搶占與不可搶占 9
1.3.4 同步機制 9
1.4 Hello China概述 10
1.4.1 Hello China的功能特點 11
1.4.2 Hello China的開發環境 12
1.4.3 面向對象思想的模擬 15
1.4.4 對象機制 17
1.4.5 Hello China V1.0版本的源檔案構成 18
1.4.6 Hello China V1.5版本的源檔案構成 20
1.4.7 Hello China的使用 21
1.5 實例:一個簡單的IP路由器的實現 22
1.5.1 概述 22
1.5.2 路由器的硬體結構 22
1.5.3 路由器的軟體功能 23
1.5.4 各任務的實現 25
第2章 Hello China的載入和初始化 28
2.1 常見嵌入式系統的啟動 28
2.1.1 典型嵌入式系統記憶體映射布局 28
2.1.2 嵌入式系統的啟動概述 29
2.1.3 常見嵌入式作業系統的載入方式 29
2.1.4 嵌入式系統軟體的寫入 34
2.2 Hello China在PC上的啟動 36
2.2.1 PC啟動過程概述 36
2.2.2 Hello China的引導過程 38
2.2.3 實地址模式下的初始化 42
2.2.4 保護模式下的初始化 46
2.2.5 作業系統核心功能的初始化 49
第3章 Hello China的Shell 57
3.1 Shell的啟動和初始化 57
3.2 Shell的訊息處理過程 58
3.3 內部命令的處理過程 62
3.4 外部命令的處理過程 64
第4章 Hello China的執行緒 68
4.1 執行緒概述 68
4.1.1 進程、執行緒和任務 68
4.2 Hello China V1.0版本的執行緒實現 69
4.2.1 核心執行緒管理對象 69
4.2.2 執行緒的狀態及其切換 74
4.2.3 核心執行緒對象 76
4.2.4 執行緒的上下文 79
4.2.5 執行緒的優先權與調度 84
4.2.6 執行緒的創建 86
4.2.7 執行緒的結束 92
4.2.8 執行緒的訊息佇列 95
4.2.9 執行緒的切換——中斷上下文 98
4.2.10 執行緒的切換——系統調用上下文 107
4.2.11 上下文保存和切換的底層函式 113
4.2.12 執行緒的睡眠與喚醒 116
4.3 V1.5版本中核心執行緒的實現 117
4.3.1 概述 117
4.3.2 核心執行緒調度時機 117
4.4 V1.5核心執行緒管理器(KernelThreadManager)的實現 118
4.4.1 V1.5核心執行緒佇列的實現 121
4.5 V1.5核心執行緒對象(Kernel ThreadObject)的實現 123
4.5.1 V1.5版本中硬體上下文的保存 125
4.5.2 執行緒的調度——中斷上下文 129
4.5.3 執行緒的調度——程式上下文 132
4.5.4 核心執行緒的創建和初始化 137
4.5.5 中斷處理程式結束後的執行緒調度 143
第5章 Hello China的記憶體管理機制 146
……
第6章 執行緒本地堆的實現 203
第7章 互斥和同步機制的實現 227
第8章 中斷和定時處理機制的實現 250
第9章 系統匯流排管理 278
第10章 驅動程式管理框架 311
第11章 核心執行緒CPU占用率統計功能 363
第12章 系統核心HOOK機制的實現 384
第13章 串口互動程式及其實現 397
第14章 套用編程接口與示例 431
第15章 Hello China的套用開發方法 461
附錄A 如何搭建一個基於Windows的作業系統開發平台 467
附錄B 一種代碼執行時間測量方法的實現 488
附錄C 64bit整型數據類型的實現 494
附錄D IOCTRL控制程式使用介紹及實例 501
附錄E 如何快速掌握彙編語言 510
附錄F 原始碼使用說明 515
附錄G優先佇列(Priority Queue)和環形緩衝區(RING BUFFER)的實現 518
……