第 2 版 序
《嵌入式系統——基于SEP3203微處理器的應用開發》(第一版)自2006年底出版以來得到了東南大學以及相關兄弟院校的教學應用,取得了良好的教學效果,并入選了國家“十一五”規劃教材。近幾年來,嵌入式系統技術的飛速發展正推動整個產業發生著深刻的變化:第一,移動互聯網產業的興起徹底改變了傳統電信運行商、軟件服務商、內容提供商、整機制造商等生態環境的商業模式,而物聯網技術的迅速發展則推動著傳統產業信息化和現代服務業的變革;第二,嵌入式領域雖然不存在傳統桌面系統的Wintel聯盟,但是在嵌入式CPU和嵌入式操作系統方面已經出現ARM公司系列CPU和Google公司Android系統一枝獨秀的局面;第三,國內已經涌現出一批初具規模和實力的嵌入式微處理器設計廠商,自主CPU內核也逐漸成熟,并在部分市場領域得到應用,自主SoC芯片的生態環境已初步形成。
另一方面,嵌入式系統的本質是以應用為核心的專用計算機系統,它的核心是嵌入式微處理器(SoC芯片),圍繞應用目標開展軟硬件協同設計是嵌入式技術的本質特征。作為專用計算機系統,嵌入式系統技術與通用計算機系統沒有本質的區別,但往往對系統的性能、功耗、成本、可靠性與實時性有更加嚴格的限制,這就決定了其總線架構、CPU內核設計、存儲架構設計、媒體與圖形系統設計等方面都有自己的設計哲學。傳統的嵌入式系統教學往往采用國外SoC芯片作為主要教學內容,由于缺乏芯片的底層實現細節,往往更側重在如何基于國外芯片廠商封裝好的底層軟件庫進行應用開發。這使得學生缺乏對芯片底層工作機制的了解,從而無法對軟硬適配部分進行充分的優化與定制,更不要說參與自主SoC芯片的研發與系統方案設計了。這顯然無法滿足技術和產業發展的需求。
基于對于以上問題的認識,東南大學國家ASIC工程技術研究中心(以下簡稱工程中心)的幾位老師著手編寫了《嵌入式系統——從SoC芯片到系統》(第2版)。正如第2版副標題所表明的,本書將從SoC芯片的視角來分析和介紹嵌入式系統的基礎知識。得益于工程中心十多年來在自主SoC芯片設計方面積累的工程經驗與研究成果,本書詳細介紹了嵌入式微處理器SoC芯片的架構、CPU、存儲子系統、外圍設備、調試方法、低功耗設計和操作系統基礎,力圖給讀者一個站在SoC芯片設計者的視角了解現代嵌入式系統的構成,并真正理解一個復雜的嵌入式系統應用在芯片層面和軟件層面是如何運作的。在第2版中,作者將繼續采用工程中心自主研發的SEP4020與SEP6200處理器作為主要案例,其中SEP6200處理器采用了國產UniCore2 CPU內核。
與第1版不同,為了便于教學,本書為幾乎所有的章節編寫了思考題、案例分析和擴展閱讀。當然,這不是一本包羅萬象、解決所有問題的教材,正如作者們所希望的,這是一本嵌入式系統入門教材。通過這本書的閱讀和學習,作者希望為讀者后續進一步的深入學習打下堅實的基礎。
時龍興
2015年10月于東南大學
引 言
關于本書以及如何使用本書
毫無疑問,在大學中講授嵌入式系統相關的課程是一個巨大的挑戰。帶來這種挑戰的根本原因在于:第一,嵌入式系統是一個飛速發展的動態系統,新技術、新產品、新應用、新商業模式層出不窮,這一點在這一輪的移動互聯網浪潮和物聯網浪潮中表現得尤為突出;第二,嵌入式系統技術是一個非常綜合的學科門類,其內涵涉及電子與微電子、計算機架構、操作系統、中間件、人機交互、計算機網絡、通信甚至整機設計與制造等各領域,很難在有限的課時內將所有的知識點講深講透,這一點對于傳統的電子信息類專業的本科生而言尤其如此,因為傳統的電子信息類專業課程的設置往往很少涉及操作系統等軟件方面的內容;第三,嵌入式系統技術的兩大基礎是微電子技術(尤其是SoC技術)和以嵌入式操作系統為代表的嵌入式軟件技術。嵌入式系統對于性能、成本、功耗、實時性與高可靠性的更高要求決定了圍繞應用目標開展軟硬件協同設計和軟硬件適配優化是嵌入式系統技術的本質特征。這就需要對SoC芯片的架構和工作機制有非常深刻的理解;第四,嵌入式系統技術是一門實踐性非常強的課程,如何在有限的課時內加強學生的實踐能力培養也是一個非常大的挑戰。
針對上述這些挑戰,東南大學國家專用集成電路系統工程技術研究中心依托電子科學與技術國家重點學科的優勢,將多年來承擔的國家、省部級科研項目的科研成果應用于教學,開展軟硬件協同的嵌入式系統教學,具體舉措包括:第一,建設了以自主SoC芯片為基礎的系列嵌入式系統課程。包括面向本科的《嵌入式系統概論》,面向研究生課程的《嵌入式系統》、《SoC設計》、《嵌入式系統高級C語言編程》、《嵌入式操作系統》、《移動互聯網應用編程》、《嵌入式系統實訓》。課程內容覆蓋從SoC芯片到軟硬協同設計、適配優化再到應用方案設計的各層次;第二,采用自主SoC芯片設計了多款教學實驗平臺,并開發了相關實驗。在課內有限的學時內重點培養學生基本的實踐技能,通過課外實驗和綜合實訓課程培養學生的綜合應用能力,通過連續舉辦多屆嵌入式設計競賽培養學生的創新能力。
本書的寫作目的就是為了配合本科課程《嵌入式系統概論》和研究生課程《嵌入式系統》的教學。因為是用作本科概論課程和研究生基礎課程用書,本書的目的不是也不可能是講授嵌入式系統相關的所有內容。事實上,試圖在一本書、一門課程中將嵌入式系統的所有內容講授清楚是不可能的。因此本書的基本定位是基礎與入門。為后續課程或進一步的學習打下堅實的基礎和掃清概念障礙。我們發現初學者對于現代SoC,尤其是面向移動互聯網終端的SoC中出現的新概念、新知識的了解非常匱乏,而這些對于開展軟硬件協同設計與軟硬件適配優化卻是必不可少的。與以往許多教材不同,本書試圖站在SoC設計者的角度來介紹嵌入式系統的相關基礎知識。這得益于本書作者參與了東南大學國家ASIC工程中心幾款自主SoC芯片設計的全過程,全書中我們也將以自主SoC芯片SEP4020和SEP6200作為案例進行介紹。
為了便于教學,本書幾乎在所有的章節中都設置了專門的設計案例和思考題。為了適應研究生教學的需要,本書在每章都設置了提高內容(書中帶*的章節),將最新的技術發展融入教學內容。這些內容涉及到新型的片上互聯架構、高性能CPU架構、異構計算單元、片上存儲架構、多層次低功耗設計等內容,并為研究生和學有余力的本科生設置了擴展閱讀單元,讀者們可以通過這些擴展閱讀進一步深化對相關技術的了解。
本書各章節安排如下:
第1章 嵌入式系統概況
概述了嵌入式系統的概念、嵌入式系統的應用等。作為兩個最重要也可能是最熱門的兩個應用領域,本章專門對移動互聯網終端和物聯網進行了介紹。我們還將在本章介紹嵌入式系統的產業鏈構成,并對學習嵌入式系統的知識體系進行了梳理。本章最后通過一個MP3播放器的實例分析引出問題:按下按鈕后MP3音樂是怎么播放出來的?
第2章 嵌入式系統的SoC硬件架構
介紹了SoC的硬件架構,由總線互聯、處理器、中斷控制器、定時器、存儲系統、外設接口等組成,由于本書后面的章節將詳細闡述處理器、存儲系統、各種接口等部分,因此本章重點介紹了SoC芯片的總線互聯,并分析了ARM公司的片上互聯標準——AMBA。本章還專門介紹了DMA控制器的工作原理。在案例部分,本章給出了幾款SoC芯片的架構介紹。
第3章 嵌入式系統的開發和調試
本章首先介紹了嵌入式系統的一般開發過程,并對各種調試方法進行了介紹,包括模擬器、在線仿真、片上在線仿真和跟蹤技術,并詳細介紹了基于JTAG的調試方法。接著對ARM公司的3款集成開發環境:ADS、MD-5和MDK進行了介紹。
第4章 SoC中的CPU內核
介紹了CPU的基本概念:CPU的流水線技術、分支預測技術、亂序執行技術、超標量處理器、VLIW處理器、EPIC處理器、多核處理器等。接下來重點介紹了ARM處理器的特點、編程模型、指令系統、匯編語言程序結構、異常處理、編程技巧、ARM系列微處理器等。作為對ARM架構的補充,本章還介紹了MIPS、龍芯和眾志CPU的基本架構。GPU和可重構計算作為新興的計算引擎也在本章進行了介紹。
第5章 存儲子系統
本章首先介紹嵌入式系統存儲子系統的金字塔結構,重點分析了高速緩存(Cache)與虛擬存儲器技術。接下來介紹了常用的存儲器及其時序,包括SRAM、SDRAM、DDR SDRAM、Flash等。SoC中的外部存儲器控制接口EMI及其編程模型,SoC中的SD/MMC控制器及其編程模型也在本章進行了講解。最后介紹了存儲子系統的性能和功耗優化技術。
第6章 外設接口
本章分別介紹了低速通信接口控制器(異步串行通信UART、同步串行通信SPI),高速通信接口控制器(通用串行總線USB、10/100M以太網MAC網絡接口),人機界面控制器(液晶顯示器控制器LCDC、音頻接口I2S控制器)。
第7章 嵌入式系統軟件概述
本章首先介紹嵌入式系統軟件的組成、bootloader引導程序,以及為什么需要嵌入式操作系統和嵌入式操作系統的一些基本概念。在本章的第二部分,重點介紹了與嵌入式操作系統相關的基本原理,包括內核中的任務管理、任務間通信和中斷管理。Android作為當前最流行的手持終端操作系統在本章的第三部分進行了介紹。
第8章 嵌入式系統功耗優化
本章首先概述了低功耗設計方法。接著分別介紹了SoC級低功耗設計方法和嵌入式系統級低功耗設計方法,并給出了兩個與之對應的設計案例。
相應的課程安排
本書可以作為電子類本科生高年級和研究生低年級的教材。按照2學分(本科32學時、研究生36學時,其中實驗課時按一半折算)的課程設置,作者給出的參考課時安排如下(教師可根據實際情況進行調整):
l 本科生《嵌入式系統概論》授課學時安排(24學時)
第1章 嵌入式系統概況 2學時
第2章 嵌入式系統中SoC的
凌明,東南大學教授,東南大學電子科學與工程學院副院長,東南大學集成電路學院院長,東南大學國家專用集成電路系統工程技術研究中心。南京博芯電子有限公司總經理。長期從事集成電路、電子系統設計方面的科研和教學工作,出版多部專業教材和專著,科研、教學、寫作經驗豐富。
目 錄
第1章 嵌入式系統概況 1
1.1 什么是嵌入式系統 1
1.2 嵌入式系統的應用與分類 2
1.2.1 基于實時性的分類 2
1.2.2 基于應用的分類 2
1.2.3 移動互聯網 3
1.2.4 物聯網 4
1.3 嵌入式系統的產業鏈 6
1.4 嵌入式系統的知識體系 7
1.5 案例:MP3播放器 9
思考題 10
擴展閱讀 11
第2章 嵌入式系統中SoC的硬件架構 12
2.1 SoC硬件架構概述 12
2.2 互聯結構 15
2.2.1 常見互聯結構分類 15
2.2.2 地址空間 20
2.2.3 常見互聯結構接口協議 23
2.3 中央處理器 32
2.4 中斷控制器 32
2.5 存儲系統 34
2.6 直接存儲器訪問(DMA) 35
2.6.1 scatter-gather DMA 36
2.6.2 SEP4020芯片中的DMA控制器 37
2.6.3 DMAC驅動 40
2.7 外設接口控制器 40
2.7.1 高速通信接口控制器 40
2.7.2 低速通信接口控制器 41
2.7.3 人機界面控制器 41
2.8 案例:SoC架構設計 41
2.8.1 S3C44B0X 41
2.8.2 S3C6410 42
2.8.3 OMAP3530 43
2.8.4 SEP4020 43
2.8.5 SEP6200 44
思考題 47
擴展閱讀 47
第3章 嵌入式系統的開發和調試 48
3.1 嵌入式系統的一般開發過程 48
3.1.1 交叉編譯 49
3.1.2 鏈接 50
3.1.3 調試 50
3.2 調試方式介紹 51
3.2.1 模擬器 53
3.2.2 駐留監控軟件 60
3.2.3 在線仿真調試 62
3.2.4 片上在線仿真調試 62
3.2.5 跟蹤(Trace)技術 63
3.2.6* CoreSight調試與跟蹤技術簡介 65
3.3 基于JTAG接口的片上在線仿真 70
3.3.1 JTAG簡介 70
3.3.2 基于JTAG的片上在線仿真的系統結構 75
3.3.3* ARM7TDMI內核調試原理 76
3.4 ARM的集成開發環境 82
3.4.1 ADS集成開發環境 83
3.4.2 DS-5集成開發環境 83
3.4.3 MDK集成開發環境 89
3.5 嵌入式軟件的執行鏡像與啟動過程 94
3.5.1 ARM鏈接器的輸出文件的加載視圖與執行視圖 95
3.5.2 基于ROM的程序執行 97
3.5.3 基于RAM的程序執行 97
3.5.4 ROM/RAM重映射 98
思考題 98
擴展閱讀 98
第4章 SoC中的CPU內核 100
4.1 CPU的基本概念 100
4.1.1 CPU的發展 100
4.1.2 復雜指令集(CISC)與精簡指令集(RISC) 103
4.1.3 CPU的流水線技術 104
4.1.4* CPU的分支預測技術 106
4.1.5* 亂序超標量處理器 110
4.1.6* SIMD和向量處理器 114
4.1.7* VLIW處理器 115
4.1.8* EPIC處理器 116
4.2 ARM內核 116
4.2.1 ARM介紹 116
4.2.2 ARM7TDMI編程模型 121
4.2.3 ARM7TDMI的指令集 131
4.2.4 ARM7TDMI匯編語言 143
4.2.5 ARM7TDMI異常處理 146
4.2.6 ARM匯編程序與C程序 153
4.2.7* ARM處理器的多核技術 158
4.2.8* ARM處理器的最新發展 164
4.3* 其他CPU介紹 169
4.3.1 MIPS體系架構 170
4.3.2 龍芯處理器 175
4.3.3 UniCore-2 處理器 178
4.4* 其他類型的計算引擎 181
4.4.1* GPU 181
4.4.2* 可重構計算 187
案例:REMUS-II粗粒度可重構計算架構 196
思考題 201
擴展閱讀 202
第5章 存儲子系統 203
5.1 存儲子系統概述 203
5.2 高速緩存Cache 204
5.2.1 Cache的基本組成 204
5.2.2 Cache的基本原理 206
5.2.3* Cache缺失與訪問沖突 212
5.2.4* Cache一致性問題 216
5.2.5 Cache和SPM的比較 218
5.2.6* ARM Cortex A8處理器的Cache架構 221
5.3 虛擬存儲器 222
5.3.1 虛擬內存技術的基本原理 222
5.3.2 虛實地址映射與轉換 224
5.3.3 快速地址轉換技術 227
5.3.4 地址保護機制 228
5.3.5 處理缺頁和TLB缺失 230
5.3.6 ARM Cortex A系列處理器的虛存管理 230
5.4 片外存儲器 234
5.4.1 靜態隨機存儲器(SRAM) 235
5.4.2 動態隨機存儲器(DRAM) 237
5.4.3 非易失性存儲器 250
5.5 外部存儲器接口 258
5.5.1 SEP4020芯片的外部存儲器接口EMI 258
5.5.2 SEP4020芯片EMI的初始化與配置 261
5.5.3 OMAP4460處理器的外部存儲器接口 266
5.6* 存儲子系統優化技術 267
5.6.1 存儲子系統的技術指標 267
5.6.2 DDR控制器的優化 271
5.6.3 片上存儲器布局優化技術 276
案例:高能效高清媒體處理器的訪存QoS 279
思考題 284
擴展閱讀 285
第6章 外設接口 288
6.1 低速通信接口 288
6.1.1 異步串行通信UART 288
6.1.2 同步串行通信 294
6.2 高速通信接口 299
6.2.1 通用串行總線USB 299
6.2.2* 10/100M以太網MAC網絡接口 304
6.3 人機接口 313
6.3.1 液晶顯示器接口 313
6.3.2 音頻接口 322
6.3.3 觸摸屏接口 326
6.4 定時器 332
6.4.1 通用定時器 332
6.4.2 RTC 333
思考題 335
擴展閱讀 336
第7章 嵌入式系統軟件概述 337
7.1 嵌入式系統的軟件框架 337
7.1.1 嵌入式系統軟件所面臨的挑戰 337
7.1.2 嵌入式軟件的層次框架 338
7.2 嵌入式操作系統的基本原理 340
7.2.1 嵌入式操作系統簡介 340
7.2.2 嵌入式操作系統的內核 341
7.2.3 任務管理與調度 342
7.2.4 任務間通信 348
7.2.5 中斷管理 350
7.3* Android操作系統簡介 356
7.3.1 Android操作系統的層次 357
7.3.2 Android虛擬機 358
7.3.3 Android的任務間通信機制 366
7.3.4 Android的安全機制 371
案例:基于SEP4020的EPOS軟件平臺設計 375
思考題 378
擴展閱讀 378
第8章 嵌入式系統功耗優化 380
8.1 嵌入式系統功耗優化概述 380
8.1.1 嵌入式系統的功耗問題 380
8.1.2 SoC芯片級功耗優化 381
8.1.3 嵌入式系統級功耗優化 385
8.2 SoC芯片級低功耗設計方法 386
8.2.1 時鐘門控 387
8.2.2 多電壓域技術 389
8.2.3 電源門控技術 390
8.2.4* 動態電壓頻率調節和自適應調節 392
案例:SoC芯片低功耗設計 397
8.3 嵌入式系統級低功耗設計方法 400
8.3.1 嵌入式系統級功耗優化技術介紹 400
8.3.2 動態電源管理DPM 401
8.3.3 動態電壓調節DVS 403
8.3.4 動態電壓頻率調節DVFS 405
案例:整機系統級低功耗設計 407
思考題 412
擴展閱讀 412