自定義控件及各種特效實驗第1天手冊_第1頁
自定義控件及各種特效實驗第1天手冊_第2頁
自定義控件及各種特效實驗第1天手冊_第3頁
自定義控件及各種特效實驗第1天手冊_第4頁
自定義控件及各種特效實驗第1天手冊_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、ARM 開發培訓班實驗指導 V3.0實驗目錄實驗一、熟悉 realview 開發環境21.1 RealView MDK 軟件開發環境簡介21.1.11.1.21.2RealView MDK 的突出特性2模塊介紹2RealView 使用51.2.1 創建一個工程51.2.1.1 選擇工具集51.2.1.2 創建工程文件71.2.1.3 選擇設備71.2.2 編譯、工程81.2.2.11.2.2.21.2.2.3設置目標硬件的工具選項8增加連接文件9編譯.91.2.3 程序調試101.2.4 工程選項頁概述11實驗二、ARM 指令集122.1 ARM 匯編指令 1122.2 ARM 匯編指令 22

2、02.3 ARM 匯編指令 321實驗三233.1 LDR/STM 指令尋址實驗233.2 ARM 匯編子函數調用253.3 Thumb 匯編指令練習253.4 利用 ARM 匯編實現開發板 LED 燈.25實驗四264.1 簡單C 語言程序實驗264.2 匯編與C 語言的相用實驗264.34.44.5C 語言中內聯匯編程序實驗27C 語言中嵌入型匯編程序實驗27SWI 軟中斷實驗284.6 綜合編程實驗28實驗五、I/O 及串口通信編程實驗29實驗六、中斷實驗32實驗七、實時時鐘實驗32實驗八、看門狗實驗33實驗九、PWM 接口實驗33實驗十、A/D 轉換實驗33實驗十一、I2C 串行通信實

3、驗341ARM 開發培訓班實驗指導 V3.0實驗一、熟悉 realview 開發環境1.1 RealView MDK 軟件開發環境簡介RealView MDK 全稱 RealView MDK 中國版開發套件,源自德國 Keil 公司,被全球超過10 萬的開發工程師驗證和使用,是 ARM 公司目前最新推出的對各種處理器的軟件開發工具。RealView MDK 集成了業內最領先的技術,包括 Vision3 集成開發環境與RealView 編譯器,支持 ARM7、ARM9 和最新的 Cortex-M3 核處理器,自動配置啟動代碼,集成 Flash 燒寫模塊,強大的 Simulation 設備模擬,性

4、能分析等功能,與 ARM 之前的工具包ADS 等相比,RealView 編譯器的最新版本可將性能超過 20。1.1.1 RealView MDK 的突出特性菜鳥的飛毯啟動代碼生成向導,自動引導,一日千里 軟件模擬器,完全脫離硬件的軟件開發過程性能分析器,看得更遠、看得更細、看得更清Cortex-M3 支持 RealView 編譯器,代碼更小,性能更高配備高手的無劍勝有劍的望遠鏡未來戰士的激光劍業界最優秀的編譯器ULINK2器無需安裝驅動 輕松實現 Flash 燒寫 國際品質,本土價格Flash 編程模塊絕對的高性價比1.1.2模塊介紹Vision3 IDEVision IDE 在全球擁有龐大的

5、用戶群,超過 10 萬開發工程師在使用 Keil 開發工具。不管以前是用 8 位、16 位 MCU,還是現在改用 ARM 32 位處理器,Vision IDE 簡單易用,能立馬上手。2Vision3 IDE啟動代碼生成向導設備模擬器性能分析器RealView 編譯器MircoLibRL-ARM(可選)ULINK2器ARM 開發培訓班實驗指導 V3.0圖 1.1 Vision3 IDEVision3 IDE 主要特性:l功能強大的源代碼編輯器;l可根據開發工具配置的設備數據庫;l用于創建和維護工程的工程管理器;l集匯編、編譯和過程于一體的編譯工具;l用于設置開發工具配置的框;l真正集成高速 CP

