版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、第1章嵌入式系統(tǒng)開發(fā)環(huán)境簡介1.11.1ARM SDT 2.5 開發(fā)環(huán)境簡介一、實驗目的ARM SDT 2.5 ARM SDT 調(diào)試并跟蹤一段已有的程序,了解嵌入式開發(fā)的基本思想和過程。二、實驗內(nèi)容ARM SDT 2.5 程文件。學習 ARM 并行口仿真器的使用和開發(fā)環(huán)境的設置。下載已經(jīng)編譯好的文件到嵌入式控制器中運行。學會在程序中設置斷點,觀察系統(tǒng)內(nèi)存和變量,為調(diào)試應用程序打下基礎。三、預備知識C 語言的基礎知識、程序調(diào)試的基礎知識和方法。四、實驗設備及工具(包括軟件調(diào)試工具)硬件:ARM 嵌入式開發(fā)平臺、用于 ARM7TDMI JTAG 仿真器、Pentium100 以上PC 機。軟件:P
2、C 機操作系統(tǒng) Windows 98、Windows 2000 或 Windows XP,ARM SDT 2.51 或ADS 1.2 集成開發(fā)環(huán)境,仿真器驅(qū)動程序、超級終端通信程序。五、實驗步驟建立工程文件ARM SDT 2.5 (ARM Project File|New Project New Project 對話框,如圖1-1 為工程模板類型,這里選擇ARM Executable PAGE 22 PAGE 22嵌入式系統(tǒng)設計與實例開發(fā)實驗教材 PAGE 21 PAGE 211 章嵌入式系統(tǒng)開發(fā)環(huán)境簡介徑。單擊 OK 按鈕后新建一個工程文件。在新建的工程中,如圖1-2 所示,選中工程樹的“根
3、部”。使用命令Configuration for work1.apj| = armasm|Set,對整個工程的匯編進行設置。圖1-1新建一個工程文件圖1-2對整個工程的匯編進行設置ARM7TDMI 1-3 Floating Point Processor none,并保持其他的設置不變。Project|Tool Configuration for work1.apj|asmlink|Set命令,對整個工程的連接方式進行設置。在彈出的對話框中,打開 Entry and Base 選項卡,如圖 1-4 所示,設置連接的只讀)Read-Write(讀寫)0 x0c080000 SDRAM 的 在 0
4、 x0c0800000 x0c1fffff 之間是只讀區(qū)域開始是程序的數(shù)據(jù)段。圖1-3設置Floating Point Processor 為none圖1-4設置連接的地址提示:用戶可以修改這兩個數(shù)值來決定程序存儲區(qū)的大小和數(shù)據(jù)存儲區(qū)的大小。但應注意SDRAM 0 x0c0000000 x0c7fffff0 x0c080000 LCD 顯示緩存區(qū)的。Linker Configuration ImageLayout 1-5 44binit.s 44binit.s 44binit.o,Init 是該匯編文件中的代碼段名字。Project|Edit Project Template Project
5、Template Editor對話框。在該對話框中可以看到一系列步驟名稱。SDT 在處理工程文件時是按這些步驟完成的, 每個步驟設定了對應的操作,以及該操作的輸入、輸出和命令行等。讀者可以選擇已有的 步Edit Compile是把.c 和.h 文件編譯成.o Link則就是把.o 文件和 .alf 文件連接生成.axf 文件的。在這些步驟中的設置建議保留默認值。但這里缺少一個從 .axf 文件生成所需的.bin文件New 1-6RomImage圖1-5設置程序的入口模塊圖1-6為編譯器新建一個步驟1-7 的內(nèi)容設置步驟RomImage 的內(nèi)容。使編譯器編譯的時候可以生成system.bin .
6、axf Imagesystem.binEpromfromelf 組件完成,命令行fromelf -nozeropad .axf -bin system.binImage Eprom 可以在設置好后的工程窗口中看到。步驟名稱和輸出位置名稱并不要求一致。提示:在文本框中輸入文字后必須單擊 Add 按鈕添加到上方列表框中,否則單擊 OK 按鈕后該設置信息丟失。選 擇 Project|Edit Variables for work1.apj Edit Variables for work1.apj對話框。列表框中是該工程的一些變量,讀者也可以選擇某個變量名,在 Value $ProjectName 下
7、的.axf文件將以此命名。這里注意一下變量config$armlink 的值,應該是-info.total#total-ro-base#0 xc080000 -rw-base#0 xc200000 armlink config$asm 的值是-fpu#none。這里需要將build_target system.bin,編1-8 所示。提示:選擇某個變量并更改其值后,必須單擊 Apply 按鈕使其生效,如果更改完畢后又選擇其他變量,則該設置將無效。圖1-7設置RomImage的內(nèi)容圖1-8設置build_target 變量DebugRelDelete 鍵刪除。提示:Debug 子樹是應用程序的調(diào)
8、試版本,在生成的目標代碼中,包含了Release DebugRel 通常用不到,所以,在這里刪除。Project Template Editor Edit Detail 按鈕,在彈出的對話框1-9 (沒有添加工程文件)復制到 SDT 安裝路徑下的 Template 目錄下,下次新建工程時可以在New Project 對話框中的Type 列表框中看到該模板,使用該模板無需重新設置工程參數(shù)。至此,工程文件設置完畢。包括對 armlink 和 armasm 的參數(shù)設置,新建生成system.bin 日后使用。同時注意上文關于操作的提示,以前多數(shù)用戶建立模板失敗的原因可能就在于操作上的失誤。SDT 實
9、驗所在目錄中的“1-開發(fā)環(huán)境實驗”下的STARTUP 目錄復制1-10 Debug 子樹的Sources Project|Add Files to Sources 命令,把STARTUP目錄下的*.S 和*.c 文件加入到工程中。圖1-9重新命名模板圖1-10加入工程的源文件選中工程樹中 Debug 子樹的 IncludedFiles 選項。通過 Project|Add Files IncludedFiles STARTUP目錄下的所有*.h 文件都加入工程中。在需要用到庫文件的工程中,選中工程樹中Debug Libraries 選項。通過Project|Add Files to Librar
10、ies 命令,把*.ALF 庫文件加入工程中。Debug Sources main.c,打開main.c LCD和串口輸出字符串“Hello world!”。int Main(int argc, char *argv)ARMTargetInit(); LCD_Init(); LCD_Cls();LCD_printf(Hello world!n); Uart_Printf(nHello world!n); while(1);LCD顯示模式為文本顯示模式/文本模式下清屏命令/向液晶屏輸出/向串口輸出讀者可以分別打開其他的源文件,了解該系統(tǒng)運行的基本知識。這個程序沒有用到操作系統(tǒng),只是簡單地說明工程
11、的開發(fā)過程,帶有操作系統(tǒng)的實驗將在“C/OS-II 在 處理器上的移植及編譯”實驗之后出現(xiàn)。進行程序的在線仿真、調(diào)試ARM Project Manager Debug 子樹,通過Project Build work1.apj“Debug”命令(或者工具欄中的相應按鈕)編譯整個工程。ARMJTAG PC UarmJTAG.exe。使用 Project|Debug work1.apj“Debug”命令(或者工具欄中的相應按鈕)ARM Debugger 軟件調(diào)試程序。在 ARM Debugger 中,通過 Options|Configure Debugger 命令設置仿真器。如圖 1-11 所示,在
12、彈出的對話框中,設置Target Environment 為 Remote_A。Configure 1-12 所示,設置仿真器。本機的IP本機的IP地址圖1-11設置仿真器圖1-12設置仿真器出現(xiàn)下面的提示信息以后,單擊“是”按鈕,ARM Debugger 1-13 所示。圖1-13裝載程序(56Execute|Go 命令(或者工具欄中的相應按鈕)運行程序。當程序運行時,可以使用 Execute|Stop 命令(或者工具欄中的相應按鈕)1-14 所示,在Execute 窗口中將顯示出程序暫停的位置。圖1-14顯示程序暫停的位置通過 Execute|Step 命令(或者工具欄中的相應按鈕)Ste
13、p InStep Out 命令進入或者跳出函數(shù)的調(diào)用。View|Source Files1-15 所示的源程序列表窗口,雙擊列表中的文件名可以查看相應的源文件。注意:查看源文件時,有時可能會出現(xiàn)看不到自己的源文件的情況,這時要將工程重新強制編譯一下。在源文件列表中打開 main.c 1-16 所示,用Toggle Breakpoint命令可以設置斷點,使程序運行到這里停下來。View Registers、Variables Memory 器或者內(nèi)存變量。讀者可以逐一地嘗試,為以后調(diào)試程序打下基礎。圖1-15查看源文件圖1-16設置斷點1.2ADS 1.2開發(fā)環(huán)境簡介一、實驗目的熟悉 ADS 1
14、.2 開發(fā)環(huán)境,學會ARM 仿真器的使用。使用 ADS 編譯、下載、調(diào)試并跟蹤一段已有的程序,了解嵌入式開發(fā)的基本思想和過程。二、實驗內(nèi)容本次實驗配置 ADS 學習 ARM 仿真器的使用和開發(fā)環(huán)境的設置。下載已經(jīng)編譯好的文件到嵌入式控制器中運行。學會在程序中設置斷點,觀察系統(tǒng)內(nèi)存和變量,為調(diào)試應用程序打下基礎。三、預備知識C 語言的基礎知識、程序調(diào)試的基礎知識和方法。四、實驗設備及工具(包括軟件調(diào)試工具)硬件:ARM 嵌入式開發(fā)平臺、用于 ARM7TDMI JTAG 仿真器、Pentium100 以上PC 機、串口線。軟件:PC 機操作系統(tǒng) Windows 98、Windows 2000 或
15、Windows XP,ARM SDT 2.51 或ADS 1.2 集成開發(fā)環(huán)境,仿真器驅(qū)動程序,超級終端通信程序。五、實驗步驟ADS集成開發(fā)環(huán)境ADS 1.2 (CodeWarrior for ARM Developer New Project 1-17 所示,新建一個工程文件。其中示Exp6.mcp。單擊Set 1-18 所示,選中Create Folder 1-17 中的Project name 1-18 這樣可以將所有與該工程相關的文件放到該工程目錄下,便于管理工程。1-17 工程模板列表中選擇ARM Executable Image ARM3000 44B0 ARM Executabl
16、e Image到 ADS1.2 Stationery 目錄中(所有的工程模板都在此目錄下。以后44B0 ARM Executable Image 可,不必每次重新配置模板。圖1-17新建工程圖1-18保存工程1-19 Debug 版本,使用 Edit|Debug Settings命令對 Debug 版本進行參數(shù)設置。圖1-19選擇版本Debug Settings 對話框中選擇Target Settings 1-20 Post-linker列表框中選擇 ARM fromELF,單擊右下角的 Apply 按鈕使其有效。圖1-20選擇Target SettingsDebug Settings ARM
17、 Linker1-21 Output Linktype 3 Simple Scattered 兩種。SimpleC Scattered 單選按鈕進行C Simple 、C 庫函數(shù),則選中Scattered 的第(6)、(7)、(9)步進行設置。Simple 1-21 Simple image 選項組中設置連接的只讀)讀寫)地址。地址0 x0c080000 SDRAM的真實地址,是由系統(tǒng)的硬件決定的;0 x0c200000 指的是系統(tǒng)可讀寫的內(nèi)存地址。也就是說, 在 0 x0c0800000 x0c1fffff 之間是只讀區(qū)域數(shù)據(jù)段。圖1-21設置連接地址范圍Scattered 1-22 C 庫
18、函數(shù)中如果使用malloc及其相關的函數(shù),需要使用系統(tǒng)的堆(Heap)空間,可以通過 scatter 文件來描述系統(tǒng) Heap 的位置。針對 44B0 開發(fā)板,把程序的入口定位在 0 xc080000,并定義 Scatter scat_ram.scf。在圖 1-22 中選中 Linktype 選項卡中的 Scattered 單選按鈕,輸入 Scatter 文件名scat_ram.scfOptions 選項卡,在Image Entry Point 0 xc0800001-22 Equivalent Command Line 文本框中直接輸入-entry 0 xc080000 -scatter s
19、cat_ram.scf 進行上述設置。提示:圖1-22通過scatter 文件設置連接地址 程序移植到 ADS 后,首先執(zhí)行用匯編語言寫的初始化代碼,包括中斷向量和內(nèi)存空間的初始化。在該段代碼中使用IMPORT _注意main前面是兩個半字下劃線) B_main進行系統(tǒng)內(nèi)部的標準C C 語言中定義的main()(注意:兩個main 都是小寫,并且在嵌入式應用中用戶在C 語言中定義的main 中不能有參數(shù)(int main(void。 不能有系統(tǒng)定義的軟中斷,在匯編語言中可以使用IMPORT_ _use_no_semihosting_swi來檢測,在 C 語言中使用#pragmaimport(_
20、use_no_semihosting_swi) /ensurenofunctionsthat usesemihosting scatter RAM_LOAD0 xc080000。RAM_LOAD 0 xc080000RAM_EXEC0 xc08000044binit.o (init, +First)* (+RO)RAM 0 x0c200000* (+RW,+ZI)HEAP +0 UNINITheap.o (+ZI)STACKS 0 xc7ff000 UNINITstack.o (+ZI)ISR_STARTADDRESS 0 xc7fff00 ;SDRAM bottomisr_address.o
21、 (+ZI)在圖 1-23 中說明了這個裝載區(qū)域的劃分。0 xc7fff00ISR _STA RT A D D R ESS0 xc7ff0000 xc7fff00ISR _STA RT A D D R ESS0 xc7ff000STA C KSH EAPRA M0 xc200000RAM_EXEC0 xc080000isr_address.c文件。STA CKS 0 xc7ff00 N IN IT 表示 C 初始化的時候, 不初始化( 清零)定位在 stack.o 中, 向低地址增長。系統(tǒng)的堆空間放在 H EA P 部分,緊接著 RA M 段。使用 U N IN IT 表示, C 初始化的時候
22、, 不初始化( 清零) 該段。 此段定位在heap.o 中, 向高地址增長。RAM 部分,從 0 xc200000地址開始,放目標文件的讀寫(RW ) 部分和 ZI 部分。R A M _EX EC 從 0 xc080000地址開始,包括了所有的目標文件的只讀部分。因為系統(tǒng) 44binit.o中定義了中斷向量和程序的起始代碼,所以,使用+first ,在連接的時候,把 init 段放在最前面。RAM_EXECAW 1.5M B 大小程序空間不能超過 1.5M B。圖1-23程序和數(shù)據(jù)裝載區(qū)域的劃分 定義retarget.c 函數(shù),重新定位標準 C 庫中stdio 的一些相關函數(shù)。主要有:stru
23、ctFILE int handle; /* Add whatever you need here*/;FILEstdout;文件的定義int fputc(int chFILE*f)/fputc函數(shù)intferror(FILE*f)/ferror函數(shù)void _sys_exit(int return_code) void _ttywrch(int ch) value_in_regsstruct統(tǒng)退出函數(shù) user_initial_stackheap(unsigned R0, unsigned SP, unsigned R2, unsignedSL)具體定義,可以參考 init/retarget.
24、co接第(6)步,在第(4)步中如果不選擇簡單的連接地址設置,則需按圖 1-24 C Debug Settings ARM C CompilerATPCS ARM/Thumb interworki 復選框,或者在命令行中添加-apcs /interwork。圖1-24設置ARM C Compiler接第(5)步,若在第(4)Debug Settings ARM Linker 1-25 所示。單擊Factory Settings 按鈕,出現(xiàn)Layout 項卡(ReleaseFactory Settings 按鈕)。在Layout Place at beginning of image 選項組中設
25、置程序的入口模塊。指定在生成的代碼中,程序44binit.s 開始運行的。Object/Symbol/44binit.o,Section 。在Debug Settings ARM fromELF1-26 所示。在Output file name框中設置輸出文件名為1-19 ReleaseEdit|Release Settings命令對 Release 版本進行參數(shù)設置。Release Settings對話框中設置Release版本的、連接地址范圍、入口模塊和輸出文件。圖1-25設置入口模塊圖1-26設置輸出文件名1-19 所示的工程窗口中,選擇Targets 1-27 DebugRelDel
26、鍵將其刪除。設置完成后,可以將該新建的空工程文件作為模板保存以便以后使用,將工程44B0 ARM Executable.mcp。然后在ADS 1.2 軟件安裝目錄下的Stationery 下新建名為 44B0 ARM Executable Image 的模板目錄,再將剛 設置完的 44B0 ARM Executable.mcp 工程模板文件存放到該目錄下即可。這樣以后新建工程的時候,如圖 1-28 44B0 ARM Executable Image為名字的模板了。提示:建議用戶直接將光盤 ADS 實驗下的 TemplateADSStationery 目錄中的 44B0 ARM Executab
27、le Image ADS 1.2 安裝目錄下的Stationery 也能在圖 1-17 開發(fā)板的參數(shù)。這個模板設置為 Scattered 版本。(2)如果用戶原來已安裝了ARM SDT 軟件,再安裝 ADS 1.2 后可能導致ARM SDT 不能正常使用,需要用戶更改系統(tǒng)環(huán)境變量: ARMINC 設置為%ARMSDTPATH% INCLUDE, ARMLIB 設置為%ARMSDTPATH%LIB ,其中%ARMSDTPATH% 指ARM SDT 的安裝目錄。圖1-27 刪除DebugRel版本圖1-28 顯示44B0 ARM 模板建立工程文件ARM ADS UP-ARM3000 Project
28、|Add Files 命令把和工程相關的所有文件加入到工程中。ADS 1.2 不能自動按文件類別對這些文件進行分Project|Create Group 命令創(chuàng)建文件組,然后分別將不同類的文件加入到不同的組,以方便管理。如圖 1-29 所示。更為簡單的辦法是,在新建工程時 ADS 建了和工程同名的目錄,在該目錄下按類別創(chuàng)建子目錄并存放工程文件。選中所有目錄拖ADS 任務條上,中途不要松開鼠標。當 ADS 窗口恢復后再拖動到工程文ADS 將以子目錄名建立同名文件組并以此對文件分類。圖1-29加入工程文件這里把ADS init 和STARTUP 兩個目錄復制到新建的工程目錄ADS 窗口恢復后再拖動
29、到工程文件窗口,并松開鼠標。這樣ADS init STARTUP 目錄名建立同名文件組并以此對文件分類。雙擊圖 1-29 中的Main.c 打開該文件,可以看到 Main()函數(shù)的內(nèi)容如下:int main(void)ARMTargetInit();開發(fā)版初始化LCD_Init();LCD_ChangeMode(DspTxtMode);轉(zhuǎn)換LCD顯示模式為文本顯示模LCD_Cls();文本模式下清屏命令LCD_printf(Helloworld!n);向液晶屏輸出Uart_Printf(nHelloworld!n);while(1);ADS 器已經(jīng)有了很大的改善,文本按語法分顏色顯示。讀者可以
30、根據(jù)喜好在 Edit Preferences 窗口中進行設置。進行程序的在線仿真、調(diào)試1-19 Debug Project|Make 命令對工程進行編譯連接。在出現(xiàn)的錯誤/警告窗口中選擇某錯誤/警告信息,ADS 會自動打開相應源文ADS 件的日期信息。ADSProject|Debug 命令啟動ADS 1.2 的調(diào)試工具。AXDOptions|Configure Target AXD1-30 即遠程調(diào)試),Configure 1-31 所示。圖1-30設置AXD 參數(shù)1-31 中單擊Select 按鈕選擇遠程連接為ARM ethernet Configure按鈕輸入仿真器的 IP 地址。如果使用
31、的是并行口仿真器,輸入 127.0.0.1 即可。圖1-31設置遠程連接等待程序裝載完畢以后,通過Execute|Go 以及Execute|Stop 命令(的相應按鈕)運行或暫停程序。程序暫停后在窗口中將顯示出其暫停的位置。通過 Execute|Step 命令(或者工具欄中的相應按鈕)Step InStep Out Run To Cursor 命令可將程序運行到光標位置。Processor Views|Sources F9 鍵設置斷點。使用在Processor View RegistersVariables Memory 作寄存器或者內(nèi)存變量。讀者可以逐一地嘗試,為以后調(diào)試程序打下基礎。ADS
32、 Debug 版本,如果選擇Release Release system.bin Flash Flash U 1.3 節(jié)中描述。1.31.3超級終端設置及BIOS 功能使用運行Windows 系統(tǒng)下的超級終端如果要求輸入?yún)^(qū)號、電話號碼等信息,可隨意輸入,出現(xiàn)如圖1-32 所示對話框時,為所建arm,可以為其選一個圖標。單擊“確定”按鈕。ARM PC 機串口(單擊“確定”按鈕后出現(xiàn)如圖1-33 波特率為 115200,數(shù)據(jù)位為 8,無奇偶校驗,停止位為 1,無數(shù)據(jù)流控制。單擊“確定” 按鈕完成設置。圖1-32創(chuàng)建超級終端圖1-33設置串行口PC UART0正Hello world!” 。啟動開發(fā)板,按住開發(fā)板上鍵盤的任意按鍵,使開發(fā)板進入 BIOS 1-34 所示。圖1-34系統(tǒng)的BIOS設置程序BIOS 的版本等信息。Shell Menu 最左邊字母是該功能的快捷鍵,按 PC 機鍵盤相應鍵將執(zhí)行對應功能。注意操作時保持超PC 機
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國大米蛋白粉行業(yè)發(fā)展現(xiàn)狀及前景趨勢分析報告
- 2025-2030年中國卡鉗行業(yè)未來發(fā)展趨勢及前景調(diào)研分析報告
- 2025-2030年中國互聯(lián)網(wǎng)家裝項目申請報告
- 2024-2030年點鈔機公司技術(shù)改造及擴產(chǎn)項目可行性研究報告
- 2024-2030年撰寫:中國軟交換控制設備項目風險評估報告
- 2022年9月17日內(nèi)蒙古事業(yè)單位聯(lián)考C類職業(yè)能力傾向測驗試題答案解析
- 2022-2023年浙江省寧波市南三縣六年級下冊期末語文試卷及答案(統(tǒng)編版)
- 2024年浙科版選修2歷史下冊月考試卷含答案408
- 指紋識別 課程設計
- 2022-2023年浙江省杭州市錢塘區(qū)六年級下冊期末語文試卷及答案(統(tǒng)編版)
- 廣東省廣州市2023年中考數(shù)學試題(附真題答案)
- 音樂行業(yè)商業(yè)計劃書
- 《供應商質(zhì)量會議》課件
- 高壓電纜安裝指導書
- 越劇團管理制度
- 2020山東春季高考數(shù)字媒體真題
- 任務3干鮑魚漲發(fā)
- 氣體檢測系統(tǒng)中英文對照外文翻譯文獻
- 湖北省武漢市洪山區(qū)2022-2023學年四年級上學期期末考試科學試題
- 新一代大學英語發(fā)展篇綜合教程2答案
- 公務員調(diào)任(轉(zhuǎn)任)審批表 - 陽春人才網(wǎng)
評論
0/150
提交評論