《嵌入式系統(tǒng)基礎(chǔ)教程(第2版)》全面介紹了嵌入式系統(tǒng)的基本理論和知識,教學(xué)重點是基于ARM處理器的嵌入式硬件平臺。本書的主要內(nèi)容包括:嵌入式系統(tǒng)的基本概念、嵌入式微處理器技術(shù)、ARM處理器體系結(jié)構(gòu)、嵌入式調(diào)試技術(shù)、ARM處理器指令系統(tǒng)、嵌入式開發(fā)工具、嵌入式外設(shè)控制器、嵌入式存儲器和接口技術(shù)、嵌入式操作系統(tǒng)等知識。
前言
第1章 嵌入式系統(tǒng)概論
1.1 概述
1.1.1 嵌入式系統(tǒng)的定義
1.1.2 后PC時代與無所不在的計算時代
1.2 嵌入式系統(tǒng)發(fā)展簡史
1.2.1 微處理器的發(fā)展
1.2.2 嵌入式系統(tǒng)的發(fā)展階段
1.3 嵌入式系統(tǒng)的特點
1.4 嵌入式系統(tǒng)的基本分類
1.5 嵌入式系統(tǒng)舉例
1.5.1 低端嵌入式系統(tǒng)
1.5.2 中端嵌入式系統(tǒng)
1.5.3 高端嵌入式系統(tǒng)
1.6 嵌入式系統(tǒng)的基本組成
1.6.1 嵌入式系統(tǒng)的硬件組成
1.6.2 嵌入式系統(tǒng)的軟件組成
1.7 嵌入式系統(tǒng)的現(xiàn)狀與發(fā)展趨勢
1.7.1 嵌入式系統(tǒng)的現(xiàn)狀及主要制約因素
1.7.2 嵌入式系統(tǒng)的發(fā)展方向
1.8 嵌入式系統(tǒng)的相關(guān)研究領(lǐng)域
1.8.1 嵌入式系統(tǒng)的主干學(xué)科領(lǐng)域
1.8.2 與嵌入式系統(tǒng)密切關(guān)聯(lián)的科學(xué)技術(shù)領(lǐng)域
1.9 本章小結(jié)
1.10 習(xí)題和思考題
第2章 嵌入式微處理器技術(shù)
2.1 嵌入式處理器基本分類
2.1.1 通用型嵌入式微處理器
2.1.2 微控制器
2.1.3 嵌入式DSP處理器
2.1.4 可編程片上系統(tǒng)
2.1.5 嵌入式雙核/多核處理器
2.1.6 可擴展處理平臺
2.2 嵌入式微處理器的典型技術(shù)
2.2.1 I/O端口統(tǒng)一編址與特殊功能寄存器
2.2.2 哈佛結(jié)構(gòu)
2.2.3 桶型移位器
2.2.4 正交指令集
2.2.5 雙密度指令集
2.2.6 看門狗定時器
2.2.7 邊界對準(zhǔn)與端序
2.2.8 地址重映射
2.2.9 FIFO緩沖寄存器
2.2.10 主存控制器
2.3 主流嵌入式微處理器
2.3.1 MIPS RISC嵌入式微處理器
2.3.2 PowerPC系列嵌入式微處理器
2.3.3 飛思卡爾公司的系列嵌入式微控制器
2.3.4 凌動系列嵌入式微處理器
2.3.5 ARM系列嵌入式微處理器
2.4 本章小結(jié)
2.5 習(xí)題和思考題
第3章 ARM處理器體系結(jié)構(gòu)
3.1 概述
3.1.1 ARM體系結(jié)構(gòu)的版本
3.1.2 ARM體系結(jié)構(gòu)版本的變種
3.1.3 ARM體系結(jié)構(gòu)版本的命名規(guī)則
3.1.4 ARM處理器核系列
3.2 ARM處理器的結(jié)構(gòu)
3.2.1 ARM處理器的RISC特征
3.2.2 流水線
3.2.3 ARM的工作模式和工作狀態(tài)
3.2.4 ARM寄存器的組織
3.3 ARM Cortex處理器
3.3.1 ARM Cortex-M3內(nèi)核
3.3.2 采用Cortex-M3核生產(chǎn)的微控制器
3.3.3 ARM Cortex-A8內(nèi)核
3.3.4 ARM Cortex-A9內(nèi)核
3.3.5 采用Cortex-A9內(nèi)核生產(chǎn)的應(yīng)用處理器
3.4 ARM存儲器的組織
3.4.1 ARM存儲器的數(shù)據(jù)類型和存儲格式
3.4.2 ARM的存儲體系
3.4.3 片內(nèi)存儲器的用法
3.4.4 協(xié)處理器CP15
3.4.5 存儲管理單元
3.4.6 保護單元
3.4.7 ARM處理器的Cache
3.4.8 快速上下文切換擴展
3.4.9 寫緩存區(qū)
3.5 ARM處理器的片上總線規(guī)范AMBA
3.5.1 AMBA 2.0片上總線的特點
3.5.2 AMBA 2.0片上總線的主控單元和從動單元
3.5.3 AMBA 2.0總線的時序
3.5.4 AMBA 3.0——AXI協(xié)議
3.6 ARM處理器核的典型范例:ARM7TDMI
3.6.1 復(fù)位
3.6.2 總線周期
3.6.3 ARM7TDMI處理器的總線優(yōu)先級
3.7 ARM的異常中斷處理
3.7.1 ARM的異常中斷響應(yīng)過程
3.7.2 從異常中斷處理程序返回
3.8 本章小結(jié)
3.9 習(xí)題和思考題
第4章 嵌入式系統(tǒng)調(diào)試技術(shù)
4.1 嵌入式硬件調(diào)試結(jié)構(gòu)和調(diào)試技術(shù)
4.1.1 與通用計算機調(diào)試結(jié)構(gòu)的比較
4.1.2 調(diào)試信道
4.1.3 ROM仿真器
4.1.4 實時在線仿真
4.2 指令集模擬器
4.2.1 ARMulator
4.2.2 SkyEye
4.3 片上調(diào)試技術(shù)
4.3.1 背景調(diào)試模式
4.3.2 邊界掃描測試技術(shù)和JTAG接口
4.3.3 ARM7TDMI核中的JTAG掃描鏈
4.3.4 嵌入式ICE-RT模塊
4.3.5 JTAG的斷點設(shè)置原理
4.3.6 Nexus調(diào)試標(biāo)準(zhǔn)
4.4 嵌入追蹤宏單元ETM
4.5 基于Angel的調(diào)試方案
4.5.1 Angel調(diào)試系統(tǒng)的組成
4.5.2 Angel的兩種版本
4.5.3 Angel的調(diào)試處理流程和調(diào)試操作步驟
4.6 半主機調(diào)試方式
4.7 本章小結(jié)
4.8 習(xí)題和思考題
第5章 ARM處理器指令集
5.1 ARM處理器的指令系統(tǒng)
5.1.1 ARM處理器指令系統(tǒng)的主要特征
5.1.2 ARM與x86指令系統(tǒng)的比較
5.2 ARM指令集的編碼格式和語法
5.2.1 ARM指令集的編碼格式
5.2.2 ARM指令的一般語法格式
5.2.3 ARM指令的執(zhí)行條件
5.2.4 第2操作數(shù)說明
5.3 ARM處理器的尋址方式
5.4 ARM指令的分類說明
5.4.1 分支指令
5.4.2 Load/Store指令
5.4.3 數(shù)據(jù)處理指令
5.4.4 乘法指令
5.4.5 前導(dǎo)零計數(shù)指令
5.4.6 程序狀態(tài)寄存器指令
5.4.7 協(xié)處理器指令
5.4.8 異常中斷指令
5.4.9 ARM偽指令
5.5 本章小結(jié)
5.6 習(xí)題和思考題
第6章 ARM匯編語言程序設(shè)計
6.1 概述
6.1.1 預(yù)定義寄存器名及內(nèi)部變量名
6.1.2 ARM匯編語言程序的語句格式
6.1.3 ARM匯編語言程序編寫規(guī)范
6.2 ARM匯編語言指示符
6.2.1 AREA
6.2.2 ENTRY
6.2.3 CODE16、CODE32、THUMB和ARM
6.2.4 EQU
6.2.5 END
6.2.6 ALIGN
6.2.7 DCB
6.2.8 MAP
6.2.9 FIELD
6.2.10 SPACE
6.2.11 DCD和DCDU
6.2.12 GBLA、GBLL及GBLS
6.2.13 LCLA、LCLL及LCLS
6.2.14 SETA、SETL及SETS
6.2.15 其他指示符的簡單功能描述
6.3 ARM匯編語言指示符的編程舉例
6.3.1 條件分支指示符
6.3.2 ASCII字符串比較
6.3.3 宏定義指示符
6.4 ARM過程調(diào)用標(biāo)準(zhǔn)ATPCS和AAPCS
6.4.1 寄存器的使用規(guī)則
6.4.2 堆棧使用規(guī)則
6.4.3 參數(shù)傳遞規(guī)則
6.5 典型ARM匯編語言程序舉例
6.5.1 入門范例
6.5.2 基本結(jié)構(gòu)
6.5.3 典型的ARM匯編程序范例
6.5.4 5級流水線的互鎖問題
6.6 ARM內(nèi)嵌匯編
6.6.1 內(nèi)嵌匯編的指令用法
6.6.2 內(nèi)嵌匯編器與armasm匯編器的區(qū)別
6.7 C/C++與匯編程序的相互調(diào)用
6.7.1 C/C++程序調(diào)用匯編程序
6.7.2 匯編程序調(diào)用C程序
6.7.3 匯編程序調(diào)用C++程序
6.7.4 C程序調(diào)用C++程序
6.8 軟中斷和半主機方式ARM匯編程序設(shè)計
6.9 GNU格式的ARM匯編語言程序設(shè)計
6.9.1 GNU格式ARM匯編語言程序的設(shè)計要點
6.9.2 GNU格式ARM匯編語言程序舉例
6.10 本章小結(jié)
6.11 習(xí)題和思考題
第7章 嵌入式系統(tǒng)開發(fā)工具
7.1 概述
7.1.1 開發(fā)ARM嵌入式系統(tǒng)的硬件結(jié)構(gòu)
7.1.2 開發(fā)工具的基本分類和主要品種
7.1.3 集成開發(fā)環(huán)境
7.1.4 CodeWarrior集成開發(fā)環(huán)境
7.2 ARM開發(fā)工具概述
7.3 ARM映像文件格式
7.3.1 ELF文件格式
7.3.2 ARM映像文件的組成
7.4 ADS的組成與使用
7.4.1 命令行開發(fā)工具
7.4.2 GUI開發(fā)工具
7.4.3 ADS實用工具
7.5 用ADS生成應(yīng)用程序
7.5.1 生成簡單應(yīng)用程序hello
7.5.2 生成函數(shù)庫mathlib
7.5.3 生成一個在目標(biāo)板上運行的定時器程序
7.6 RVDS
7.6.1 RVDS的組件
7.6.2 RVDS使用概覽
7.6.3 開中斷關(guān)中斷的內(nèi)嵌ARM匯編函數(shù)
7.7 GNU交叉工具鏈
7.8 本章小結(jié)
7.9 習(xí)題和思考題
第8章 嵌入式外設(shè)控制器
8.1 嵌入式中斷控制器
8.1.1 嵌入式中斷控制器工作原理
8.1.2 ARM Cortex-M3嵌套向量中斷控制器
8.2 向量中斷與非向量中斷的入口程序編程示例
8.3 嵌入式中斷應(yīng)用程序舉例
8.4 嵌入式DMA控制器
8.4.1 S3C44B0X的DMA控制器
8.4.2 S3C44B0X的DMAC相關(guān)控制寄存器
8.4.3 S3C44B0X的DMA應(yīng)用程序舉例
8.5 時鐘電源管理器、實時時鐘和脈寬調(diào)制定時器
8.5.1 S3C44B0X的時鐘電源管理器
8.5.2 S3C2410X的實時時鐘
8.5.3 實時時鐘應(yīng)用程序概要設(shè)計案例
8.5.4 S3C44B0X的脈寬調(diào)制定時器
8.6 本章小結(jié)
8.7 習(xí)題和思考題
第9章 嵌入式存儲器和接口技術(shù)
9.1 嵌入式系統(tǒng)常用的半導(dǎo)體存儲器
9.1.1 閃速存儲器
9.1.2 靜態(tài)存儲器和同步動態(tài)存儲器
9.2 常用的嵌入式系統(tǒng)總線
9.2.1 I2C總線
9.2.2 SPI總線接口
9.2.3 CAN總線
9.3 常用的嵌入式系統(tǒng)接口
9.3.1 UART接口
9.3.2 通用輸入輸出接口
9.3.3 以太網(wǎng)接口
9.4 嵌入式系統(tǒng)常用的外部設(shè)備
9.4.1 鍵盤
9.4.2 液晶顯示器
9.4.3 觸摸屏
9.5 本章小結(jié)
9.6 習(xí)題和思考題
參考文獻