6、U 及片上外設模擬器的源碼級調試器;l高級 GDI 接口,可用于目標硬件的軟件調試和 ULINK2器的連接;l用于應用程序到 Flash ROM 中的 Flash 編程器;l完善的開發工具手冊、設備和用戶向導。啟動代碼配置向導Vision3 IDE 的啟動代碼配置向導將各個所需配置的功能模塊以框方式展示,附加的提示說明,幫助你快速輕松的做出選擇,生成完善的啟動代碼,免除手工寫幾百行匯編程序的痛苦。3ARM 開發培訓班實驗指導 V3.0圖 1.2配置啟動代碼Vision3 設備模擬器Vision3 設備模擬器的功能強大,能模擬整個 MCU 的行為。使你在沒有硬件或對目標MCU 沒有更深的了解的情

7、況下,仍然可以立即開始開發軟件。高效指令集中斷片內設備ADC,DAC, EBI,Timers UART,CAN,I2C外部信號和 I/O圖 1.3 設備模擬器4ARM 開發培訓班實驗指導 V3.0性能分析器性能分析器可給所有的 MCU 實現如程序運行時間統計、被調用次數統計、代碼覆蓋率統計等高端功能,而這些功能對于快速死區代碼,幫助優化分析等起了關鍵的作用。圖 1.4 性能分析器RealView 編譯器(RVCT)RealView MDK 集成的 RealView 編譯器(跟 RVDS 使用一樣的編譯器),是業界最優秀的編譯器,它能使代碼容量更小、執行效率更高;使應用程序運行更快、系統成本更低

8、。MicroLib為進一步改進基于 ARM 處理器的應用代碼密度,RealView MDK 采用了新型 microlib C庫(用于 C 的 ISO 標準運行的一個子集),并將其代碼鏡像降低最小以滿足微器應用的需求。Microlib C 庫可將運行代碼大大降低。RealView 實RL-ARM(可選)ULINK2器1.2RealView 使用1.2.1 創建一個工程Vision 是一個標準的窗口應用程序,可以點擊程序按鈕開始運行。為了創建一個新的Vision 工程必須作如下處理:選擇工具集 創建工程文件選擇設備1.2.1.1 選擇工具集Vision 可以使用 ARM RealView 編譯工具

9、、 ARM ADS 編譯器、GNU GCC 編譯器和Keil C ARM 編譯器。當使用 GNU GCC 編譯器或ARM ADS 編譯器時必須另外安裝它們編譯集。實際使用的工具集可以在 Vision IDE 的 Project Manage- Components, Environment,5ARM 開發培訓班實驗指導 V3.0and Books框的 Folders/Extensions 頁(見下圖)中選擇。圖 1.5 選擇工具集Use RealView Compiler 復選框表示本工程使用 ARM 開發工具。RealViewFolder文本框指定開發工具的路徑。下面的例子顯示了各種版本的

10、ARM ADS/RealView 開發工具的路徑:a)b)c)Vision 的 RealView 編譯器: BIN31ADS V1.2: C:Program FilesARMADSv1_2BinRealView 評估版 2.1: C:Program FilesARMRVCTPrograms2.1350eval2-scwin_32-pentiumUse Keil CARM Compiler 復選框表示本工程使用 Keil CARM 編譯器、Keil AARM 匯編器和 Keil LARM器/裝載器。Use GNU Compiler 復選框表示本工程使用 GNU 開發工具。Cygnus Folde

11、r 文本框指定 GNU 的安裝路徑。GNU-Tool-Prefix 文本框指定不同的 GNU 工具鏈。下面是各種 GNU版本的例子:a) 帶 uclib 的 GNU V3.22: GNU-Tool-Prefix: arm-uclibc- Cygnus Folder:C:Cygnusb) 帶標準庫的 GNUARM V4: GNU-Tool-Prefix: arm-elf- Cygnus Folder: C:Program FilesGNUARM6ARM 開發培訓班實驗指導 V3.0Keil 根目錄的設置是基于 Vision/ARM 開發工具的安裝目錄的。對于 Keil ARM 工具來說,工具組件

12、的路徑是在開發工具目錄中配置的。1.2.1.2 創建工程文件單擊 Project -New.-Vision Project 菜單項,Vision 3 將打開一個標準框,輸入希望新建工程的名字即可創建一個新的工程,建議對每個新建工程使用的文件夾。例如,這里先建立一個新的文件夾,然后選擇這個文件夾作為新建工程的目錄,輸入新建工程的名字 Project1,Vision 將會創建一個以 Project1.UV2 為名字的新工程文件,它包含了一個缺省的目標(target)和文件組名。這些內容在 Project Workspace-Files 中可以看到。1.2.1.3 選擇設備在創建一個新的工程時,Vi

