基本介紹
- 書名:嵌入式系統原理與套用--基於XScale與Linux
- 出版時間:2011
- 裝幀:平裝
- 開本:16
內容簡介,前言,目錄,
內容簡介
本書全面、系統地講解嵌入式系統開發過程中的關鍵技術。內容包括:嵌入式系統概述,ARM處理器基礎,ARM指令系統與彙編程式設計,XScale處理器的結構與開發平台,嵌入式軟體設計,Linux作業系統概述,Linux驅動程式設計,嵌入式圖形界面設計等。書中有大量的實例和代碼。與本書配套出版了實驗教材。
本書既可作為高等院校電子工程、計算機、自動化、軟體工程等專業高年級本科生嵌入式系統課程教材,又可作為相關專業碩士研究生的選修課教材,還可作為從事嵌入式開發的工程技術人員的參考用書。
前言
進入21世紀,晶片和軟體技術已經成為支撐社會經濟發展的重要資源,嵌入式系統作為晶片和軟體的集成體,其內涵和外延也更加廣泛。在當前電子信息技術和網路技術飛速發展的後PC時代,嵌入式系統的套用已遍布科學研究、工業控制、軍事技術、醫療衛生、消費電子等方方面面。同時,隨著嵌入式技術的廣泛套用,極大地促進了嵌入式處理器的性能躍升,處理速度也越來越快,從早期ARM7系統時鐘的幾十MHz,到Intel的XScalePXA27x,系統時鐘已經達到624MHz,現在已經開始出現超過1GHz的嵌入式SoC。面對越來越高的套用需求,使用高性能的處理器已經成為高端開發的必然選擇。
嵌入式系統是電子工程、計算機、自動化、軟體工程及相關專業的一門重要的專業課,是一門實踐性很強的技術性課程。筆者在教學和科研的過程中深深感到,嵌入式系統教學一定要從整體把握開始,儘量避免過多地陷入到各種接口及套用中去。掌握嵌入式系統需要學習非常多的知識,從開發者的角度了解ARM核心;了解電源、時鐘和存儲系統的原理與設計;很好地掌握ARM彙編語言與程式設計,了解嵌入式編譯器;熟悉BSP開發、作業系統原理與移植、驅動開發和應用程式設計。
本書大部分講解結合博創公司的高端嵌入式教學平台UP TECHPXA270和Intel公司的Sitsang平台,這是兩款設計非常優秀的教學開發平台,為教學、學生科技項目及科研都提供了很好的支持。為了能夠有效地進行實踐,前期與本書配套出版了實驗教材《嵌入式系統設計與開發實驗——基於XScale平台》,該實驗教材能夠為實踐教學提供很好的指導。
全書共8章。
第1章嵌入式系統概述。主要介紹嵌入式系統的一些基本知識,包括嵌入式系統的概念,嵌入式系統的特點,嵌入式系統的硬體和軟體簡介,嵌入式系統的套用領域和發展方向等。
第2章ARM處理器基礎。從一個開發者的角度講解ARM的核心結構,為更好地開發嵌入式系統打下基礎。
第3章ARM指令系統與彙編程式設計。介紹ARM指令集、Thumb指令集和偽指令。對每條指令作了詳細的解釋,並給出例程。
第4章IntelPXA270處理器的結構與開發平台。介紹XScale核的PX270A處理器結構,各種I/O部件的功能與設計方法。
第5章嵌入式軟體設計。介紹交叉編譯、Bootloader概念和移植、Linux作業系統的移植技術、檔案系統的概念和幾種常用檔案系統。
第6章Linux作業系統概述。介紹Linux核心,對核心數據結構、進程管理、Linux的啟動過程等進行分析。
第7章Linux驅動程式設計。分析Linux下驅動程式的基本結構,並結合實例分析幾個典型的驅動程式。
第8章嵌入式圖形界面設計。介紹嵌入式圖形用戶界面,對Qt/Embedded的安裝、移植和應用程式開發進行講解,並給出開發實例。
在本書出版之際,感謝Intel公司朱文利(JuliaZhu)女士和王靖琪(JollyWang)女士,感謝她們在課程建設和教材編寫方面給予的寶貴支持。
本書由石秀民策劃與統稿,石秀民和魏洪興編寫。陶永博士參與編寫了第4章和第7章,乾正光參與編寫了第5章和第6章,劉淼參與編寫了第7章,張笑天參與編寫了第8章;王畢達、石秀娟、王亮、許燕、楊耀楠、馬力虎、鄒敏、佟亨文等在實驗代碼測試以及文稿整理方面做了大量細緻的工作,在此一併表示感謝。
在此要感謝北京航空航天大學出版社的李春鳳編輯,在書稿編寫的一年時間裡,她的敬業精神給我們留下了深刻的印象。
另外,本書自創作伊始就得到了北京博創公司的大力支持,很多實例來自博創教學平台,筆者對此表示深深的感謝。
由於時間倉促,在編寫此書的過程中,特別是保證實驗代碼的正確性上,我們做了很大的努力,但作者自身能力有限,錯誤在所難免。懇請各位讀者不吝賜教,以便在改版或再版時糾正。
石秀民
2007年6月
目錄
第1章嵌入式系統概述
1.1嵌入式系統簡介1
1.1.1嵌入式系統定義1
1.1.2嵌入式系統的發展歷程與現狀2
1.1.3嵌入式系統的特點4
1.2嵌入式系統硬體5
1.2.1嵌入式處理器5
1.2.2匯流排7
1.2.3存儲器8
1.2.4外部I/O9
1.3嵌入式系統軟體9
1.3.1引導載入程式9
1.3.2作業系統10
1.3.3應用程式12
第2章ARM處理器基礎
2.1ARM概述13
2.1.1ARM簡介13
2.1.2ARM微處理器的套用領域13
2.1.3ARM微處理器的特點14
2.1.4ARM微處理器系列14
2.1.5ARM體系結構的版本15
2.2數據類型和存儲器組織15
2.2.1數據類型15
2.2.2存儲器組織16
2.3ARM核心的數據模型17
2.4ARM處理器運行模式18
2.5暫存器組織19
2.5.1ARM狀態下的暫存器組織20
2.5.2Thumb狀態下的暫存器組織22
2.5.3程式狀態暫存器23
2.6流水線25
2.7異常、中斷及向量表28
2.7.1異常的種類29
2.7.2異常向量表和優先權30
2.7.3異常的進入和返回31
2.8ARM核心與SoC34
2.8.1ARM處理器核心34
2.8.2ARM處理器核34
2.8.3ARMSoC34
2.9ARM硬體啟動過程36
2.9.1電源36
2.9.2時鐘37
2.9.3系統復位37
2.10ARMJTAG調試接口38
第3章ARM指令系統與彙編程式設計
3.1ARM指令系統概述40
3.1.1ARM指令系統特點40
3.1.2ARM指令格式41
3.1.3指令的條件域41
3.2ARM指令基本定址方式43
3.3ARM指令功能說明48
3.3.1ARM分支指令48
3.3.2ARM數據處理指令50
3.3.3ARM訪存指令63
3.3.4ARM程式狀態暫存器訪問指令70
3.3.5ARM協處理器指令71
3.3.6ARM異常產生指令75
3.3.7XScale增加的指令77
3.4Thumb指令集78
3.4.1ARM與Thumb性能比較79
3.4.2Thumb指令暫存器的使用80
3.4.3Thumb指令說明80
3.4.4Thumb指令示例86
3.5ARM彙編器所支持的偽指令87
3.5.1指示符性質的偽指令88
3.5.2符號定義偽指令94
3.5.3數據定義偽指令97
3.5.4彙編控制偽指令99
3.5.5其他常用偽指令102
3.6ARM彙編語言程式設計105
3.6.1彙編語言的語句格式105
3.6.2彙編語言的程式結構106
3.6.3彙編程式舉例108
第4章IntelPXA270處理器的結構與開發平台
4.1PXA270處理器的系統結構與特性121
4.1.1總體結構121
4.1.2特性123
4.1.3封裝與引腳126
4.2時鐘與電源管理127
4.2.1低功耗與時鐘和電源管理127
4.2.2復位管理129
4.2.3時鐘管理131
4.2.4功耗管理136
4.2.5電壓管理139
4.3PXA270處理器接口及開發平台設計140
4.3.1PXA270處理器開發評估系統140
4.3.2外部存儲器接口143
4.3.3顯示接口154
4.3.4USB接口159
4.3.5多媒體接口概述165
4.3.6快速捕獲接口171
第5章嵌入式軟體設計
5.1交叉編譯174
5.1.1交叉編譯器及交叉編譯環境的組成174
5.1.2交叉編譯環境的建立177
5.2引導載入程式Bootloader179
5.2.1Bootloader原理179
5.2.2Bootloader的操作模式180
5.2.3Bootloader與主機之間的檔案傳輸180
5.2.4Bootloader的啟動流程181
5.2.5ARMLinux常用Bootloader介紹182
5.2.6UPTECHPXA270BLOB平台原始碼分析183
5.2.7BLOB下載193
5.3Linux核心移植193
5.3.1Linux核心源碼的修改194
5.3.2Linux核心的裁減199
5.3.3Linux核心的編譯201
5.3.4Linux核心的燒錄202
5.4檔案系統202
5.4.1檔案系統基本概念202
5.4.2嵌入式檔案系統基本內容205
5.4.3常見的嵌入式檔案系統206
第6章Linux作業系統概述
6.1Linux的誕生和發展211
6.2Linux核心概述215
6.3系統核心數據結構219
6.4Linux核心原始碼的結構220
6.5ARMLinux存儲管理222
6.5.1ARM存儲管理機制222
6.5.2ARMLinux存儲管理224
6.6進程管理229
6.6.1Linux進程229
6.6.2Linux進程狀態230
6.6.3Linux進程的調度231
6.6.4Linux進程的創建233
6.6.5Linux進程的執行234
6.6.6Linux進程的終止240
6.7Linux啟動和初始化過程分析241
第7章Linux驅動程式設計
7.1Linux驅動程式247
7.1.1用戶態與核心態247
7.1.2Linux驅動程式結構247
7.1.3設備檔案與設備檔案系統248
7.2Linux字元設備驅動程式結構251
7.3嵌入式平台上LED的Linux驅動程式252
7.3.1系統硬體平台組成原理252
7.3.2LinuxLED驅動程式的實現253
7.3.3雙色LED驅動程式的測試264
7.4Linux按鍵驅動程式265
7.4.1系統硬體平台組成原理265
7.4.2Linux系統中斷分析266
7.4.3Linux按鍵驅動程式的實現281
7.4.4Linux按鍵驅動程式的測試288
7.5Linux塊設備驅動程式289
7.5.1系統硬體平台組成原理289
7.5.2LinuxMTD驅動程式體系結構290
7.5.3UP TECHPXA270開發平台上的NORFlash驅動程式293
7.5.4UP TECHPXA270開發平台上的NANDFlash驅動程式300
7.6Linux網路設備驅動程式簡介304
7.6.1網路驅動程式的層次304
7.6.2網路設備的初始化305
7.6.3網路數據包的傳送和接收305
7.6.4網路設備的核心載入306
7.6.5網路設備的模組載入308
第8章嵌入式圖形界面設計
8.1嵌入式GUI簡介310
8.1.1GUI歷史310
8.1.2GUI現狀311
8.2LinuxGUI基礎313
8.2.1XWindow結構313
8.2.2Framebuffer313
8.3Qt/Embedded的主要特徵318
8.4Qt/Embedded的安裝及編譯環境的建立320
8.5Qt/Embedded應用程式基礎326
8.5.1Qt/Embedded應用程式的運行326
8.5.2Qt/Embedded應用程式的顯示326
8.5.3Hello,Qt/Embedded!應用程式327
8.5.4Qt/Embedded應用程式的中文化330
8.6信號與插槽機制332
8.7QtDesigner簡介及部件布局管理335
8.8實戰練習339
8.9Qt/Embedded應用程式開發快速索引348附錄AXScale架構彙編語言指令速查參考表350
附錄BXScale架構彙編語言指令格式符號參考表355
附錄CARM定址方式357
參考文獻359