內容簡介目錄本書是一本講述如何基于ARM7內核處理器進行嵌入式系統(tǒng)設計和開發(fā)的實用書籍。本書提供的實例全面涉及各種底層硬件驅動(如Flash ROM、SDRAM、Nandflash存儲器、通用I/O、UART、定時器、LCD、I2C接口、A/D轉換器、觸摸屏及USB等)、μC/OSⅡ嵌入式操作系統(tǒng)、圖形用戶界面系統(tǒng)、文件系統(tǒng)和TCP/IP協(xié)議棧等嵌入式系統(tǒng)體系結構中的組成部件。書中通過28個實例對相關知識進行了有針對性的深入分析和詳細解說,并為讀者提供了可遵循的實踐步驟,使讀者能夠在實際應用中深入掌握和實現(xiàn)這些技術和技巧。本書內容豐富,深入淺出,實用性強,不僅適合作為高等學校嵌入式系統(tǒng)相關專業(yè)的實驗、培訓教材或教師參考用書,也適合從事嵌入式系統(tǒng)設計和開發(fā)工作的專業(yè)技術人士使用。隨著計算機技術逐漸滲透到各類電子產品當中,一種實用、高效的計算機系統(tǒng):嵌入式系統(tǒng)不斷展現(xiàn)出它獨特的魅力。與桌面計算機不同,嵌入式計算機系統(tǒng)專門服務于特定需求,一般要求低成本、低耗費、輕型、高性能、高可靠性及可配置性。嵌入式系統(tǒng)日益廣泛的應用也讓人們看到了這項技術所蘊涵的巨大的市場潛力。市場的需求帶動了對技術人才的需求,今天,大批的技術人員和學者的目光都被吸引到嵌入式系統(tǒng)的設計與開發(fā)這門技術上。但是,嵌入式系統(tǒng)的設計與開發(fā)作為一項實踐性很強的專業(yè)技術,光有理論知識是無法真正深刻理解和掌握的。而今,市場上一些有關嵌入式系統(tǒng)的書籍,多是理論的堆積和外文資料的翻譯,這對于希望獲得快速而有效的知識技能的嵌入式系統(tǒng)技術人員來說,無法通過對這些書籍的閱讀,獲得更有效的資訊,從而難以盡快地進入角色、建立起設計思路。本書則試圖打破這種狀況,為讀者提供直觀、易懂且深入淺出的形式和內容。書中采用了列舉實例的方式,深入淺出地揭示嵌入式系統(tǒng)技術在一些具體項目中的應用。這些實例都是可供實踐和快速掌握的。每個實例相當于一個小型項目。"實例內容和目標"類似于實際應用開發(fā)中的"功能需求"或"技術指標",它首先為實例明確了一個具體的實現(xiàn)目標;之后,依據應用開發(fā)中的步驟,面對設計要求進行"實例分析":采用什么樣的設計思路,主要的知識有哪些,要進行哪幾項工作等等;最后在"實現(xiàn)方法和步驟"中,則進行具體的工作:電路設計和編程。本書是由在嵌入式系統(tǒng)領域中工作多年的工程師依據自身經驗編寫而成,因此,在跟隨本書實踐的過程中,讀者將感到有如親身參與了實際的設計與開發(fā)。書中不僅詳細說明了如何驗證各個實例,附帶光盤中還包含了完整的可運行的實例源代碼。通過對實例的運行,讀者可以清楚地看到運行的現(xiàn)象或結果,從而留下直觀和深刻的印象。書中的實例以業(yè)界表現(xiàn)出色的ARM處理器(采用ARM7TDMI內核的、三星公司推出的S3C44B0X)及其外圍電路為硬件基礎,以簡明內核式的μC/OSⅡ作為嵌入式操作系統(tǒng)進行介紹,同時對嵌入式系統(tǒng)開發(fā)中常用的GUI系統(tǒng)、文件系統(tǒng)、TCP/IP協(xié)議棧等都進行了全面的揭示,盡可能完整地講述嵌入式系統(tǒng)設計與開發(fā)中運用到的知識和技術。(1) 書中提供了哪些實例本書提供了28個實例,這些實例涉及面較廣,遵循著先總體、后具體,先硬件、后軟件,先模塊、后系統(tǒng)的思路編寫。這樣,方便了初學者從前往后順序閱讀,依次對每個實例進行學習和實踐,循序漸進地掌握嵌入式系統(tǒng)開發(fā)技術。同時,本書的每一個實例又是相對獨立的,建議具備一定專業(yè)技術和經驗的讀者,可以首先通過閱讀實例2了解目標系統(tǒng)的構架,然后挑選自己感興趣的實例進行研讀。實例1是一個概括性的實例,提出在進行一個典型嵌入式系統(tǒng)產品的開發(fā)中所涉及的基本組成元素和應采用的設計思路,建議讀者首先閱讀該實例,從而對嵌入式系統(tǒng)的設計與開發(fā)形成一個總體和直觀的認識。實例2對常用開發(fā)工具及書中實例所依托的目標系統(tǒng)進行了詳細的介紹。通過閱讀該實例,讀者能夠了解到如何開始進行與ARM處理器相關的嵌入式系統(tǒng)的開發(fā),如何構建或運用目標系統(tǒng)平臺。由于每個實例都是在一定的目標系統(tǒng)上運行的,因此建議讀者仔細閱讀本實例的相關部分,了解目標系統(tǒng)的基本硬件配置。該例還通過Hello World程序實例,引導初學者開始嵌入式系統(tǒng)探索的第一步。從實例3開始,以三星公司的S3C44B0X處理器為例,介紹處理器內部功能部件的應用、基本外圍電路設計與應用以及常用通訊接口的設計和應用。由于嵌入式系統(tǒng)產品都是緊密依托于硬件系統(tǒng)的,因此,對硬件系統(tǒng)有一個深刻的了解十分有助于產品的設計和開發(fā)。從實例13開始,詳細分析了擴展觸摸屏、USB接口和以太網接口等外圍部件及其接口的設計方法,其中以太網接口是作為后面TCP/IP協(xié)議棧應用實踐的基礎,觸摸屏的驅動知識也與后面的GUI系統(tǒng)相關。實例16到19深入探討了μC/OSⅡ在ARM處理器系統(tǒng)中的應用,主要圍繞3個內容進行應用舉例:操作系統(tǒng)移植、多任務管理和通訊以及中斷處理程序設計。實例20到24圍繞GUI(圖形用戶界面)進行應用舉例,內容包括移植、圖形文字顯示、漢字顯示、視窗控件和動畫顯示等。實例25講述如何將文件系統(tǒng)加入到系統(tǒng)中,并運用文件系統(tǒng)API函數(shù)對數(shù)據進行文件管理操作。實例26到28,以以太網接口作為硬件基礎,依次是TCP/IP協(xié)議棧中的ARP地址解析應用實例、IP和ICMP網絡診斷應用實例及UDP數(shù)據傳輸應用實例。(2) 如何調試和運行這些實例本書中的28個實例都經過了嚴格驗證,它們是在一款ARM7處理器開發(fā)平臺:"ARMSys"上通過測試的[關于ARMSys開發(fā)平臺的詳細信息,可以從杭州立宇泰(原名立泰)電子有限公司的網站www.HZLitai.com.cn上獲得]。經過適當?shù)男薷模@些實例也能夠在其他典型的ARM7開發(fā)板上運行(以S3C44B0X為處理器)。建議讀者擁有一個自己的開發(fā)平臺,這樣就可以對書中的實例進行實踐了。本書的實例2中詳細介紹了ARMSys的體系結構,在對實例電路的講述中也會采用ARMSys的電路結構。為了更好地學習本書的內容,建議讀者通過這套開發(fā)平臺,或通過自行設計和制作開發(fā)板來驗證實例,作者在本書的附帶光盤中提供了S3C44B0X開發(fā)板的原理圖實例(光盤目錄\\SCH\\)。除了目標板,還需要一套ARM處理器專用的開發(fā)軟件,例如ARM公司提供的ARM Software Development Toolkit 2.5(簡稱SDT2.5),就是一個集成開發(fā)環(huán)境。每一個實例的源代碼都放在本書附帶光盤中的Source\\目錄下,包括可以在SDT2.5下打開的工程文件和可進行程序固化的*.bin文件。在SDT2.5下,利用一個簡易的并口轉JTAG口電路模塊就可以實現(xiàn)代碼的下載與調試,這種方式的速度較慢,但是簡易而且價格低。同樣可以在光盤的SCH\\目錄下找到JTAG板的電路原理圖。關于具體的開發(fā)環(huán)境的組建和開發(fā)步驟,在本書的實例2中將有詳細的指導說明。(3) 光盤資料介紹Tools\\目錄下包括ARM處理器開發(fā)工具軟件包,內容有:IDE Trial\\集成開發(fā)環(huán)境軟件試用版JTAG\\JTAG協(xié)議轉換程序USB\\USB程序下載器安裝程序Programmer\\燒錄工具Source\\目錄下包括28個實例的工程文件、源程序文件、庫文件和工程模板:ADCtestS3C44B0X內置A/D轉換器應用實例ARPscanARP地址解析應用實例ColorLCDtest彩色LCD驅動實例EINTtestS3C44B0X外部中斷實例Ethernet以太網底層函數(shù)編寫實例FAT16testFAT16文件系統(tǒng)應用實例FlashtestFlash ROM讀寫實例guiHelloworld GUI軟件包Hello World應用實例guiHZKGUI與漢字庫的應用實例guiMemDevGUI動畫顯示應用實例guiScaleGUI繪制圖形應用實例guiWMGUI窗口控件應用實例HelloworldHello World程序IICtestI2C接口應用實例IOtestI/O應用實例:矩陣式鍵盤掃描Nandflashtest非線性Flash ROM讀寫應用實例PDAtest模擬PDA應用實例PingtestPING診斷工具應用實例RTCtestS3C44B0X內置RTC應用實例SDRAMtestSDRAM接口應用實例Timertest 定時器應用實例Touchtest觸摸屏應用實例UARTtestUART串行口應用實例ucos_ex1μC/OSⅡ應用之一:多任務ucos_ex2 μC/OSⅡ應用之二:任務間通訊ucos_ex3μC/OSⅡ應用之三:中斷服務程序UDPtestUDP數(shù)據傳輸應用實例USBN9603demoUSBN9603控制器的固件程序編寫范例USBtestUSB接口固件編程實例template.apjSDT工程模板PCSoftware\\目錄下包括上述實例中使用到的PC機軟件或驅動程序:GUI Trial\\GUI庫文件和字體轉換工具TCPLean\\運行在主機上的TCP/IP服務程序可執(zhí)行文件(配合實例26~28)USB\\運行在主機上的USB文本文件下載器(配合實例15)SCH\\目錄下包括S3C44B0X處理器系統(tǒng)參考電路圖(PDF格式)。(4) 適合什么樣的讀者本書的主要目的是向社會推廣與嵌入式系統(tǒng)有關的知識和技術,內容編排是由淺入深的,適合不同程度的讀者。入門的讀者可以很快地掌握一些常用的技術并積累開發(fā)經驗,專業(yè)讀者則可從對某個專題實例的閱讀和練習中,掌握相應的開發(fā)技術和技巧。對本書有任何意見和建議,歡迎來信與作者聯(lián)系:xujinggg120@263.net。(5) 感謝參加本書編寫和審閱的還有周德興、饒大立、路邀、丁立偉、郭炳予等,在此對他們的熱情支持表示衷心感謝!對杭州立宇泰電子有限公司提供的優(yōu)秀硬件平臺支持表示感謝!編著者2004年8月 實例1嵌入式系統(tǒng)開發(fā)實例:模擬PDA的實現(xiàn)1.1 概述11.2 實例內容和目標11.3 實例分析21.3.1 系統(tǒng)構成的元素21.3.2 硬件部分31.3.3 軟件部分51.4 實現(xiàn)方法與步驟101.4.1 連接硬件電路111.4.2 程序目錄和內容說明111.4.3 下載并運行程序12實例2ARMSys平臺開發(fā)環(huán)境及工具詳解2.1 概述132.2 實例內容和目標132.3 實例分析142.3.1 ARMSys的組成結構142.3.2 ARMSys的啟動程序和地址空間分配162.3.3 ARMSys提供的開發(fā)環(huán)境182.3.4 應用開發(fā)步驟192.3.5 SDT2.5的介紹192.4 實現(xiàn)方法與步驟202.4.1 編寫或修改源程序代碼212.4.2 使用APM對工程進行編譯222.4.3 使用ADW進行仿真調試302.4.4 在Windows 2000/ XP下使用JTAG.exe372.4.5USB口下載工具392.4.6代碼固化40實例3Flash ROM器件應用3.1 概述423.2 實例內容和目標423.3 實例分析433.3.1 讀操作443.3.2 字寫入操作453.3.3 扇區(qū)/ 塊/ 整片擦除操作473.3.4 內部操作狀態(tài)檢測493.4 實現(xiàn)方法與步驟493.4.1 接口電路493.4.2 硬件上的設置503.4.3 寄存器的說明513.4.4 SST39VF160的擦除533.4.5 SST39VF160的寫入533.5 運行結果54實例4SDRAM器件應用4.1 概述554.2 實例內容和目標554.3 實例分析554.3.1 SRAM器件的結構特點554.3.2 DRAM器件的結構特點564.3.3 SDRAM器件的構成原理和應用特點574.3.4 SDRAM器件IS42S16400簡介574.4 實現(xiàn)方法與步驟594.4.1 地址分配594.4.2 電路連接614.4.3 寄存器設置614.4.4 對IS42S16400的編程654.5 運行結果65實例5Nandflash存儲器器件應用5.1 概述665.2 實例內容和目標665.3 實例分析665.3.1 Nandflash存儲器的應用特點665.3.2 Nandflash存儲器器件K9F5608U0B簡介675.4 實現(xiàn)方法與步驟785.4.1 K9F5608U0B與S3C44B0X的接口設計785.4.2 寫入指令、地址和讀/ 寫數(shù)據的條件795.4.3 讀器件的ID碼子程序805.4.4 塊擦除子程序805.4.5 頁寫入子程序815.4.6 頁讀出子程序825.5 運行結果83實例6通用I/O口的應用:矩陣式鍵盤6.1 概述846.2 實例內容和目標846.3 實例分析846.3.1 S3C44B0X的多功能I/ O口846.3.2 端口選擇886.3.3 端口控制寄存器886.3.4 鍵盤的循環(huán)掃描檢測法906.4 實現(xiàn)方法與步驟906.4.1 寄存器設置916.4.2 編寫鍵盤掃描程序916.5 運行結果93實例7外部中斷處理程序設計7.1 概述947.2 實例內容和目標947.3 實例分析947.3.1 概述947.3.2 中斷控制器947.3.3 中斷源957.3.4 中斷優(yōu)先級產生模塊967.3.5 中斷優(yōu)先級977.3.6 中斷矢量地址表977.3.7 控制中斷的寄存器987.4 實現(xiàn)方法與步驟1067.4.1 I/ O口設置1067.4.2 外部中斷觸發(fā)模式設置1077.4.3 中斷寄存器設置1077.4.4 主程序編寫1077.4.5 中斷處理程序編寫1097.5 運行結果109實例8UART異步串行接口應用8.1 概述1108.2 實例內容和目標1108.3 實例分析1108.3.1 UART操作1118.3.2 UART寄存器1148.4 實現(xiàn)方法與步驟1208.4.1 電路接口和I/ O口設置1208.4.2 UART初始化1218.4.3 myUart_Send函數(shù)主體1218.4.4 字符發(fā)送程序myUart_SendByte1228.5 運行結果123實例9定時器應用9.1 概述1249.2 實例內容和目標1249.3 實例分析1249.3.1 PWM定時器操作1249.3.2 PWM定時器寄存器1309.4 實現(xiàn)方法與步驟1339.4.1 I/ O口設置1339.4.2 定時器時鐘源頻率設置1339.4.3 設置輸出波形頻率1339.4.4 設置占空比1339.4.5 設置定時器控制寄存器并啟動定時器1339.4.6 定時器中斷主程序1349.4.7 定時中斷服務程序1349.5 運行結果134實例10實時日歷時鐘(RTC)應用10.1 概述13610.2 實例內容和目標13610.3 實例分析13610.3.1 實時時鐘特性13610.3.2 實時時鐘寄存器13710.4 實現(xiàn)方法與步驟13910.4.1 實時時鐘初始化13910.4.2 顯示當前時間14010.5 運行結果140實例11LCD接口應用11.1 概述14211.2 實例內容和目標14211.3 實例分析14211.3.1 STN型彩色LCD模塊介紹14211.3.2 S3C44B0X的內部LCD控制器介紹14411.4 實現(xiàn)方法與步驟15011.4.1 I/ O口LCD功能設置15011.4.2 LCD初始化程序15111.4.3 圖像數(shù)據15311.4.4 全屏顯示參考程序15311.4.5 正方形的繪制15411.5 運行結果154實例12I2C接口應用12.1 概述15612.2 實例內容和目標15612.3 實例分析15612.3.1 I2C總線的基本知識15612.3.2 I2C總線通用傳輸格式15612.3.3 I2C串行EEPROM的相關知識15812.3.4 S3C44B0X的I2C接口16012.4 實現(xiàn)方法與步驟16512.4.1 I/ O端口I2C功能設置16512.4.2 I2C中斷使能16512.4.3 初始化I2C接口16512.4.4 向24LC04B中寫入數(shù)據子程序165124.5從24LC04B中讀出數(shù)據子程序166124.6I2C中斷處理子程序166125運行結果168實例13A/D轉換器應用13.1 概述16913.2 實例內容和目標16913.3 實例分析16913.3.1 關于A/ D轉換的基礎知識16913.3.2 S3C44B0X具備的ADC16913.4 實現(xiàn)方法與步驟17213.4.1 模擬信號的產生17213.4.2 ADC控制寄存器的初始化17213.4.3 讀取A/ D轉換數(shù)值子程序17313.5 運行結果173實例14觸摸屏應用14.1 概述17414.2 實例內容和目標17414.3 實例分析17414.3.1 觸摸屏的基本原理17414.3.2 觸摸屏的控制實現(xiàn)17514.3.3 ADS7843引腳配置17514.3.4 ADS7843的典型電路17614.3.5 ADS7843的控制字17714.3.6 ADS7843的工作過程17814.4 實現(xiàn)方法與步驟17914.4.1 接口電路的連接和I/ O口設置17914.4.2 讀取觸摸點坐標程序設計17914.5 運行結果180實例15USB設備接口應用15.1 概述18215.2 實例內容和目標18215.3 實例分析18315.3.1 USB接口工作原理概述18315.3.2 USB設備開發(fā)過程18415.3.3 USB接口控制器USBN960318415.3.4 USB接口電路18515.3.5 固件程序的開發(fā)18515.4 實現(xiàn)方法與步驟18715.4.1 安裝USB驅動程序及進行文件下載18715.4.2 修改固件程序18715.5 運行結果189實例16以太網控制器接口應用16.1 概述19116.2 實例內容和目標19116.3 實例分析19116.3.1 以太網基礎知識19116.3.2 關于以太網控制器RTL801919416.4 實現(xiàn)方法與步驟19916.4.1 連接以太網模塊與處理器的接口19916.4.2 寄存器地址映射19916.4.3 熱復位函數(shù)20016.4.4 初始化函數(shù)20116.4.5 接收/ 發(fā)送函數(shù)20216.5 運行結果205實例17μC/OSⅡ的移植與應用17.1 概述20617.2 實例內容和目標20717.3 實例分析20717.3.1 μC/OSⅡ操作系統(tǒng)的移植條件20717.3.2 移植工作的內容20817.4 實現(xiàn)方法與步驟21417.4.1 實驗準備21417.4.2 多任務應用程序的編寫21417.5 運行結果217實例18μC/OSⅡ的多任務管理和任務間通訊18.1 概述21818.2 實例內容和目標21818.3 實例分析21918.3.1 任務管理函數(shù)21918.3.2 任務間的通訊與同步22418.4 實現(xiàn)方法與步驟23018.4.1 連接電路23018.4.2 主任務處理程序23018.4.3 鍵盤檢測任務處理程序23218.4.4 電壓檢測任務處理程序23318.5 運行結果233實例19μC/OSⅡ中斷處理程序設計19.1 概述23519.2 實例內容和目標23619.3 實例分析23619.3.1 中斷服務子程序23619.3.2 中斷延遲23719.3.3 中斷響應23719.3.4 中斷恢復時間23719.3.5 中斷延遲、響應和恢復23819.4 實現(xiàn)方法與步驟23819.4.1 中斷處理匯編程序的編寫23819.4.2 中斷處理C程序的編寫24019.4.3 中斷處理任務程序的編寫24019.5 運行結果241實例20GUI系統(tǒng)的移植與應用20.1 概述24220.2 實例內容和目標24220.3 實例分析24320.3.1 emWin的介紹24320.3.2 emWin對目標系統(tǒng)的要求24420.3.3 屏幕和坐標24420.3.4 應用emWin的步驟24520.3.5 emWin的移植24520.4 實現(xiàn)方法與步驟24720.4.1 實例準備24720.4.2 定義宏24720.4.3 編寫Hello World程序24720.5 運行結果248實例21圖形文字顯示的基本應用21.1 概述24921.2 實例內容和目標24921.3 實例分析24921.3.1 文字顯示24921.3.2 圖形顯示25321.4 實現(xiàn)方法與步驟25621.4.1 實例準備25621.4.2 繪制表盤的示例代碼25621.5 運行結果257實例22漢字顯示的應用22.1 概述25822.2 實例內容和目標25822.3 實例分析25822.3.1 emWin字體庫的應用25822.3.2 字體庫API25922.3.3 emWin已經提供的字符集26022.3.4 字體轉換器26122.3.5 字體庫文件結構26222.4 實現(xiàn)方法與步驟26422.4.1 得到符合emWin要求的漢字庫26422.4.2 實例準備26822.4.3 顯示漢字的示例代碼26822.5 運行結果268實例23GUI視窗和控件的應用23.1 概述26923.2 實例內容和目標26923.3 實例分析26923.3.1 視窗管理器(WM)26923.3.2 視窗控件(Widgets)27523.3.3 對話框(Dialog)28723.4 實現(xiàn)方法與步驟29423.4.1 實例準備29423.4.2 編寫主程序29423.5 運行結果294實例24GUI中的動畫顯示應用24.1 概述29624.2 實例內容和目標29624.3 實例分析29624.3.1 使用存儲器設備驅動的說明29624.3.2 存儲器設備驅動的繪圖步驟29724.3.3 起用存儲器設備驅動29724.3.4 與存儲器設備驅動相關的API函數(shù)29824.4 實現(xiàn)方法與步驟30424.4.1 回調函數(shù)的參數(shù)30524.4.2 回調函數(shù)的編寫30524.4.3 主程序編寫30624.5 運行結果307實例25基于Nandflash的文件系統(tǒng)25.1 概述30825.2 實例內容和目標30825.3 實例分析30925.3.1 FAT16文件系統(tǒng)的結構30925.3.2 關于Nandflash 31425.4 實現(xiàn)方法與步驟31525.4.1 FAT16的移植31525.4.2 格式化文件系統(tǒng)31625.4.3 文件系統(tǒng)初始化31825.4.4 文件系統(tǒng)驗證程序31925.5 運行結果320實例26ARP網絡尋址26.1 概述32126.2 實例內容和目標32126.3 實例分析32326.3.1 IP地址32326.3.2 IP地址解析32326.3.3 ARP數(shù)據包32426.3.4 ARP掃描器32526.4 實現(xiàn)方法與步驟32626.4.1 主程序處理32626.4.2 ARP數(shù)據包的檢測和創(chuàng)建32926.4.3 連接電路并調試運行33026.5 運行結果330實例27IP與ICMP應用27.1 概述33227.2 實例內容和目標33227.3 實例分析33427.3.1 IP數(shù)據報33427.3.2 ICMP消息33627.3.3 PING工具的工作步驟33727.4 實現(xiàn)方法與步驟33827.4.1 主程序處理33827.4.2 報文發(fā)送34027.4.3 報文接收34127.4.4 ICMP消息函數(shù)34327.4.5 IP數(shù)據報函數(shù)34427.4.6 連接電路并調試運行34627.5 運行結果346實例28UDP數(shù)據報傳輸應用28.1 概述34828.2 實例內容和目標34828.3 實例分析34928.3.1 UDP數(shù)據報34928.3.2 端口和套接字35028.3.3 UDP數(shù)據包格式35128.4 實現(xiàn)方法與步驟35128.4.1 主程序處理35228.4.2 接收處理35328.4.3 創(chuàng)建和發(fā)送UDP數(shù)據報35628.4.4 連接電路并調試運行35728.5 運行結果357附錄AS3C44B0X概述A.1簡介359A.2特性360A.3內部結構圖362A.4芯片引腳定義363附錄BARM處理器工作模式B.1處理器工作狀態(tài)368B.2狀態(tài)切換368B21進入THUMB狀態(tài)368B22進入ARM狀態(tài)368B.3存儲空間格式368B.3.1大端格式368B.3.2小端格式369B.4指令長度369B.4.1數(shù)據類型369B.4.2操作模式369B.5寄存器369B.5.1ARM狀態(tài)寄存器集369B.5.2THUMB狀態(tài)寄存器集370B.5.3ARM狀態(tài)寄存器與THUMB狀態(tài)寄存器之間的關系371B.5.4在THUMB狀態(tài)下操作寄存器高位372B.6程序狀態(tài)寄存器PSR372B.6.1條件碼標志372B.6.2控制位373B.6.3保留位374B.7異常374B.7.1進入異常處理時的行為374B.7.2離開異常處理時的行為375B.7.3異常進入/ 退出概要375B.7.4FIQ(快速中斷請求)375B.7.5IRQ(中斷請求)376B.7.6Abort(異常中斷)376B.7.7SWI(軟件中斷)376B.7.8未定義指令377B.7.9異常中斷向量377B.7.10異常中斷優(yōu)先級377B.7.11復位378附錄C44binit.s初始化程序研究C.1定義入口地址379C.2建立異常中斷處理向量379C.2.1向量中斷模式(只針對IRQ)380C.2.2非向量中斷模式382C.3初始化外部存儲器385C.4初始化堆棧指針386C.5初始化I/ O設備387C.6初始化中斷系統(tǒng)所需要的RAM變量…387C.7初始化C程序所要求的存儲空間388C.7.1關于映像文件及區(qū)域388C.7.2與區(qū)域相關的符號388C.7.3加載時的映像文件389C.7.4執(zhí)行時的映像文件389C.7.5初始化范例程序390C.8進入C語言程序的運行391參考文獻392