13、sion 要求為這個工程選擇一款 CPU。選擇設備框顯示了 Vision 的設備數據庫,只需要選擇用戶所需的微器即可。例如,選擇 Philips LPC2106微器,這個選擇設置了 LPC2106 設備的必要工具選項、簡化了工具的配置。圖 1.6 選擇設備注意:當創建一個新的工程時,Vision 會自動為所選擇的 CPU 添加合適的啟動代碼。對于一些設備而言,Vision 需要用戶手動地輸入額外的參數。請仔細閱讀這個框右邊的信息,因為它可能包含所選設備的額外配置要求。7ARM 開發培訓班實驗指導 V3.0創建源文件以后,就可以將這個文件添加到工程中。Vision 提供了幾種方法將源文件添加到工

14、程中。例如, 在 Project Workspace -Files 頁的文件組上點擊鼠標右鍵,然后在彈出的菜單中選擇 Add Files 菜單項,這時將打開標準的文件c 文件即完成源文件的添加。框,選擇我們創建的 asm 或1.2.2 編譯、工程1.2.2.1 設置目標硬件的工具選項Vision 可以設置目標硬件的選項。通過工具欄按鈕或 Project - Options for Target 菜單項打開 Options for Target框,在 Target 頁中設置目標硬件及所選 CPU 片上組件的參數。下圖是 LPC2106 的一些參數設置。圖 1.7 設置目標硬件下表描述了 Targ

15、et框的選項:框項描述設備的晶振(XTAL)頻率。大多數基于 ARM 的微器都使用片上 PLLXtal產生 CPU 時鐘。所以,一般情況下 CPU 的時鐘與 XTAL 的頻率是不同的。Read/Only Memory AreaRead/WriteMemory Areas配置片內、片外的 ROM 區地址以及大小指定目標硬件的片內和片外的 RAM 區地址以及大小Code Generation 旋轉產生 ARM code 還是 Thumb code8ARM 開發培訓班實驗指導 V3.01.2.2.2 增加連接文件對于 GNU 和 ARM ADS/RealView 工具鏈來說器的配置是通過器文件實文件

16、 在文件現的。這個文件指定了 ARM 目標硬件的配置。預配置的器夾.ARMGNU 或.ARMADS 中。 為了與目標硬件相匹配,用戶可能會修改器文件,所以工程中的那個文件是預配置的連接文件的一個副本。這個文件可以通過 Project- Options for Target框的 Linker 頁添加到工程中。圖 1.8 設置 linker 選項對于復雜的 memory layout 分配方式,應該采用 scatter file, 對于簡單的工程,直接指定 R/O和 R/W 的基地址即可。1.2.2.3 編譯一般來說,在新建一個應用程序的時候 Options -Target 頁中的所有的工具和屬性

17、都要配置。單擊 Build Target 工具欄按鈕將編譯所有的源文件,應用程序。當編譯有語法錯誤的應用程序時,Vision 將在 Output Window -Build 窗口中顯示錯誤和警告信息。單擊這些信息行,Vision 將會到相應的源代碼處。9ARM 開發培訓班實驗指導 V3.0圖 1.9 編譯結果產生應用程序以后就可開始調試了, 點擊 Debug-Start/Stop debug源文件編譯session (Ctrl F5)即進入調試模式。1.2.3 程序調試進入調試模式之后,可以選擇單步、全速運行。可以設置斷點等常規的調試。所有有關調試的操作都可以在 Debug 菜單下找到。如下圖

18、所示為進入調試模式下時的界面。圖 1.10 simulator 調試常用的調試:lll單步、全速運行程序F10 單步運行, F5 全速運行。對于各種模式下的寄存器,可以在左邊的窗口查看10ARM 開發培訓班實驗指導 V3.0l對于 ARM 的 7 種模式下的寄存器,都可以查看。當處理器處于任何一種模式時,可以查看 Current 中所有的寄存器的值,處理器從一種狀態改變到另外一種狀態時,該模式下物理上設置斷點的寄存器將會被用到。llll選中需要設置斷點的行,然后 F9 即在改行設置斷點,程序運行到此處就停止運行。查看變量的實時值對于 local 的變量,打開 View-Watch&Call S

