關(guān)于我們
書單推薦
新書推薦
|
ARM體系結(jié)構(gòu)與編程
ARM處理器是一種16/32位的高性能、低成本、低功耗的嵌入式RISC微處理器,由ARM公司設(shè)計,然后授權(quán)給各半導體廠商生產(chǎn),它目前已經(jīng)成為應用最為廣泛的嵌入式處理器!禔RM體系結(jié)構(gòu)與編程(第2版)》共為分14章,對ARM處理器的體系結(jié)構(gòu)、指令系統(tǒng)和開發(fā)工具進行了比較全面的介紹。其中包括ARM體系、ARM程序設(shè)計模型、ARM匯編語言程序設(shè)計、ARM C/C++語言程序設(shè)計、ARM連接器的使用、ARM集成開發(fā)環(huán)境CodeWarrior IDE的介紹及高性能的調(diào)試工具ADW的使用。并在此基礎(chǔ)上介紹一些典型的基于ARM體系的嵌入式應用系統(tǒng)設(shè)計的基本技術(shù)。通過閱讀本書,可以使讀者掌握開發(fā)基于ARM的應用系統(tǒng)的各方面的知識。本書既可作為學習ARM技術(shù)的培訓材料,也可作為嵌入式系統(tǒng)開發(fā)人員的參考手冊。
嵌入式系統(tǒng)是指以應用為中心,以計算機技術(shù)為基礎(chǔ),軟件硬件可裁剪,適應應用系統(tǒng)對功能、可靠性、成本、體積和功耗嚴格要求的專用計算機系統(tǒng)。
嵌入式系統(tǒng)并不是最近出現(xiàn)的新技術(shù),只是隨著微電子技術(shù)和計算機技術(shù)的發(fā)展,微控制芯片功能越來越強大,嵌入微控制芯片的設(shè)備和系統(tǒng)越來越多,從而使得這種技術(shù)越來越引人注目而已。嵌入式系統(tǒng)與通用的計算機系統(tǒng)既有相似之處,也有明顯的區(qū)別。通常,嵌入式系統(tǒng)中的系統(tǒng)程序(包括操作系統(tǒng))與應用程序是渾然一體的,這些程序被編譯連接成一個可以執(zhí)行的二進制映像文件(Image),這個二進制映像文件被固化在系統(tǒng)中,在系統(tǒng)復位后自動執(zhí)行。嵌入式系統(tǒng)的開發(fā)系統(tǒng)與實際運行的系統(tǒng)并不相同,需要交叉編譯系統(tǒng)和適當?shù)恼{(diào)試系統(tǒng)。 ARM嵌入式處理器是一種高性能、低功耗的RISC芯片。它由英國ARM公司設(shè)計,世界上幾乎所有的主要半導體廠商都生產(chǎn)基于ARM體系結(jié)構(gòu)的通用芯片,或在其專用芯片中嵌入ARM的相關(guān)技術(shù)。如TI、Motorola、Intel、NS、Philips、Altera、Agilent、Atmel、Hynix、Sharp、Triscend、NEC、Cirrus Logic、Samsung和LinkUp等公司都有相應的產(chǎn)品。目前ARM芯片廣泛應用于無線產(chǎn)品、PDA、GPS、網(wǎng)絡、消費電子產(chǎn)品、STB及智能卡中,基于ARM內(nèi)核的處理器年產(chǎn)量突破90億個,已經(jīng)成為業(yè)界的龍頭。本書比較全面地介紹基于ARM技術(shù)的嵌入式應用系統(tǒng)的開發(fā)技術(shù)。 1. 本書的主要讀者 本書對ARM處理器的體系結(jié)構(gòu)、指令系統(tǒng)、開發(fā)工具做了比較全面的介紹。并在此基礎(chǔ)上討論一些典型的基于ARM體系嵌入式應用系統(tǒng)設(shè)計時的基本技術(shù)。通過閱讀本書,可以使讀者能夠掌握開發(fā)基于ARM的應用系統(tǒng)的各方面的知識。它既可作為學習ARM技術(shù)的培訓材料,也可作為嵌入式系統(tǒng)開發(fā)人員的參考手冊。 2. 本書的主要內(nèi)容 本書以可執(zhí)行的二進制映像文件(Image)為中心,介紹基于ARM微處理器的嵌入式系統(tǒng)的開發(fā)過程所涉及的知識,主要包括以下幾部分。 * Image文件的“原材料”,包括*.c、*.h、*.obj、*.asm及*.lib文件。這些文件包括操作系統(tǒng),通常以*.lib形式提供,也有一些操作系統(tǒng)附屬的源代碼,可以為*.c、*.h、*.asm;BSP(其實也是操作系統(tǒng)的一部分,因為它對于不同的計算機主板是不同的,這里將其單獨列出),它通常為*.c、*.h、*.asm;語言庫(如C語言運行庫),通常為*.lib;用戶自己的應用程序,通常為*.c、*.h、*.asm。 本書將對應地介紹:ARM的體系結(jié)構(gòu);ARM的指令系統(tǒng);ARM匯編語言,對應于*.asm文件;ARM C語言的獨到部分(與標準C相同的部分這里不做介紹),對應于*.c;ARM的編程指南;ARM的編譯器使用。 本書還將介紹ARM公司提供的集成開發(fā)環(huán)境CodeWarrior IDE的使用方法。 * Image文件各部分的組織方法以及在內(nèi)存中的安排。 本書將對應地介紹ELF格式的映像文件的組成、ARM連接器的使用、程序在 ROM中的存放技術(shù)。 * Image文件中各部分的功能。 本書將對應地介紹一個嵌入式系統(tǒng)各部分的功能,著重介紹系統(tǒng)啟動部分的設(shè)計。這部分是嵌入式系統(tǒng)涉及的難點,將通過一些實例來介紹。 * Image的調(diào)試。 本書主要介紹ARM公司的調(diào)試工具ADW的使用方法。同時將介紹嵌入式系統(tǒng)的基本調(diào)試方法。 3. 本書的結(jié)構(gòu)安排 全書包括14章。各章主要內(nèi)容說明如下。 第1章簡要介紹ARM公司的情況以及基于ARM技術(shù)的嵌入式系統(tǒng)的應用情況,比較詳細地介紹當前ARM體系結(jié)構(gòu)的主要版本,簡要介紹目前ARM處理器的種類及其主要特點。通過這一章的介紹,讀者可以對ARM技術(shù)有一個總體的了解。 第2章介紹ARM編程模型的基本知識。主要包括ARM處理器模式、ARM體系中的寄存器及其使用方式、ARM體系中異常中斷處理的基本概念以及ARM體系中存儲訪問的基本知識。通過這一章的介紹,讀者將了解ARM編程模型的基本知識,為詳細了解ARM程序設(shè)計的各項技術(shù)打好基礎(chǔ)。 第3章詳細介紹ARM體系的指令系統(tǒng)以及尋址方式。將介紹ARM指令集和Thumb指令集各自的應用領(lǐng)域。雖然沒有詳細介紹Thumb指令集,但并不是因為Thumb指令集不重要,而是因為從功能上來講,它是ARM指令集的子集,在了解ARM指令集的基礎(chǔ)上很容易理解Thumb指令。介紹各指令的編碼格式、語法格式、執(zhí)行的操作以及應用方法。最后將介紹一些常用的ARM指令代碼段,幫助用戶進一步理解各指令的用法,積累一些ARM代碼設(shè)計的基本方法。 第4章介紹ARM匯編語言程序設(shè)計的基本方法以及ARM匯編器armasm的使用方法。其中包括ARM匯編語言中的偽操作(Directives)、宏指令(Pseudo-instruction)、匯編語言格式、armasm的使用方法以及一些匯編語言程序示例。通過這些介紹,讀者可以掌握ARM匯編語言設(shè)計的方法。 第5章介紹ARM體系的存儲系統(tǒng)。在一個嵌入式系統(tǒng)中,存儲系統(tǒng)是非常重要的一部分。這里將介紹ARM體系中用于存儲管理的協(xié)處理器CP15、存儲管理單元MMU、寫緩沖以及Cache、快速上下文切換技術(shù),還將介紹有關(guān)存儲系統(tǒng)的程序設(shè)計。并以LinkUp公司ARM處理器芯片L7210中的存儲系統(tǒng)為例,介紹ARM存儲系統(tǒng)的設(shè)計技術(shù)。其中沒有介紹存儲保護單元MPU,這是因為MPU更簡單,而MMU的應用更為廣泛。該章對于虛擬存儲技術(shù)、緩沖技術(shù)以及Cache技術(shù)都將做比較詳細的介紹,使那些從事基于低端單片機應用的開發(fā)人員更容易理解ARM體系中存儲系統(tǒng)的設(shè)計技術(shù)。 第6章介紹ARM/Thumb過程調(diào)用的標準。為了能使單獨編譯的C語言程序和匯編程序之間能夠相互調(diào)用,必須為子程序間的調(diào)用制定一定的規(guī)則。ATPCS規(guī)定了ARM程序和Thumb程序中子程序調(diào)用的基本規(guī)則。這些基本規(guī)則包括子程序調(diào)用過程中寄存器的使用規(guī)則、數(shù)據(jù)棧的使用規(guī)則和參數(shù)的傳遞規(guī)則等。同時,該章還將介紹支持數(shù)據(jù)棧檢查的ATPCS以及與代碼/數(shù)據(jù)位置無關(guān)的ATPCS。 第7章介紹ARM程序和Thumb程序混合使用的方法。如果程序遵守支持ARM程序和Thumb程序混合使用的ATPCS,則程序中的ARM子程序和Thumb子程序可以相互調(diào)用。對于C/C++源程序而言,只要在編譯時指定-apcs /interwork選項,編譯器生成的代碼就遵守支持ARM程序和Thumb程序混合使用的ATPCS。而對于匯編源程序而言,用戶必須保證編寫的代碼遵守支持ARM程序和Thumb程序混合使用的ATPCS。該章將介紹相關(guān)的選項和編程技術(shù)。 第8章介紹ARM匯編程序以及C/C++程序之間相互調(diào)用的技術(shù)。其中將介紹C編譯器中內(nèi)嵌的匯編器的使用方法。 第9章詳細介紹ARM體系中的異常中斷技術(shù)。其中包括異常中斷處理的處理過程,各種異常中斷處理的進入和返回機制,在應用程序中使用異常中斷處理的方法以及各種異常中斷的詳細使用技術(shù)。 第10章主要介紹ARM體系中C/C++語言程序設(shè)計的基本知識。其中包括ARM C/C++語言的一些特性、ARM C/C++編譯器的使用方法,以及ARM C/C++運行時庫的使用方法。通過這些介紹,可以使讀者掌握開發(fā)嵌入式C/C++應用程序的基本知識和方法,進一步了解嵌入式應用系統(tǒng)的特點。 第11章介紹如何由目標文件以及庫文件得到可執(zhí)行的映像文件。其中包括ELF格式的可執(zhí)行映像文件的組成、ARM連接器的使用方法,以及連接過程所執(zhí)行的各種操作。最后通過一些實例介紹在映像文件中各部分內(nèi)容的地址映射關(guān)系。 第12章介紹嵌入式應用程序設(shè)計的基本知識,然后通過幾個示例具體說明嵌入式應用程序的設(shè)計方法。對于每個示例,不僅詳細介紹程序設(shè)計的要點,而且介紹如何使用ARM開發(fā)工具編譯、連接這些程序,生成映像文件。該章是對前面幾章知識的綜合應用。 第13章介紹CodeWarrior IDE集成開發(fā)環(huán)境的使用方法。其中著重介紹在CodeWarrior IDE中工程項目的使用方法,以及生成目標的設(shè)置方法。這些知識是使用CodeWarrior IDE進行應用程序開發(fā)時最為重要的部分。 第14章介紹ARM體系的調(diào)試系統(tǒng)和ARM公司的高性能調(diào)試工具ADW的使用方法。ADW的功能非常多,本書并不是一本專門介紹ADW的書。因而只是介紹其中的一些基本功能和嵌入式系統(tǒng)的基本調(diào)試方法。 4. 閱讀本書時的注意事項 在嵌入式應用系統(tǒng)的開發(fā)技術(shù)中,涉及很多名詞術(shù)語,本書主要使用在國內(nèi)單片機技術(shù)領(lǐng)域中通用的一些名詞術(shù)語,但仍有一些ARM體系中特有的名詞術(shù)語較難翻譯。本書中有很多詞是按照其技術(shù)含義來表達的,而不是按單詞直接翻譯。同時,對于一些名詞術(shù)語,本書在括號內(nèi)給出了其英文名稱,便于讀者理解。 對于ARM指令系統(tǒng),本書給出了詳細的介紹,是希望該部分能作為編寫ARM匯編程序的開發(fā)人員的參考資料,提高開發(fā)人員的工作效率。 本書在編寫過程中,得到了ARM(上海)的大力支持,在此表示衷心的感謝。 作 者
第1章 ARM概述及其基本編程模型1
1.1 ARM技術(shù)的應用領(lǐng)域及其特點1 1.2 ARM體系結(jié)構(gòu)的版本及命名方法2 1.2.1 ARM體系結(jié)構(gòu)的版本2 1.2.2 ARM體系的變種4 1.2.3 ARM/Thumb體系版本的命名 格式6 1.3 ARM處理器系列7 1.3.1 ARM7系列7 1.3.2 ARM9系列8 1.3.3 ARM9E系列9 1.3.4 ARM10E系列9 1.3.5 SecurCore系列10 1.4 ARM處理器的運行模式11 1.5 ARM寄存器介紹11 1.5.1 通用寄存器12 1.5.2 程序狀態(tài)寄存器15 1.6 ARM體系的異常中斷17 1.6.1 ARM中異常中斷的種類17 1.6.2 ARM處理器對異常中斷的 響應過程18 1.6.3 從異常中斷處理程序中返回19 1.7 ARM體系中的存儲系統(tǒng)19 1.7.1 ARM體系中的存儲空間19 1.7.2 ARM存儲器格式19 1.7.3 非對齊的存儲訪問操作20 1.7.4 指令預取和自修改代碼21 第2章 ARM指令分類及其尋址方式22 2.1 ARM指令集概要介紹22 2.1.1 ARM指令的分類22 2.1.2 ARM指令的一般編碼格式22 2.1.3 ARM指令的條件碼域23 2.2 ARM指令的尋址方式24 2.2.1 數(shù)據(jù)處理指令的操作數(shù)的 尋址方式24 2.2.2 字及無符號字節(jié)的Load/Store 指令的尋址方式34 2.2.3 雜類Load/Store指令的 尋址方式46 2.2.4 批量Load/Store指令的 尋址方式52 2.2.5 協(xié)處理器Load/Store指令的 尋址方式56 第3章 ARM指令集介紹61 3.1 ARM指令集61 3.1.1 跳轉(zhuǎn)指令61 3.1.2 數(shù)據(jù)處理指令65 3.1.3 乘法指令78 3.1.4 雜類的算術(shù)指令84 3.1.5 狀態(tài)寄存器訪問指令85 3.1.6 Load/Store內(nèi)存訪問指令88 3.1.7 批量 Load/Store內(nèi)存訪問 指令97 3.1.8 信號量操作指令102 3.1.9 異常中斷產(chǎn)生指令104 3.1.10 ARM協(xié)處理器指令106 3.2 一些基本的ARM指令功能段110 3.2.1 算術(shù)邏輯運算指令的應用111 3.2.2 跳轉(zhuǎn)指令的應用112 3.2.3 Load/Store指令的應用114 3.2.4 批量Load/Store指令的 應用115 3.2.5 信號量指令的應用116 3.2.6 與系統(tǒng)相關(guān)的一些指令 代碼段117 3.3 Thumb指令介紹120 第4章 ARM匯編語言程序設(shè)計122 4.1 偽操作122 4.1.1 符號定義偽操作122 4.1.2 數(shù)據(jù)定義偽操作126 4.1.3 匯編控制偽操作135 4.1.4 數(shù)據(jù)幀描述偽操作138 4.1.5 信息報告?zhèn)尾僮?39 4.1.6 其他的偽操作141 4.2 ARM匯編語言偽指令151 4.3 ARM匯編語言語句的格式153 4.3.1 ARM匯編語言中的符號154 4.3.2 ARM匯編語言中的表達式157 4.4 ARM匯編語言程序的格式162 4.4.1 匯編語言程序的格式162 4.4.2 匯編語言子程序的調(diào)用163 4.5 ARM匯編編譯器的使用164 4.6 匯編程序設(shè)計舉例166 4.6.1 ARM中偽操作的使用實例166 4.6.2 ARM匯編程序的實例169 第5章 ARM的存儲系統(tǒng)175 5.1 ARM存儲系統(tǒng)概述175 5.2 ARM中用于存儲管理的系統(tǒng)控制 協(xié)處理器CP15176 5.2.1 訪問CP15寄存器的指令176 5.2.2 CP15中的寄存器178 5.3 存儲器管理單元MMU186 5.3.1 存儲器管理單元MMU 概述186 5.3.2 禁止/使能MMU188 5.3.3 MMU中的地址變換過程189 5.3.4 MMU中的存儲訪問權(quán)限 控制198 5.3.5 MMU中的域199 5.3.6 關(guān)于快表的操作199 5.3.7 ARM中的存儲訪問失效201 5.4 高速緩沖存儲器和寫緩沖區(qū)205 5.4.1 基本概念205 5.4.2 Cache的工作原理和地址映像 方法206 5.4.3 Cache的分類208 5.4.4 Cache的替換算法209 5.4.5 緩沖技術(shù)的使用注意事項210 5.4.6 存儲系統(tǒng)的一致性問題211 5.4.7 Cache內(nèi)容鎖定213 5.4.8 與Cache和寫緩沖區(qū)相關(guān)的 編程接口214 5.5 快速上下文切換技術(shù)217 5.5.1 快速上下文切換技術(shù)原理217 5.5.2 快速上下文切換技術(shù)編程 接口219 5.6 與存儲系統(tǒng)相關(guān)的程序設(shè)計指南219 5.6.1 地址空間219 5.6.2 存儲器的格式220 5.6.3 非對齊的存儲訪問操作221 5.6.4 指令預取和自修改代碼222 5.6.5 IMB223 5.6.6 存儲器映射的I/O空間224 5.7 ARM存儲系統(tǒng)的實例225 5.7.1 L7205的存儲系統(tǒng)概述225 5.7.2 L7205中的SDRAM226 5.7.3 L7205中的MMU235 第6章 ATPCS介紹242 6.1 ATPCS概述242 6.2 基本ATPCS242 6.2.1 寄存器的使用規(guī)則243 6.2.2 數(shù)據(jù)棧的使用規(guī)則244 6.2.3 參數(shù)傳遞規(guī)則245 6.3 幾種特定的ATPCS246 6.3.1 支持數(shù)據(jù)棧限制檢查的 ATPCS246 6.3.2 支持只讀段位置無關(guān) (ROPI)的ATPCS248 6.3.3 支持可讀寫段位置無關(guān) (RWPI)的ATPCS248 6.3.4 支持ARM程序和Thumb程序 混合使用的ATPCS248 6.3.5 處理浮點運算的ATPCS249 第7章 ARM程序和Thumb程序混合 使用250 7.1 概述250 7.2 在匯編語言程序中通過用戶代碼 支持interwork251 7.2.1 可以實現(xiàn)程序狀態(tài)切換的 指令251 7.2.2 與程序狀態(tài)切換相關(guān)的 偽操作254 7.2.3 進行狀態(tài)切換的匯編程序 實例255 7.3 在C/C++程序中實現(xiàn)interwork256 7.4 在匯編語言程序中通過連接器 支持interwork259 7.4.1 利用veneers實現(xiàn)匯編程序間的 程序狀態(tài)切換259 7.4.2 利用veneers實現(xiàn)匯編程序 與C/C++程序間的程序狀態(tài) 切換261 第8章 C/C++以及匯編語言的混合 編程263 8.1 內(nèi)嵌匯編器的使用263 8.1.1 內(nèi)嵌的匯編指令用法263 8.1.2 內(nèi)嵌的匯編器和armasm的 區(qū)別265 8.1.3 在C/C++程序中使用內(nèi)嵌的 匯編指令265 8.1.4 內(nèi)嵌匯編指令的應用舉例267 8.2 從匯編程序中訪問C程序變量270 8.3 匯編程序、C程序以及C++程序的 相互調(diào)用271 8.3.1 在C++程序中使用C程序 頭文件271 8.3.2 匯編程序、C程序以及C++ 程序的相互調(diào)用舉例272 第9章 異常中斷處理276 9.1 ARM中的異常中斷處理概述276 9.1.1 ARM體系中的異常中斷 種類276 9.1.2 異常中斷向量表及異常中斷 優(yōu)先級277 9.1.3 異常中斷使用的寄存器278 9.2 進入和退出異常中斷的過程279 9.2.1 ARM處理器對異常中斷的 響應過程279 9.2.2 從異常中斷處理程序中 返回282 9.3 在應用程序中安排異常中斷處理 程序285 9.3.1 在系統(tǒng)復位時安排異常中斷 處理程序285 9.3.2 在C程序中安排異常中斷 處理程序286 9.4 SWI異常中斷處理程序288 9.4.1 SWI異常中斷處理程序的 實現(xiàn)288 9.4.2 SWI異常中斷調(diào)用292 9.5 FIQ和IRQ異常中斷處理程序297 9.5.1 IRQ/FIQ異常中斷處理 程序298 9.5.2 IRQ異常中斷處理程序 舉例300 9.6 復位異常中斷處理程序302 9.7 未定義指令異常中斷302 9.8 指令預取中止異常中斷處理程序303 9.9 數(shù)據(jù)訪問中止異常中斷處理程序303 第10章 ARM C/C++編譯器304 10.1 ARM C/C++編譯器概述304 10.1.1 ARM C/C++編譯器及語言庫 介紹304 10.1.2 ARM編譯器中與搜索路徑 相關(guān)的一些基本概念305 10.2 ARM編譯器命令行格式306 10.2.1 過程調(diào)用標準307 10.2.2 設(shè)置源程序語言類型308 10.2.3 指定搜索路徑309 10.2.4 設(shè)置預處理選項309 10.2.5 設(shè)置輸出文件的類型310 10.2.6 指定目標處理器和ARM 體系版本311 10.2.7 生成調(diào)試信息312 10.2.8 代碼生成的控制313 10.2.9 控制警告信息的產(chǎn)生315 10.2.10 編譯時進行的一些額外的 檢查317 10.2.11 控制錯誤信息318 10.3 ARM編譯器中的pragmas319 10.4 ARM編譯器特定的關(guān)鍵詞321 10.4.1 用于聲明函數(shù)的關(guān)鍵詞321 10.4.2 用于聲明變量的關(guān)鍵詞333 10.4.3 用于限定數(shù)據(jù)類型的 關(guān)鍵詞333 10.5 ARM編譯器支持的基本數(shù)據(jù) 類型335 10.6 ARM編譯器中的預定義宏337 10.7 ARM中的C/C++庫339 10.7.1 ARM中的C/C++運行時庫 概述339 10.7.2 建立一個包含C/C++運行時 庫的C/C++應用程序340 10.7.3 建立不包含C運行時庫的 應用程序344 10.7.4 裁減C/C++運行時庫以適應 特定的目標運行環(huán)境345 第11章 ARM連接器347 11.1 ARM映像文件347 11.1.1 ARM映像文件的組成347 11.1.2 ARM映像文件的入口點349 11.1.3 輸入段的排序規(guī)則350 11.2 ARM連接器介紹351 11.3 ARM連接器生成的符號353 11.3.1 連接器生成的與域相關(guān)的 符號353 11.3.2 連接器生成的與輸出段相關(guān)的 符號354 11.3.3 連接器生成的與輸入段相關(guān)的 符號354 11.4 連接器的優(yōu)化功能354 11.5 運行時庫的使用355 11.5.1 C/C++運行時庫與目標 文件356 11.5.2 查找需要的C/C++ 運行時庫356 11.5.3 選擇合適種類的C/C++ 運行時庫357 11.5.4 掃描C/C++運行時庫359 11.6 從一個映像文件中使用另一個映像 文件中的符號359 11.6.1 symdefs文件359 11.6.2 建立symdefs文件361 11.6.3 symdefs文件的使用361 11.7 隱藏或者重命名全局符號362 11.7.1 steering文件的格式362 11.7.2 steering文件中的命令362 11.8 ARM連接器的命令行選項363 11.9 使用scatter文件定義映像文件的 地址映射371 11.9.1 scatter文件概述371 11.9.2 scatter文件中各部分的 介紹373 11.9.3 scatter文件使用舉例376 第12章 嵌入式應用程序示例384 12.1 嵌入式應用程序設(shè)計的基本知識384 12.1.1 嵌入式應用系統(tǒng)中的存儲 映射384 12.1.2 系統(tǒng)初始化385 12.2 使用semihosting的C語言程序 示例388 12.2.1 源程序分析388 12.2.2 生成映像文件391 12.3 一個嵌入式應用系統(tǒng)示例392 12.3.1 源程序分析393 12.3.2 生成映像文件400 12.3.3 本例中地址映射模式401 12.4 進行ROM/RAM地址重映射的 嵌入式應用系統(tǒng)401 12.4.1 地址映射模式401 12.4.2 源程序分析403 12.4.3 生成映像文件404 12.5 一個嵌入式操作系統(tǒng)示例405 第13章 使用CodeWarrior412 13.1 CodeWarrior for ARM概述412 13.2 簡單工程項目的使用413 13.2.1 工程項目窗口413 13.2.2 簡單工程項目的使用416 13.3 配置生成目標424 13.3.1 Debug Settings對話框 介紹424 13.3.2 設(shè)置生成目標的基本選項425 13.3.3 匯編器選項的設(shè)置430 13.3.4 編譯器的選項設(shè)置435 13.3.5 連接器的選項設(shè)置443 13.3.6 fromELF工具的選項設(shè)置449 13.4 復雜工程項目的使用451 13.4.1 建立一個新的生成目標451 13.4.2 將一個生成目標更名453 13.4.3 建立生成目標之間的依賴 關(guān)系453 13.4.4 子工程項目的使用455 13.5 工程項目模板456 13.5.1 ADS中工程項目模板的 使用457 13.5.2 建立用戶工程項目模板461 13.6 編譯和連接工程項目461 13.6.1 編譯文件462 13.6.2 生成工程項目463 第14章 ARM體系中的調(diào)試方法465 14.1 ARM體系中的調(diào)試系統(tǒng)概述465 14.2 基于Angel的調(diào)試系統(tǒng)466 14.2.1 基于Angel的調(diào)試系統(tǒng)的 概述466 14.2.2 使用Angel開發(fā)應用程序469 14.2.3 Angel執(zhí)行的操作474 14.2.4 將Angel移植到特定的目標 系統(tǒng)476 14.3 基于JTAG的調(diào)試系統(tǒng)495 14.3.1 基于JTAG的調(diào)試系統(tǒng)的 特點495 14.3.2 基于JTAG的調(diào)試系統(tǒng) 結(jié)構(gòu)495 14.3.3 目標系統(tǒng)中的調(diào)試功能擴展 部件496 14.3.4 基于JTAG的調(diào)試過程498 14.4 ADW使用介紹498 14.4.1 ADW概述498 14.4.2 ADW中的窗口501 14.4.3 ADW使用介紹505 參考文獻513
其中的符號及參數(shù)說明如下。
。菏侵噶钪浄,如ADD表示算術(shù)加操作指令。 {}:表示指令執(zhí)行的條件。 {S}:決定指令的操作是否影響CPSR的值。 :表示目標寄存器。 。罕硎景1個操作數(shù)的寄存器。 。罕硎镜2個操作數(shù)。 通常有下面3種格式。 (1) 立即數(shù)方式。每個立即數(shù)由一個8位的常數(shù)循環(huán)右移偶數(shù)位得到。其中循環(huán)右移的位數(shù)由一個4位二進制的兩倍表示。如果立即數(shù)記作,8位常數(shù)記作immed_8,4位的循環(huán)右移值記作rotate_imm,則有: = immed_8循環(huán)右移(2*rotate_imm) 這樣并不是每一個32位的常數(shù)都是合法的立即數(shù),只有能夠通過上面構(gòu)造方法得到的才是合法的立即數(shù)。下面的常數(shù)是合法的立即數(shù):
你還可能感興趣
我要評論
|