出版時(shí)間:2012-6 出版社:電子工業(yè)出版社 電子工業(yè)出版社 (2012-06出版) 作者:唐振明 編 頁(yè)數(shù):207
Tag標(biāo)簽:無(wú)
內(nèi)容概要
目前基于A(yíng)RM架構(gòu)的嵌入式CPU在手持移動(dòng)設(shè)備和通信等嵌入式領(lǐng)域占據(jù)絕對(duì)市場(chǎng)的狀況,應(yīng)重視學(xué)習(xí)嵌入式體系架構(gòu),首選是ARM體系架構(gòu)。編者唐振明認(rèn)為:學(xué)習(xí)ARM體系架構(gòu)不僅是概念的羅列、知識(shí)點(diǎn)的講解及理論的貫穿,更重要的是在理解ARM設(shè)計(jì)理念的同時(shí),要有好的配套實(shí)驗(yàn)或跟蹤的案例,即強(qiáng)調(diào)“理論+實(shí)踐”的學(xué)習(xí)方法?!禔RM體系結(jié)構(gòu)與編程》就是圍繞這一方法而編寫(xiě)的,主要內(nèi)容包括ARM處理器概述、ARM體系結(jié)構(gòu)、ARM編程模型、ARM微處理器的指令系統(tǒng)、ARM匯編語(yǔ)言程序設(shè)計(jì)、Bootloader啟動(dòng)代碼分析和ARM RealView MDK集成開(kāi)發(fā)環(huán)境,并針對(duì)ARM硬件寄存器和RISC指令集做了大量的配套實(shí)驗(yàn)及調(diào)試方法,最后在理解以上知識(shí)點(diǎn)的基礎(chǔ)上對(duì)Bootloader進(jìn)行了詳細(xì)的分析?! 禔RM體系結(jié)構(gòu)與編程》適合作為計(jì)算機(jī)、軟件工程、電氣自動(dòng)化及電子信息工程等大專(zhuān)生、本科生或研究生課程的教材。
書(shū)籍目錄
第1章 ARM處理器概述 1.1 嵌入式處理器簡(jiǎn)介 1.1.1 嵌入式處理器分類(lèi) 1.1.2 嵌入式操作系統(tǒng) 1.1.3 嵌入式處理器評(píng)價(jià)指標(biāo) 1.2 什么是ARM 1.2.1 ARM的概念 1.2.2 ARM公司發(fā)跡史 1.3 ARM體系結(jié)構(gòu)的命名規(guī)則 1.4 ARM系列處理器簡(jiǎn)介 1.4.3 ARM9E系列 1.4.4 ARM10系列 1.4.5 ARM11系列 1.4.6 SecurCore系列 1.4.7 ARM Cortex-A8處理器 1.5 ARM處理器的技術(shù)優(yōu)勢(shì)及其應(yīng)用 1.6 本章小結(jié) 1.7 課后練習(xí) 第2章 ARM體系結(jié)構(gòu) 2.1 ARM體系結(jié)構(gòu)的特點(diǎn) 2.1.1 RISC設(shè)計(jì)思想的體現(xiàn) 2.2 ARM流水線(xiàn) 2.2.1 ARM流水線(xiàn)的概念與原理 2.2.2 流水線(xiàn)的分類(lèi) 2.2.33級(jí)流水線(xiàn)ARM組織 2.2.45級(jí)流水線(xiàn)ARM組織 2.2.56級(jí)流水線(xiàn)ARM組織 2.2.6 影響流水線(xiàn)性能的因素 2.3 ARM存儲(chǔ)器 2.4 I/O管理 2.5 ARM開(kāi)發(fā)調(diào)試方法 2.5.1 指令集模擬器 2.5.2 駐留監(jiān)控軟件 2.5.3 JTAG仿真調(diào)試 2.5.4 基于ULINK在線(xiàn)仿真器 2.6 本章小結(jié) 2.7 課后練習(xí) 第3章 ARM編程模型 3.1 數(shù)據(jù)類(lèi)型 3.1.1 ARM的基本數(shù)據(jù)類(lèi)型 3.1.2 浮點(diǎn)數(shù)據(jù)類(lèi)型 3.1.3 存儲(chǔ)器大/小端 3.2 處理器工作模式 3.3 ARM寄存器組織 3.3.1 通用寄存器 3.3.2 程序狀態(tài)寄存器 3.4 異常中斷處理 3.4.1 異常種類(lèi) 3.4.2 異常優(yōu)先級(jí) 3.4.3 處理器模式和異常 3.4.4 異常響應(yīng)流程 3.4.5 從異常處理程序中返回 3.5 本章小結(jié) 3.6 課后練習(xí) 第4章 ARM微處理器的指令系統(tǒng) 4.1 ARM微處理器的指令集概述 4.1.1 ARM微處理器的指令的分類(lèi)與格式 4.1.2 指令的條件域 4.2 ARM指令集 4.2.1 數(shù)據(jù)處理指令 4.2.2 移位指令 4.2.3 乘法指令與乘加指令 4.2.4 批量數(shù)據(jù)加載/存儲(chǔ)指令 4.2.5 跳轉(zhuǎn)指令 4.2.6 程序狀態(tài)寄存器訪(fǎng)問(wèn)指令 4.2.7 加載/存儲(chǔ)指令 4.2.8 協(xié)處理器指令 4.2.9 異常產(chǎn)生指令 4.3 ARM指令的尋址方式 4.3.1 立即尋址 4.3.2 寄存器尋址 4.3.3 寄存器間接尋址 4.3.4 基址變址尋址 4.3.5 多寄存器尋址 4.3.6 相對(duì)尋址 4.3.7 堆棧尋址 4.4 Thumb指令及應(yīng)用 4.5 本章小結(jié) 4.6 課后練習(xí) 第5章 ARM匯編語(yǔ)言程序設(shè)計(jì) 5.1 ARM匯編器所支持的偽操作 5.1.1 符號(hào)定義Symbol Definition偽操作 5.1.2 數(shù)據(jù)定義Data Definition偽操作 5.1.3 匯編控制Assembly Control偽操作 5.1.4 信息報(bào)告Reporting偽操作 5.1.5 指令集選擇Instruction Set Selection偽操作 5.1.6 其他偽操作 5.2 ARM匯編器所支持的偽指令 5.2.1 ADR偽指令 5.2.2 ADRL偽指令 5.2.3 MOV32偽指令 5.2.4 LDR偽指令 5.3 匯編語(yǔ)言文件格式 5.3.1 ARM匯編語(yǔ)言語(yǔ)句格式 5.3.2 ARM匯編語(yǔ)言中的符號(hào) 5.3.3 匯編語(yǔ)言程序中的表達(dá)式和運(yùn)算符 5.3.4 匯編語(yǔ)言預(yù)定義寄存器和協(xié)處理器 5.3.5 匯編語(yǔ)言的程序結(jié)構(gòu) 5.3.6 匯編語(yǔ)言子程序調(diào)用 5.4 ARM匯編語(yǔ)言與C語(yǔ)言混合編程 5.4.1 在C語(yǔ)言中內(nèi)嵌匯編語(yǔ)言 5.4.2 在C語(yǔ)言中調(diào)用匯編語(yǔ)言的函數(shù) 5.4.3 在匯編語(yǔ)言中調(diào)用C語(yǔ)言的函數(shù) 5.5 本章小結(jié) 5.6 課后練習(xí) 第6章 Bootload啟動(dòng)代碼分析 6.1 匯編基礎(chǔ) 6.2 啟動(dòng)代碼功能模塊分解 6.2.1 程序的入口地址 6.2.2 看門(mén)狗及中斷的禁止 6.2.3 系統(tǒng)時(shí)鐘初始化 6.2.4 初始化內(nèi)存控制器 6.2.5 系統(tǒng)堆棧的初始化 6.2.6 建立中斷向量表 6.2.7 跳轉(zhuǎn)到C語(yǔ)言入口 6.3 Bootload實(shí)驗(yàn)部分 6.3.1 實(shí)驗(yàn)環(huán)境 6.3.2 實(shí)驗(yàn)步驟 6.3.3 實(shí)驗(yàn)總結(jié) 6.4 Bootload擴(kuò)展部分—U-Boot分析 6.4.1 Bootloader的引導(dǎo)方式 6.4.2 Bootloader的種類(lèi) 6.4.3 U-Boot源碼結(jié)構(gòu) 6.4.4 U-Boot的編譯 6.4.5 U-Boot的移植 6.4.6 添加U-Boot命令 6.4.7 U-Boot的調(diào)試 6.4.8 U-Boot與內(nèi)核的關(guān)系 6.4.9 U-Boot的常用命令 6.4.10 U-Boot的環(huán)境變量 6.4.11 使用U-Boot 6.5 本章小結(jié) 6.6 課后練習(xí) 第7章 ARM RealView MDK集成開(kāi)發(fā)環(huán)境 7.1 RealView MDK突出特性 7.2 MDK功能介紹 7.2.1 Vision4 IDE 7.2.2 Vision4 IDE主要特性 7.2.3 啟動(dòng)代碼配置向?qū)?7.2.4 Vision4設(shè)備模擬器 7.2.5 性能分析器 7.2.6 RealView編譯器 7.2.7 MicroLib 7.2.8 RealView Real-Time Library RealView RTL實(shí)時(shí)庫(kù) 7.2.9 ARM軟件開(kāi)發(fā)工具解決方案 7.3 RealView MDK的使用 7.3.1 Vision4的安裝 7.3.2 創(chuàng)建Vision工程 7.4 Keil MDK編譯器與ULINK2使用 7.4.1 ULINK2概述 7.4.2 ULINK2與MDK的鏈接使用 7.5 Keil MDK編譯器與J-LINK使用 7.5.1 J-LINK概述 7.5.2 J-LINK與MDK的鏈接使用 7.6 Keil MDK編譯器與H-JTAG使用 7.6.1 H-JTAG概述 7.6.2 H-JTAG 調(diào)試結(jié)構(gòu) 7.6.3 H-JTAG的安裝 7.6.4 H-JTAG配置 7.6.5 MDK的安裝與設(shè)置 7.6.6 調(diào)試 7.7 Keil開(kāi)發(fā)工具鏈 7.7.1 用UltraEdit查看和編輯程序源文件 7.7.2 Keil MDK生成BIN過(guò)程 7.7.3 ARM工具鏈準(zhǔn)備實(shí)驗(yàn) 7.7.4 armasm匯編器的使用 7.7.5 armlink鏈接器的使用 7.7.6 armcc編譯器的使用 7.7.7 FromELF實(shí)用工具實(shí)驗(yàn) 7.8 本章小結(jié) 7.9 課后練習(xí) 參考文獻(xiàn)
章節(jié)摘錄
版權(quán)頁(yè): 插圖: 6.4.1 Bootloader的引導(dǎo)方式 Linux系統(tǒng)是通過(guò)Bootloader引導(dǎo)啟動(dòng)的。加電后,就要執(zhí)行Bootloader來(lái)初始化系統(tǒng)。系統(tǒng)加電或復(fù)位后,所有CPU都會(huì)從某個(gè)地址開(kāi)始執(zhí)行,這是由處理器設(shè)計(jì)決定的。例如,X86的復(fù)位向量在高地址端,ARM處理器在復(fù)位時(shí)從地址0x00000000取第一條指令。嵌入式系統(tǒng)的開(kāi)發(fā)板都要把板上ROM或Flash映射到這個(gè)地址。因此,必須把Bootloader程序存儲(chǔ)在相應(yīng)的Flash位置。系統(tǒng)加電后,CHU將首先執(zhí)行它。 主機(jī)和目標(biāo)機(jī)之間一般有串口可以連接,Bootloader軟件通常會(huì)通過(guò)串口來(lái)輸入輸出。例如,輸出出錯(cuò)或者執(zhí)行結(jié)果信息到串口終端,從串口終端讀取用戶(hù)控制命令等。Bootloader啟動(dòng)過(guò)程通常是多階段的,這樣既能提供復(fù)雜的功能,又有很好的可移植性。例如,從Flash啟動(dòng)的Bootloader多數(shù)是兩階段的啟動(dòng)過(guò)程。從后面U—Boot的內(nèi)容可以詳細(xì)分析這個(gè)特性。大多數(shù)。Bootloader都包含2種不同的操作模式:本地加載模式和遠(yuǎn)程下載模式。這兩種操作模式的區(qū)別僅對(duì)于開(kāi)發(fā)人員才有意義,也就是不同啟動(dòng)方式的使用。從最終用戶(hù)的角度看,Bootloader的作用就是用來(lái)加載操作系統(tǒng),并不存在所謂的本地加載模式與遠(yuǎn)程下載模式的區(qū)別。 因?yàn)锽ootloader的主要功能是引導(dǎo)操作系統(tǒng)啟動(dòng),所以我們?cè)敿?xì)討論一下各種啟動(dòng)方式的特點(diǎn)。 (1)網(wǎng)絡(luò)啟動(dòng)方式 這種方式開(kāi)發(fā)板不需要配置較大的存儲(chǔ)介質(zhì),與無(wú)盤(pán)工作站有點(diǎn)類(lèi)似。但是使用這種啟動(dòng)方式之前,需要把Bootloader安裝到板上的EPROM或者Flash中。Bootloader通過(guò)以太網(wǎng)接口遠(yuǎn)程下載Linux內(nèi)核映像或者文件系統(tǒng)。 使用這種方式也有前提條件,就是目標(biāo)板需有串口、以太網(wǎng)接口或者其他連接方式。串口一般可以作為控制臺(tái),同時(shí)可以用來(lái)下載內(nèi)核映像和RAMDISK文件系統(tǒng)。串口通信傳輸速率過(guò)低,不適合用來(lái)掛接NFS文件系統(tǒng)。所以以太網(wǎng)接口成為通用的互聯(lián)設(shè)備,一般的開(kāi)發(fā)板都可以配置10M以太網(wǎng)接口。 對(duì)于PDA等手持設(shè)備來(lái)說(shuō),以太網(wǎng)的RJ一45接口顯得大了些,而USB接口,特別是USB的迷你接口,尺寸非常小。對(duì)于開(kāi)發(fā)的嵌入式系統(tǒng),可以把USB接口虛擬成以太網(wǎng)接口來(lái)通信。這種方式在開(kāi)發(fā)主機(jī)和開(kāi)發(fā)板兩端都需要驅(qū)動(dòng)程序。 另外,還要在服務(wù)器上配置啟動(dòng)相關(guān)網(wǎng)絡(luò)服務(wù)。Bootloader下載文件一般都使用TFTP網(wǎng)絡(luò)協(xié)議,還可以通過(guò)DHCP的方式動(dòng)態(tài)配置IP地址。DHCP/BOOTP服務(wù)為Bootloader分配IP地址,配置網(wǎng)絡(luò)參數(shù),然后才能夠支持網(wǎng)絡(luò)傳輸功能。如果Bootloader可以直接設(shè)置網(wǎng)絡(luò)參數(shù),就可以不使用DHCP,,TFTP服務(wù)為Bootloader客戶(hù)端提供文件下載功能,把內(nèi)核映像和其他文件放在/tftpboot目錄下。這樣Bootloader可以通過(guò)簡(jiǎn)單的TFTP協(xié)議遠(yuǎn)程下載內(nèi)核映像到內(nèi)存。大部分引導(dǎo)程序都能夠支持網(wǎng)絡(luò)啟動(dòng)方式。例如,BIOS的.PXE(Preboot Execution.Environment)功能就是網(wǎng)絡(luò)啟動(dòng)方式;U—Boot也支持網(wǎng)絡(luò)啟動(dòng)功能。
編輯推薦
《ARM體系結(jié)構(gòu)與編程》適合作為計(jì)算機(jī)、軟件工程、電氣自動(dòng)化及電子信息工程等大專(zhuān)生、本科生或研究生課程的教材。
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版