19、tack Window,在此 Window 中,選擇Locals tab 就可以查看所有的 local 變量。對于全局變量,選擇 Watch window 中的 Watch #1, 加入你需要查看的變量就可以l查的全局變量的值。ll外設模塊因為我們選擇的是 Simulator,所以可以通過 RealView MDK 強大的功能來調試程序。打開 Peripheral-GPIO 可以看到每一個 GPIO pin 的實時狀態信息。全速運行程序后,GPIO 的狀態就開始按照程序的開始變化。1.2.4 工程選項頁概述在 Project - Options框頁可以設置所有的工具選項。所有的選項都保存在 V

20、ision工程文件中。在 Project Workspace -Files 窗口點擊鼠標右鍵,在彈出的菜單中可以設置文件夾或單個文件的不同選項,這些選項在文件和文件夾選項中解釋過。在這種情況下,可能有附加的屬性頁及僅與所選項相關的框頁。下表概述了各種選項框頁框的功能。描述Device Target Output Listing CAsm從 Vision 的設備數據庫中選擇選擇設備。為應用程序指定硬件環境。定義工具鏈的輸出文件,在編譯完成后運行用戶程序。指定工具鏈產生的所有列表文件。設置 C 編譯器的工具選項,例如代碼優化和變量分配。設置匯編器的工具選項,如宏處理。設置器的相關選項。一般來說,器

21、的設置需要配置目標系統的Linker分配。設置器定義器類型和段的位置。DebugVision 調試器的設置。Utilities配置 Flash 編程實用工具。11ARM 開發培訓班實驗指導 V3.0實驗二、ARM 指令集2.1 ARM 匯編指令 1【實驗內容】建立一個匯編工程,要求完成兩個變量求和,編譯通過后,調試結果。【實驗目的】會使用 Vision3 IDE for ARM 開發環境及 ARM 軟件模擬器; 通過實驗掌握簡單 ARM 匯編指令的使用方法。【實驗步驟】1、新建工程首先在就業班 ARM 課件ARM 實驗第 1 天目錄下建立文件夾命名為 asm-00,運行 Vision3 IDE

22、 集成開發環境,選擇菜單項 Project New Vision Project,系統彈出一個框,按照圖2-1所示輸入相關內容。點擊“保存”按鈕,將創建一個新工程asm00.Uv2。圖 2-12、為工程選擇CPU新建工程后,要為工程選擇 CPU,如圖 2.2 所示,在此選擇 SAMSUNG 的 S3C2410X12ARM 開發培訓班實驗指導 V3.0圖 2-23、添加啟動代碼在圖 2-3 中點“確定”后,會彈出一個示。框,問是否要添加啟動代碼。如圖 2.3 所圖 2-3由于本實驗是簡單的匯編實驗,因此不需要啟動代碼。選擇否。4、選擇開發工具要為工程選擇開發工具,在 Project - Mana

23、ge - Components,Environment and Books- Folder/Extensions框的 Folder/Extensions 頁內選擇開發工具,如圖 2-4 所示。13ARM 開發培訓班實驗指導 V3.0圖 2-4 選擇開發工具從圖中可以看到,有三個開發工具可選,在此選擇 RealView Compiler。5、建立源文件點擊菜單項 File - New,系統彈出一個新的、沒有標題的文本編輯窗,輸入光標位于窗口中第一行,按照實驗參考程序編輯輸入源文件代碼。編輯,保存文件 asm1_a.s。6、添加源文件單擊工程管理窗口中的相應右鍵菜單命令,選擇 Add Files

24、to,會彈出文件選擇對話框,在工程目錄下選擇剛才建立的源文件 asm1_a.s。如圖 2-5 所示。14ARM 開發培訓班實驗指導 V3.0圖 2-57、工程配置選擇菜單項 Project-Option for Target,將彈出工程設置框,如圖 2-6 所示。框會因所選開發工具的不同而不同,在此僅對 Target 選項頁、Linker 選項頁及 Debug選項頁進行配置。Target 選項頁的配置如圖 2-6;Linker 選項頁的配置如圖 2-7;Debug 選項頁的配置如圖 2-8。需要注意,后面的實驗中在 Debug 選項頁內需要一個初始化文件:DebugINRam.ini。此.IN

