本書選擇當前嵌入式系統(tǒng)領域里具有代表性的ARM CortexA8處理器和嵌入式Linux操作系統(tǒng)作為分析對象,從嵌入式系統(tǒng)的發(fā)展歷史和特點出發(fā),對A8嵌入式處理器的體系結構、存儲系統(tǒng)、中斷系統(tǒng)、ARM指令集和S5PV210微處理器進行詳細介紹。在此基礎上,闡述ARMlinux內核、Linux文件系統(tǒng)、Linux移植及調試方法、驅動程序的設計等內容;選擇Qt圖形界面程序和SQLite數(shù)據(jù)庫這兩個有代表性的嵌入式應用軟件進行介紹; 介紹傳統(tǒng)嵌入式系統(tǒng)的設計方法和引入了協(xié)同設計概念的嵌入式系統(tǒng)設計方法,并介紹三個嵌入式系統(tǒng)應用案例以增強讀者的理解。
本書可以作為高等學校計算機、電子、電信類專業(yè)的教材,也可以作為嵌入式開發(fā)相關人員的參考用書。
(1)以ARM Cortex-A8處理器架構作為系統(tǒng)核心處理器架構,從作者自身從事的科研項目和實踐活動出發(fā),選擇了具有一定實用價值、包含交叉學科知識且反映嵌入式系統(tǒng)與物聯(lián)網(wǎng)技術結合的三個項目實例。這些實例不僅從理論上深化拓展嵌入式系統(tǒng)設計方法和理念,也從實踐角度提出碰到問題如何運用所學知識解決問題的觀點,促進學生學以致用思想的升華。(2)本書增加Qt和SQLite數(shù)據(jù)庫相關知識,以滿足日益增長的嵌入式系統(tǒng)UI設計與數(shù)據(jù)處理需求,更能滿足智能移動平臺開發(fā)的需要。(3)本書配套教學課件、習題和源代碼。
目錄
第1章嵌入式系統(tǒng)概述
1.1嵌入式系統(tǒng)簡介
1.1.1嵌入式系統(tǒng)的產生
1.1.2嵌入式系統(tǒng)的定義、特點和分類
1.1.3嵌入式系統(tǒng)的兩種應用模式
1.1.4嵌入式系統(tǒng)的典型組成
1.2嵌入式微處理器
1.2.1嵌入式微處理器簡介
1.2.2主流嵌入式微處理器
1.3嵌入式操作系統(tǒng)
1.3.1嵌入式Linux
1.3.2Windows CE
1.3.3Symbian
1.3.4Android
1.3.5C/OSⅡ
1.3.6VxWorks
1.4嵌入式系統(tǒng)的應用領域和發(fā)展趨勢
1.4.1嵌入式系統(tǒng)的應用領域
1.4.2嵌入式系統(tǒng)的發(fā)展趨勢
1.5本章小結
習題
第2章ARM處理器體系結構
2.1ARM處理器概述
2.1.1ARM處理器簡介
2.1.2ARM體系結構發(fā)展
2.1.3ARM處理器系列主要產品
2.1.4ARM開發(fā)工具簡介
2.2CortexA8處理器架構
2.3CortexA8處理器工作模式和狀態(tài)
2.3.1CortexA8處理器工作模式
2.3.2CortexA8處理器狀態(tài)
嵌入式系統(tǒng)設計與應用基于ARM CortexA8和Linux
2.4CortexA8存儲器管理
2.4.1ARM的基本數(shù)據(jù)類型
2.4.2浮點數(shù)據(jù)類型
2.4.3大/小端存儲模式
2.4.4寄存器組
2.4.5CortexA8存儲系統(tǒng)
2.5CortexA8異常處理
2.5.1異常向量和優(yōu)先級
2.5.2異常響應過程
2.5.3異常返回過程
2.5.4CortexA8處理器S5PC100中斷機制
2.6本章小結
習題
第3章ARM指令集
3.1ARM指令集概述
3.1.1指令格式
3.1.2指令的條件碼
3.2ARM指令的尋址方式
3.2.1立即尋址
3.2.2寄存器尋址
3.2.3寄存器間接尋址
3.2.4寄存器移位尋址
3.2.5變址尋址
3.2.6多寄存器尋址
3.2.7相對尋址
3.2.8堆棧尋址
3.2.9塊復制尋址
3.3ARM指令簡介
3.3.1跳轉指令
3.3.2數(shù)據(jù)處理指令
3.3.3程序狀態(tài)寄存器處理指令
3.3.4加載/存儲指令
3.3.5協(xié)處理器指令
3.3.6異常產生指令
3.4Thumb指令簡介
3.5ARM匯編語言編程簡介
3.5.1偽操作
3.5.2偽指令
3.5.3匯編語句格式
3.5.4匯編語言的程序結構
3.6C語言與匯編語言的混合編程
3.6.1C程序中內嵌匯編
3.6.2匯編中訪問C語言程序變量
3.6.3ARM中的匯編和C語言相互調用
3.7本章小結
習題
第4章S5PV210微處理器與接口
4.1基于S5PV210微處理器的硬件平臺體系結構
4.1.1S5PV210處理器簡介
4.1.2S5PV210內部各模塊介紹
4.2存儲系統(tǒng)
4.2.1S5PV210的地址空間
4.2.2S5PV210啟動流程
4.3時鐘系統(tǒng)
4.3.1S5PV210時鐘概述
4.3.2S5PV210的時鐘結構
4.4GPIO接口
4.4.1GPIO概述
4.4.2GPIO寄存器
4.4.3GPIO操作步驟
4.4.4一個LED燈的例子
4.5串行通信接口
4.5.1串行通信方式
4.5.2RS232C串行接口
4.5.3S5PV210的異步串行通信
4.5.4S5PV210的UART寄存器
4.5.5UART通信示例
4.6A/D轉換器
4.7本章小結
習題
第5章ARMLinux內核
5.1ARMLinux概述
5.1.1GNU/Linux操作系統(tǒng)的基本體系結構
5.1.2ARMLinux內核版本及特點
5.1.3ARMLinux內核的主要架構及功能
5.1.4Linux內核源碼目錄結構
5.2ARMLinux進程管理
5.2.1進程的表示和切換
5.2.2進程、線程和內核線程
5.2.3進程描述符task_struct的幾個特殊字段
5.2.4do_fork()函數(shù)
5.2.5進程的創(chuàng)建
5.2.6線程和內核線程的創(chuàng)建
5.2.7進程的執(zhí)行exec函數(shù)族
5.2.8進程的終止
5.2.9進程的調度
5.3ARMLinux內存管理
5.3.1ARMLinux內存管理概述
5.3.2ARMLinux虛擬存儲空間及分布
5.3.3進程空間描述
5.3.4物理內存管理
5.3.5基于slab分配器的管理技術
5.3.6內核非連續(xù)內存分配(vmalloc)
5.3.7頁面回收簡述
5.4ARM_Linux模塊
5.4.1LKM的編寫和編譯
5.4.2LKM版本差異比較
5.4.3模塊的加載與卸載
5.4.4工具集moduleinittools
5.5ARMLinux中斷管理
5.5.1ARM_Linux中斷的一些基本概念
5.5.2內核異常向量表的初始化
5.5.3Linux中斷處理
5.5.4內核版本2.6.38后的中斷處理系統(tǒng)的一些改變通用中斷
子系統(tǒng)
5.6ARMLinux系統(tǒng)調用
5.7本章小結
習題
第6章Linux文件系統(tǒng)
6.1Linux文件系統(tǒng)概述
6.2ext2文件系統(tǒng)格式
6.2.1ext2文件系統(tǒng)
6.2.2目錄結構
6.3ext3和ext4文件系統(tǒng)
6.3.1ext3文件系統(tǒng)
6.3.2ex4文件系統(tǒng)
6.4嵌入式文件系統(tǒng)JFFS2
6.4.1嵌入式文件系統(tǒng)
6.4.2JFFS2嵌入式文件系統(tǒng)
6.5YAFFS與YAFFS2文件系統(tǒng)簡介
6.5.1YAFFS文件系統(tǒng)
6.5.2YAFFS2文件系統(tǒng)簡介
6.6根文件系統(tǒng)
6.6.1根文件系統(tǒng)概述
6.6.2根文件系統(tǒng)的制作工具BusyBox
6.6.3YAFFS2文件系統(tǒng)的創(chuàng)建
6.7本章小結
習題
第7章嵌入式Linux系統(tǒng)移植及調試
7.1BootLoader基本概念與典型結構
7.1.1BootLoader基本概念
7.1.2BootLoader的操作模式
7.1.3BootLoader的典型結構
7.1.4常見的BootLoader
7.2UBoot
7.2.1UBoot概述
7.2.2UBoot啟動的一般流程
7.2.3UBoot環(huán)境變量
7.2.4UBoot命令
7.3交叉開發(fā)環(huán)境的建立
7.4交叉編譯工具鏈
7.4.1交叉編譯工具鏈概述
7.4.2工具鏈的構建方法
7.4.3交叉編譯工具鏈的主要工具
7.4.4Makefile
7.5嵌入式Linux系統(tǒng)移植過程
7.5.1UBoot移植
7.5.2內核的配置、編譯和移植
7.6GDB調試器
7.7遠程調試
7.7.1遠程調試工具的構成
7.7.2通信協(xié)議RSP
7.7.3遠程調試的實現(xiàn)方法及設置
7.7.4遠程調試應用實例方法
7.8內核調試
7.8.1printk()
7.8.2KDB
7.8.3Kprobes
7.8.4KGDB
7.9本章小結
習題
第8章設備驅動程序設計
8.1設備驅動程序開發(fā)概述
8.1.1Linux設備驅動程序分類
8.1.2驅動程序的處理過程
8.1.3設備驅動程序框架
8.1.4驅動程序的加載
8.2內核設備模型
8.2.1設備模型功能
8.2.2sysfs
8.2.3sysfs的實現(xiàn)機制kobject
8.2.4設備模型的組織platform總線
8.3字符設備驅動設計框架
8.3.1字符設備的重要數(shù)據(jù)結構
8.3.2字符設備驅動框架
8.4GPIO驅動概述
8.4.1gpiolib關鍵數(shù)據(jù)結構
8.4.2GPIO的申請和注冊
8.5I2C總線驅動設計
8.5.1I2C總線概述
8.5.2I2C驅動程序框架
8.5.3關鍵數(shù)據(jù)結構
8.5.4I2C核心接口函數(shù)
8.5.5I2C設備驅動的通用方法
8.6塊設備驅動程序設計概述
8.6.1塊設備驅動整體框架
8.6.2關鍵數(shù)據(jù)結構
8.6.3塊設備的請求隊列操作
8.7嵌入式網(wǎng)絡設備驅動設計
8.7.1網(wǎng)絡設備驅動程序框架
8.7.2網(wǎng)絡設備驅動程序關鍵數(shù)據(jù)結構
8.7.3網(wǎng)絡設備驅動程序設計方法概述
8.8網(wǎng)絡設備驅動程序示例網(wǎng)卡DM9000驅動程序分析
8.9本章小結
習題
第9章Qt圖形界面應用程序開發(fā)基礎
9.1Qt簡介
9.2Qt 5概述
9.2.1Qt 5簡介
9.2.2通過幫助菜單了解Qt 5的組成模塊
9.2.3Linux下Qt開發(fā)環(huán)境的安裝與集成
9.2.3Qt Creator功能和特性
9.3信號和插槽機制
9.4Qt程序設計
9.4.1helloworld程序
9.4.2多窗口應用程序
9.5Qt數(shù)據(jù)庫應用
9.5.1數(shù)據(jù)庫驅動
9.5.2Qt與SQLite數(shù)據(jù)庫的連接
9.5.3SQL模型
9.6本章小結
習題
第10章SQLite數(shù)據(jù)庫
10.1SQLite數(shù)據(jù)庫概述
10.1.1基于Linux平臺的嵌入式數(shù)據(jù)庫概述
10.1.2SQLite的特點
10.1.3SQLite的體系結構
10.2SQLite安裝
10.3SQLite的常用命令
10.4SQLite的數(shù)據(jù)類型
10.5SQLite的API函數(shù)
10.5.1核心C API函數(shù)
10.5.2擴充C API函數(shù)
10.6本章小結
習題
第11章嵌入式系統(tǒng)的開發(fā)設計案例
11.1嵌入式系統(tǒng)設計方法介紹
11.1.1傳統(tǒng)的嵌入式系統(tǒng)設計方法
11.1.2協(xié)同設計概念的嵌入式系統(tǒng)設計方法
11.2基于ARM的嵌入式Web服務器設計實例
11.2.1系統(tǒng)環(huán)境搭建
11.2.2Web服務器原理
11.2.3嵌入式Web服務器設計
11.3物聯(lián)網(wǎng)網(wǎng)關設計實例
11.3.1背景介紹環(huán)境監(jiān)測系統(tǒng)平臺整體架構
11.3.2網(wǎng)關節(jié)點硬件設計方案
11.3.3系統(tǒng)軟件設計
11.3.4數(shù)據(jù)庫建設
11.4智能無人值守實驗室監(jiān)控系統(tǒng)設計實例
11.4.1系統(tǒng)總體框架
11.4.2學生選課預約
11.4.3門禁系統(tǒng)
11.4.4ZigBee網(wǎng)絡的網(wǎng)絡拓撲及路由協(xié)議
11.4.5Qt的使用
11.5本章小結
參考文獻