深度探索嵌入式操作系統(從零開始設計架構和開發) 深度探索嵌入式操作系统:从零开始设计、架构和开发 (Linux/Unix技术丛书)

彭東

已絕版

買這商品的人也買了...

商品描述

<內容簡介>

本書的最終目的是構建一個用於學習的嵌入式操作系統內核,並工作在真正的物理機上。為了達到這一目的,本書大體上分為兩部分:硬件部分和軟件部分。硬件部分首先分析了我們選擇的平臺,以及這個平臺上的組件。軟件部分首先分析了操作系統內核是乾什麼的,其中都有些什麼組件,這些個組件分別是乾什麼的有什麼作用。然後是如何設計操作系統架構並將這些重要的組件組合在一起,以及設計時需要註意些什麼。*後介紹了構建操作系統的工具。.


<作者簡介>

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

<目錄>

第1章操作系統的功能及為什麼需要它
1.1從hello world開始
1.2操作系統功能演進
1.3小結
第2章硬件平臺

2.1選擇平臺
2.1.1 mini2440
2.1.2 mini2440平臺的信息
2.2必須要關註的硬件
2.2.1原因
2.2.2 RTC
2.2.3定時器
2.2.4串口
2.2.5中斷控制器
2.2.6 SDRAM
2.2.7 NOmaSh
2.2.8 Nandflash
2.3小結
第3章處理器
3.1 ARM公司與其處理器
3.2 ARM920T的結構與特性
3.2.1 ARM920T CPU結構
3.2.2 ARM920TCPU特性
3.3 ARM920T存儲體系
3.3.1 ARM920T地址空間
3.3.2 ARM920T存儲器格式
3.3.3 ARM920T存儲地址對齊
3.4 ARM920T狀態
3.4.1 ARM狀態
3.4.2 Thumb狀態
3.5ARM920T處理器的7種工作模式
3.6寄存器
3.7異常和中斷4
3.7.1什麼是異常和中斷
3.7.2異常中斷向量
3.8ARM920T指令集
3.8.1指令及其編碼格
3.8.2分支跳轉指令
3.8.3數據處理指令
3.8.4裝載和存儲指令
3.8.5程序狀態寄存器操作指令
3.8.6協處理器操作指令
3.8.7異常中斷產生指令
3.9 MMU
3.9.1 MMU概述
? 3.9.2為什麼要有MMU
3.9.3 ARM920T CP15協處理器
3.9.4 MMU頁表
3.9.5 MMU頁面訪問權限的控制
3.9.6 MMU的快表TLB
3.9.7 MMU的編程接口
3.10 Cache
3.10.1 ARM920T的Cache
3.10. 2 Cache的原理
3.10.3 Cache的類型及要註意的問題
3.10.4 ARM920T Cache的編程接口
3.11小結
第4章操作系統內核的設計與構建
4.1操作系統內核的設計
4.1. 1內核要完成的功能
4.1.2內核的架構
4.1.3分離硬件的相關性
4.1.4我們的選擇
4.2開發環境及相關工具
4.2.1 Linux環境
4.2.2文本編輯器
4.2.3 GCC
4.2.4 LD
4.2.5 make
4.3 LMOSEM的構建系統
4.3.1 LMOSEM的makefile
4.3.2 LMOSEM的鏈接腳本
4.4開發板的安裝
4.5小結
第5章語言間調用約定與基本數據
結構
5.1寄存器使用約定
5.1.1寄存器別名
5.1.2參數傳遞與返回值
5.2基本數據結構
5.2.1 C語言的基本數據結構
5.2.2 list ht數據結構
5.2.3 spinlock_t數據結構
5.2.4 kwlst t數據結構
5.2.5 sem t數據結構
5.3數據結構存在於內存中的形式
5.4 C與彙編的混用
5.5小結
第6章內核初始化
6.1開始
6.1.1**行彙編代碼
6.1.2**個C函數
6.2 MMU和中斷向量的初始化
6.2.1初始化MMU
6.2.2複製中斷向量
6.3串口初始化
6.3. 1串口硬件
6.3.2內核的printf
6.4機器數據結構
6.4.1設計數據結構
6.4.2確定一些重要數據結構與內核
的地址
6.5初級內存管理初始化
6.5.1設計一些數據結構
6.5.2初始化mmapdsc_t結構數組
6.5.3建立起內存分配數據結構
6.6中斷初始化
6.6.1設計一些數據結構
6.6.2初始中斷源描述符
6.7初始化測試
6.8小結
第7章內存管理
7.1內核功能層入口
7.2內存管理組件的設計
7.3塊級內存管理
7.3.1塊級內存管理數據結構視圖
7.3.2塊級內存管理接口
7.3.3主分配函數
7.3.4分配時查找alcfrelst_t
7.3.5分配時查找和操作
7.3.6分配代碼寫得對嗎
7.3.7主釋放函數
7.3.8釋放時查找alcfrelst
7.3.9釋放時查找和操作HHnapdscj
7.3.10測試塊級內存管理層
7.4頁級內存管理
7.4.1頁級內存管理接口及調用流程
7.4.2相關的數據結構
7.4.3頁級內存管理初始化
7.4.4分配主函數
7.4.5分配時查找mplhead-t
7.4.6分配時新建頁級內存池
7.4.7分配時操作mplhead_t
7.4.8分配代碼寫得對嗎
7.4.9釋放主函數
7.4.10釋放時查找mplhead-t
7.4.11釋放時操作mpmeadj
7.4.12釋放時刪除頁級內存池
7.4.13測試頁級內存管理層
7.5字級內存管理
7.5.1字級內存接口及調用流程
7.5.2相關的數據結構
7.5.3分配主函數
7.5.4分配時查找mplhead』
7.5.5分配時新建字級內存池
7.5.6分配時操作mplhead_t
7.5.7分配代碼寫得對嗎
7.5.8釋放主函數一
7.5.9釋放時查找mpmead_j
7.5.10釋放時操作mplhead_t
7.5.11釋放時刪除字級內存池
7.5.12測試字級內存管理層
7.6小結
第8章中斷管理
8.1中斷與中斷控制器
8.1.1什麼是中斷
8.1.2 S3C2440A中斷控制器
8.2中斷管理的架構與相關數據結構
8.2.1中斷管理的架構
8.2.2設計數據結構intfltdscj 和intserdsc-t
8.3中斷處理
8.3.1中斷輔助例程
8.3.2從中斷向量開始
8.3.3保存CPU上下文
8.3.4中斷主分派例程
8.3.5確定中斷源
8.3.6調用中斷處理例程
8.4安裝中斷回調例程
8.5小結
第9章驅動模型
9.1操作系統內核如何管理設備
9.1.1分權而治
9.1.2設備類型
9.1.3驅動程序
?9.2相關數據結構。
9.2.1驅動一
9.2.2派發例程類型一
9.2.3設備ID
9.2.4設備
9.2.5 10包
9.2.6設備表
9.3驅動模型的基礎設施
9.3.1驅動程序從哪裡執行
9.3.2新建與註冊設備
9.3.3註冊回調函數
9.3.4發送IO包
9.3.5調用驅動程序函數
9.3.6等待服務
9.3. 7完成服務
9.3.8驅動模型輔助函數
9.4 systick驅動程序實例
9.4.1 systick硬件
9.4.2 systick驅動程序框架
9.4.3 systick驅動程序實現
9.4.4測試systick驅動程序
9.5 RTC驅動程序實例
9.5.1 RTC硬件一
9.5.2 RTC驅動程序實現
9.6小結
第10章進程
10.1應用程序的運行
10.1.1程序運行需要什麼資源
10.1 .2任何時刻資源都可用嗎
10.1.3提出多道程序模型
10.2相關的數據結構
10.2.1設計進程的數據結構
10.2.2調度進程表
10.3 LMOSEM內核的**個進程
10.3.1進程管理組件的初始化
10.3.2建立空轉進程
10.3.3空轉進程運行
10.4新建進程
10.4.1分配進程描述符
10.4.2分配內存空間
10.4.3加入進程調度表
10.5進程調度
10.5.1調度算法
10.5.2處理進程時間片
10.5.3檢查調度狀態
10.5.4選擇進程
10.5.5進程切換
10.5.6進程等待與喚醒
10.5. 7進程測試
10.6小結
第11章文件系統
11.1文件系統設計
11.1.1文件系統只是一個設備
11.1.2數據格式與存儲塊
11.1.3如何組織文件
11.1.4關於我們文件系統的限制
11.2相關的數據結構
11.2.1超級塊
11.2.2位圖
11.2.3目錄一
11.2.4文件管理頭
11.3文件系統格式化
11.3.1建立超級塊”
11.3.2建立位圖
11.3.3建立根目錄
11.4文件系統基礎操作
11.4.1獲取與釋放根目錄文件-
11.4.2字符串操作
? 11.4.3分解路徑名
11.4.4檢查文件是否存在
11.5文件操作
11.5.1新建文件
11.5.2刪除文件
11.5.3打開文件
11.5.4讀寫文件
11.5.5關閉文件
11.5.6驅動整合
11.6文件系統測試
11.6.1格式化測試
11.6.2文件操作測試
11.7小結
第12章系統調用與應用程序庫
12.1系統調用機制
12.1.1軟中斷指令
12.1.2傳遞系統調用參數
12.1. 3系統調用分發器
12.2時間管理系統調用
12.3進程管理系統調用
12.3.1進程的運行與退出
12.3.2獲取進程的ID
12.4內存管理系統調用
12.5設備與文件系統調用
12.5. 1設備與文件的打開
12.5.2設備與文件的關閉
12.5.3設備與文件的讀寫
12.5.4設備與文件的控制
12.6應用程序庫
12.7測試
12.8小結
後記