25、I 文件用于設置生成的.AXF 文件到目標中的位置,以及調試前的寄存器、內存的初始化等配置操作。它是由調試函數及調試命令組成調試命令文件。15ARM 開發培訓班實驗指導 V3.0圖 2-6 基本配置 Target圖 2-7 基本配置 Linker16ARM 開發培訓班實驗指導 V3.0圖 2-8 基本配置 Debug8、生成目標代碼選擇菜單項 Project - Build target 或快捷鍵 F7,生成目標代碼。在此過程中,若有錯誤,則進行修改,直至無錯誤。若無錯誤,則可進行9、調試的調試。選擇菜單項 Debug - Start/Stop Debug Session 或快捷鍵 Ctrl+

26、F5,調試模試用版,式。若沒有目標硬件,可以用 Vision 3 IDE 中的軟件器。如果使用MDK則在進入調試模式前,會有如下框彈出,如圖 2-9 所示。圖 2-9 在軟件確定后即可調試了,做如下調試工作: 參看“asm-00”目錄下的代碼。下調試程序17ARM 開發培訓班實驗指導 V3.0圖 2.10 ARM 匯編練習-編譯,。targetOptionsTarget tabfor“Target1”中設置如下:Linker tab18ARM 開發培訓班實驗指導 V3.0去掉 “use0x4000000。memorylayoutfromtargetdialog”,R/OBase填0x0,R/W

27、Base填-進入調試模式,開始調試,并注意查看寄存器的值,檢查計算結果是否正確。注意:匯編語言的源語句行的一般格式是:label instruction|directive|pseudo-instruction ;comment即使沒有標號,指令、偽指令和命令前面也必須有一個空白,例如一個空格或制表符。源語句行的所有三部分都是可選的。可以使用空行來使代碼更具可讀性。對以上代碼的解釋:段和 AREA 命令段是最低要求。名的、不可分割的代碼或數據序列。一個代碼段是個應用程序的匯編或編譯的輸出可以包括:一個或多個代碼段。它們通常是只讀段。一個或多個數據段。它們通常是讀寫段。它們可以是零初始化的 (Z

28、I)。程序依照段位置規則,將每個段放在一個程序映像中。在源文件中相鄰的段,不一定要在應用程序映像中相鄰。在源文件中,用 AREA 命令來標記一個段的開始。該命令對屬性放在名稱后面,之間用逗號分隔。ENTRY 命令ENTRY 命令標記要執行的第一個指令。在包含 C 代碼的應用命名并設置其屬性。,在 C 庫的初始化代碼中也包含一個點。初始化代碼和異常處理程序也包口點。19ARM 開發培訓班實驗指導 V3.0END 命令此命令指示匯編程序停止處理這個源文件。每個匯編語言源模塊必須以一行單獨的END 命令結束。2.2 ARM 匯編指令 2【實驗內容】使用 add/sub/lsl/lsr/and/orr

29、 等指令,完成基本算術/邏輯運算。【實驗目的】會使用 Vision3 IDE for ARM 開發環境及 ARM 軟件模擬器; 通過實驗掌握簡單 ARM 匯編指令的使用方法。【實驗步驟】參看“asm-01”目錄下的代碼按照實驗一的方法,新建一個 project,名字為 asm01;添加 asm01.s 文件到項目中。幫助:LDR 指令:LDR 指令用于從內存中將一個 32 位的字到目標寄存器。LDR 指令根據所確定的地址模式將一個 32 位字到指令中的目標寄存器。如果指令中的尋址方式確定的地址不是字對,則讀出的數值要進行循環右移。所移位數為尋址方式確定的地址 bits108 的倍,也就是說處理

30、器將取到的數值作為字的最低位處理。如果設置了 L 位,則進行裝載,否則進行。如果設置了 P 位,則使用預先變址尋址,否則使用過后變址尋址。如果設置了 U 位,則給出的偏移量被加到基址寄存器上,否則從中減去偏移量。如果設置了 B 位,傳送內存的一個字節,否則傳送一個字。這在助記符末尾添加后綴“B”,如 MOV r7,r5 變為 MOVB r7,r5。W 位的解釋依賴于使用的地址模式。l對于預先變址尋址,設置 W 位強制把它用做地址轉換的最終地址寫回基址寄存器中(例如,傳送的副作用是 Rn:= Rn +/-offset。這在匯編器中表示為給指令加上后綴“!”。)。對于過后變址尋址,地址總是寫回,設

31、置 W 位指示在進行傳送之前強制地址轉換。這在匯編器中表示為給指令加上后綴“T”。ll當 PC 作為 LDR 的目的寄存器時,從序將跳轉到目標地址開始執行。器取得的數據將被當作目標地址值,程指令的語法格式 LDR ,它確定了指令編碼中的 I、P、U、W、Rn 和位。所有的尋址模式中,都會確定一個基址寄存器 Rn。指令舉例 LDR r1,r0,#0x12;將 r0+12 地址處的數據讀出,保存到 r1 中(r0 的值不變)20ARM 開發培訓班實驗指導 V3.0STR 指令:STR 指令用于將一個 32 位的字數據寫入到指令中指定的內存單元。指令的語法格式指令舉例LDR/STR 指令用于對內存變

32、量的、內存緩沖區數據的、查表、部件的控制操作等等,若使用 LDR 指令加載數據到 PC 寄存器,則實現程序跳轉功能,這樣也就實現了程序散轉。變量GPIO 設置程序散轉2.3 ARM 匯編指令 3【實驗內容】建立一個匯編工程,要求通過 ARM 匯編指令在各個處理器模式下切換并觀察各個模式下處理器的區別。編譯通過后,調試結果。【實驗目的】21MOV r2,r2,LSL #2;功能號乘以 4,以便查表LDR PC,PC,r2;查表取得對應功能子程序地址,并跳轉NOPFUNTAB DCD FUNSUB0DCD FUNSUB1 DCD FUNSUB2GPIOBASE EQU 0xe0028000;定義G

33、PIO 寄存器的基地址LDRR0,=GPIOBASELDRR1,=0x00ffff00;將設置值放入寄存器STRR1,R0,#0x0C;IODIR=0x00ffff00,IOSET 的地址為 0xE0028004NumCount EQU 0x40003000;定義變量NumCountLDR R0,=NumCount;使用LDR 偽指令裝載NumCount 的地址到R0LDR R1,R0;取出變量值ADD R1,R1,1;NumCount=NumCount+1STR R1,R0;保存變量STR ,LDR r1,r0;將 r0 地址處的數據讀出,保存到 r1 中(零偏移)LDR r1,r0,r2;

34、將 r0+r2 地址的數據讀出,保存到 r1 中(r0 的值不變)LDR r1,r0,r2,LSL #2 ;將 r0+r24 地址處的數據讀出,保存到 r1 中(r0,r2 的值不變)LDR Rd,label;label 為程序標號,label 必須是當前指令的4KB 范圍內LDR Rd,Rn,0x04;Rn 的值用作傳輸數據的地址。在數據傳送后,將偏移量 0x04 與Rn 相加,結果寫回到 Rn 中。Rn 不是r15ARM 開發培訓班實驗指導 V3.0通過實驗掌握學會使用 MSR/MRS 指令實現 AMR 處理器工作模式的切換,觀察不同模式下的寄存器,加深對 CPU 結構的理解。【實驗步驟】

35、參看“asm-02”目錄下的代碼按照實驗一的方法,新建一個 project,名字為 armmode 工程;添加 armmode.s 文件到項目中。【實驗原理】ARM 處理器共有 7 種工作模式ARM 處理器的工作模式除用戶模式外的其他 6 種處理器模式稱為模式(Privileged Modes)。在這些模式下,程序可以所有的系統,也可以任意地進行處理器模式切換。其中的 5 種又稱為異常模式,分別為:FIQ(Fast Interrupt reQuest); IRQ(Interrupt request);管理(Supervisor);中止(Abort);未定義(Undefined)。處理器模式可以

36、通過軟件進行切換,也可以通過外部中斷或異常處理過程進行切換。大多數的用戶程序運行在用戶模式下。當處理器工作在用戶模式時,應用程序不能夠訪問受操保護的一些系統,應用程序也不能直接進行處理器模式切換。當需要進行處理器模式切換時,應用程序可以產生異常處理,在異常處理過程中進行處理器模式切換。這種體系結構可以使操系統的使用。當應用程序發生異常中斷時,處理器進入相應的異常模式。在每一種異常模式中都有一寄存器以供相應的異常處理程序使用,這樣就可以保證在進入異常模式時用戶模式下組的寄存器(保存程序運行狀態)不被破壞。狀態操作指令ARM 指令集提供了兩條指令, 可直接程序狀態寄存器( PSR , Progra

37、m State22處理器工作模式簡 寫描述用戶模式(User)usr正常程序執行模式,大部分任務執行在這種模式下快速中斷模式(FIQ)fiq當一個高優先級(fast)中斷產生時將會進入這種模式,一般用于高速數據傳輸和通道處理外部中斷模式(IRQ)irq當一個低優先級(normal)中斷產生時將會進入這種模式, 一般用于通常的中斷處理模式(Supervisor)svc當復位或軟中斷指令執行時進入這種模式,是一種供操作系統使用的保護模式數據中止模式(Abort)abt當存取異常時將會進入這種模式,用于虛擬或保護未定義指令中止模式(Undef)und當執行未定義指令時進入這種模式,有時用于通過軟件協

38、處理器硬件的工作方式系統模式(System)sys使用和 User 模式相同寄存器集的模式,用于運行級操任務ARM 開發培訓班實驗指導 V3.0Register)。MRS 指令用于把 CPSR 或 SPSR 的值傳送到一個寄存器;MSR 與之相反,把一個寄存器的內容傳送到 CPSR 或 SPSR。這兩條指令結合,可用于對 CPSR 和 SPSR 進行讀/寫操作。交換指令如表 5.5 所示。表 5.5程序狀態寄存器指令在指令語法中可看到一個稱為 fields 的項,它可以是及標志(F)的組合。(C)、擴展(X)、狀態(S)程序不能通過直接修改CPSR 中的T 位等指令完成程序狀態的切換。直接將程

39、序狀態切換到 Thumb 狀態,必須通過 BX注意MRSMRS 指令用于將程序狀態寄存器的內容傳送到通用寄存器中。當數據被移到通用寄存器以后,就可以對數據進行處理。(2)指令的語法格式MSRMSR 指令用于將通用寄存器中的內容或立即數傳送到程序狀態寄存器中。因此指令的編碼格式也有兩種格式。(2)指令的語法格式實驗三3.1 LDR/STM 指令尋址實驗【實驗內容】熟悉開發環境的使用并完成一塊【實驗目的】區的。完成分支程序設計。通過實驗掌握使用 LDM/STM、B 等指令,完成較為復雜的學習使用條件碼,加強對 CPSR 的認識。【實驗步驟】參看“asm-03”目錄下的代碼區和程序分支。按照實驗一的

40、方法,新建一個 project,名字為 asm01;添加 asm01.s 文件到項目中。23MSR CPSR_, MSR CPSR_, MSR SPSR_, MSR SPSR_,MRS ,CPSR MRS ,SPSR指令作用操作MRS把程序狀態寄存器的值送到一個通用寄存器Rd=SPRMSR把通用寄存器的值送到程序狀態寄存器或把一個立即數送到程序狀態字PSRfield=Rm 或PSRfield=immediateARM 開發培訓班實驗指導 V3.0注意:link 設置和實驗 2.1 不同,是 asm01.s 中的代碼段屬性為 readwrite,所以R/O Base(-entry 后的值)和 R

41、/W Base 相同,且在 rw 區域。areastart,code,readwriteLinker tab因為 entry0x30000000所以需要在調試時把 pc 的初始值指向這個位置。使用 DebugInRam.ini 來實現。DebugInRam.ini 內容如下:24ARM 開發培訓班實驗指導 V3.03.2 ARM 匯編子函數調用【實驗內容】建立一個匯編工程,要求完成兩個變量求和,求差,以及返回值。編譯通過后,調試結果。【實驗目的】通過實驗掌握簡【實驗步驟】函數調用。參看“asm-04”目錄下的代碼按照實驗一的方法,新建一個 project,名字為 asm02;添加 asm02.

42、s 文件到項目中。編譯程序,使用 debugger 調試程序。觀察程序運行時寄存器的狀態。單步執行代碼,觀察在子程序調用時,r14(LR)的變化。3.3Thumb 匯編指令練習【實驗內容】建立一個匯編工程,要求完成兩個變量求和,兩個變量相加的子程序用 Thumb 指令編寫。編譯通過后,調試結果。【實驗目的】通過實驗掌握簡單的 Thumb 指令及 ARM、Thumb 交互。【實驗步驟】參看“ThumbTest”目錄下的代碼按照實驗一的方法,新建一個 project,名字為 Thumb_test 工程;添加 Thumb_code.s文件到項目中。3.4 利用 ARM 匯編實現開發板 LED 燈【實

43、驗內容】建立一個簡單的匯編語言代碼,完成 LED 的【實驗目的】。編譯通過后,調試結果。學會使用 realview MDK 編寫簡單的匯編語言程序【實驗步驟】參看“led_asm”目錄下的代碼設備。1、按照實驗一的方法,新建一個 project,名字為 led_asm 工程;添加 led.s 文件到25ARM 開發培訓班實驗指導 V3.0項目中。2、按照實驗一的方法,編譯,代碼到開發板運行,觀察現象。3、修改代碼,實現的邏輯。4、燒寫你的代碼到開發板后,可能出現邏輯和你想要的不一致。思考?(在于:默認情況下,處理器是打開看門狗的。解決方法:添加指令關閉看門狗)實驗四4.1 簡單 C 語言程序實

44、驗【實驗內容】建立一個簡單的 C 語言代碼,完成延時功能。編譯通過后,調試結果。【實驗目的】學會使用 realview MDK 編寫簡單的 C 語言【實驗步驟】參看“CTest1”目錄下的代碼調試運行。按照實驗一的方法,新建一個 project,名字為 C_test1 工程;添加 C_CALL.C 文件到項目中。4.2 匯編與 C 語言的相【實驗內容】用實驗使用匯編完成一個函數,通過 C 語言調用該函數。【實驗目的】學會使用 realview MDK 編寫匯編和 C 語言相件。【實驗步驟】參看“explasm”目錄下的代碼用的程序,學會使用 sct 連接文按照實驗一的方法,新建一個 proje

45、ct,名字為 C_test1 工程;添加 randtest.c、startup.s、addsubb.s 文件到項目中。注意在 linker 下選擇.explasm.sct 文件26ARM 開發培訓班實驗指導 V3.04.3 C 語言中內聯匯編程序實驗【實驗內容】建立一個簡單的 C 語言代碼,加入內聯匯編代碼。編譯通過后,調試結果。【實驗目的】學會在 C 語言【實驗步驟】內聯匯編語言。參看“CTest2”目錄下的代碼按照實驗一的方法,新建一個project,名字為CTest2 工程。添加CCode.c startup.s文件到項目中。使用 CTest2.sct文件。4.4 C 語言中嵌入型匯編程

46、序實驗【實驗內容】建立一個簡單的 C 語言代碼,加入嵌入型匯編代碼。編譯通過后,調試結果。【實驗目的】27ARM 開發培訓班實驗指導 V3.0學會在 C 語言【實驗步驟】加入嵌入型匯編代碼。參看“CTest3”目錄下的代碼按照實驗一的方法,新建一個project,名字為CTest3 工程。添加CCode.c startup.s文件到項目中。使用 CTest3.sct文件。4.5 SWI 軟中斷實驗【實驗內容】參照課件 SWI 示例,完成一個完整的工程,可以實現 SWI 的調用過程。【實驗目的】理解 SWI 的實現過程。【實驗步驟】1、理解課件中“軟中斷(SWI)處理示例”,2、編寫程序,在 s

47、wi 處理過程中,完成軟中斷號的獲取。(參考實驗代碼 swi_test)4.6 綜合編程實驗【實驗內容】完成一個完整的工程,要求包含啟動代碼、匯編函數和 C 文件,而且 C 文件包含 AMR函數和 Thumb 函數,并且可以相【實驗目的】用。學會使用 realview MDK 編寫綜合代碼。【實驗步驟】參看“interwork”目錄下的代碼按照實驗一的方法,新建一個 project,名字為 interwork 工程;添加 arm.c、thumb.c、addsubb.s、S3C2410A.s 文件到項目中。讀懂程序的啟動過程及調用關系。注意:下圖說明了 arm.c 和 thumb.c 是如何被分布編譯為 ARM 代碼和 Thumb 代碼的28ARM 開發培訓班實驗指導 V3.0注意:Thumb Mode 選項的選擇情況實驗五、I/O 及串口通信編程實驗【實驗內容】編寫程序,實驗平臺的發光二極管 D9、D10、D11、D12 使它們有規律的點亮和熄滅。并且通過串口打印提示信息。代碼分別在【實驗目的】器下、和脫離環境運行。掌握 S3C2410I/O器、uart器、及系統初始化相關部分的配置方法;掌握調整 fputc 庫使其適應目標硬件;掌握如何通過 realview MDK 環境將代碼燒寫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論