ARM SDT 2.5 開(kāi)發(fā)環(huán)境
一、 實(shí)驗(yàn)?zāi)康?br>熟悉ARM SDT 2.5 開(kāi)發(fā)環(huán)境,學(xué)會(huì)ARM 并行口仿真器的使用。使用SDT 編譯,
下載,調(diào)試,并跟蹤一段已有的程序。了解嵌入式開(kāi)發(fā)的基本思想和過(guò)程。
二、 實(shí)驗(yàn)內(nèi)容
本次實(shí)驗(yàn)使用ARM SDT 2.5 集成開(kāi)發(fā)環(huán)境。新建一個(gè)基于操作系統(tǒng)的工程文件,并編
譯這個(gè)工程。學(xué)習(xí)ARM 并行口仿真器的使用和開(kāi)發(fā)環(huán)境的設(shè)置。下載已經(jīng)編譯好的文件到
嵌入式控制器中運(yùn)行。學(xué)會(huì)在程序中設(shè)置斷點(diǎn),觀察系統(tǒng)內(nèi)存和變量,為調(diào)試應(yīng)用程序打下
基礎(chǔ)。
三、 預(yù)備知識(shí)
C 語(yǔ)言的基礎(chǔ)知識(shí)、程序調(diào)試的基礎(chǔ)知識(shí)和方法
四、 實(shí)驗(yàn)設(shè)備及工具(包括軟件調(diào)試工具)
硬件:ARM 嵌入式開(kāi)發(fā)板、用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentumn100 以
上
軟件:PC 機(jī)操作系統(tǒng)win98、ARM SDT 2.51 集成開(kāi)發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序
五、 實(shí)驗(yàn)步驟
1、運(yùn)行ARM SDT 2.5 集成開(kāi)發(fā)環(huán)境(ARM Project Manager)。選擇File | New
菜單,在對(duì)話框中選擇Project,并在如圖1-1 所示,新建一個(gè)工程文件(work1.apj)
2、在新建的工程中,如圖1-2 所示,選中工程樹(shù)的“根部”。使用菜單Project | Tool
Configuration for work1.apj | <asm> = armasm | Set,對(duì)整個(gè)工程的匯編進(jìn)行設(shè)置。
3、因?yàn)殚_(kāi)發(fā)板上的嵌入式處理器ARM7TDMI 沒(méi)有浮點(diǎn)處理器,所以,如圖1-3 所示,
在彈出的對(duì)話框中設(shè)置Floating Point Processor 為none。保持其它的設(shè)置不變。
4、把\Inc、\Src、\Lib、\Startup、\Ucos-II 等目錄復(fù)制到work1 的目錄下。如圖1-4 所示,
選中工程樹(shù)中Debug 子樹(shù)的Sources 選項(xiàng)。通過(guò)菜單Project | Add Files to Sources,把
\SRC\main.c 和\STARTUP\目錄下的*.s 文件加入工程的源文件中。
5、選中工程樹(shù)中Debug 子樹(shù)的IncludedFiles 選項(xiàng)。通過(guò)菜單Project | Add Files to
IncludedFiles,把\work1 目錄下(包括子目錄)的所有*.h 文件都加入工程中。
6、選中工程樹(shù)中Debug 子樹(shù)的Libraries 選項(xiàng)。通過(guò)菜單Project | Add Files to Libraries,
把\Lib 目錄下的兩個(gè)*.alf 文件都加入工程中。這兩個(gè)文件是操作系統(tǒng)的庫(kù)文件,包含了所有
的API 函數(shù)庫(kù)。
7、選中工程樹(shù)的“根部”,通過(guò)菜單Project | Tool Configuration for work1.apj | asmlink |
Set,對(duì)整個(gè)工程的連接方式進(jìn)行設(shè)置。
8、在彈出的對(duì)話框中,選中Entry Base 選項(xiàng)卡,如圖1-5 所示,設(shè)置連接的Read-Only
(只讀)和Read-Write(讀寫(xiě))地址。地址0xC000000 是開(kāi)發(fā)板上SDRAM 的真實(shí)地址,
是由系統(tǒng)的硬件決定的;0xC200000 指的是系統(tǒng)可讀寫(xiě)的內(nèi)存的地址。也就是說(shuō),在
0xC000000—0xC1ffffff 之間是只讀區(qū)域,存放程序的代碼段,在0xC200000 開(kāi)始是程序的
數(shù)據(jù)段。
9、選擇Linker Configuration 的ImageLayout 選項(xiàng)卡,設(shè)置程序的入口
模塊。指定在生成的代碼中,程序是從44binit.s 開(kāi)始運(yùn)行的。
10、選擇Project | Edit Project Templete 菜單,使用New 按鈕,為編譯器新建一個(gè)步驟。
取名為RomImage。
11、按照如圖1-8 的內(nèi)容設(shè)置RomImage 的內(nèi)容。使編譯器編譯的時(shí)候可以生成
system.bin 文件,這就是系統(tǒng)的啟動(dòng)文件。
12、回到Project Templete Editor 對(duì)話框中,點(diǎn)擊Edit Detail 按鈕,在彈出的對(duì)話框中可
以重新命名模板。
13、選中工程樹(shù)中DebugRel 子樹(shù),用Delete 鍵刪除。
提示:
在系統(tǒng)工程樹(shù)中Debug 子樹(shù)下面生成的是應(yīng)用程序的調(diào)試版本,在生成的目標(biāo)代
碼中,包含了系統(tǒng)的調(diào)試信息。Release 子樹(shù)是應(yīng)用程序的發(fā)行版本,生成的代碼中不
包括調(diào)試信息,而且編譯器還針對(duì)速度和代碼的大小進(jìn)行優(yōu)化。DebugRel 子樹(shù)是一個(gè)
折衷版本,通常用不到,所以,在這里刪除。
14、至此,工程文件設(shè)置完畢。因?yàn)樵O(shè)置過(guò)程比較繁瑣,可以保存此工程,下次新建項(xiàng)
目的時(shí)候復(fù)制即可。
提示:可以使用File | Save as Templete 菜單把當(dāng)前工程的設(shè)置保存為模板,比如,
armRom.apj 文件。把此文件復(fù)制到ARM SDT 編譯器的\ARM251\Template 目錄下,以后創(chuàng)
建工程的時(shí)候,就可以直接選擇使用此模板了。模板文件也是一個(gè)工程文件(*.apj),但是,
模板文件中不包括工程中文件的信息,只有編譯器環(huán)境的設(shè)置。
15、選中工程樹(shù)中Debug 子樹(shù),通過(guò)Project | Build work1.apj “Debug”菜單(或者工具
欄中的相應(yīng)按鈕)編譯整個(gè)工程。
16、把ARM 的JTAG 仿真器連接到PC 機(jī)的并行口和開(kāi)發(fā)板上,打開(kāi)開(kāi)發(fā)板的電源,
運(yùn)行仿真器的驅(qū)動(dòng)程序armJTAG.exe。
17、使用Project | Debug work1.apj “Debug”菜單(或者工具欄中的相應(yīng)按鈕)啟動(dòng)ARM
Debugger 軟件調(diào)試程序。
18、在ARM Debugger 中,通過(guò)Options | Configure Debugger 菜單設(shè)置仿真器。如圖1-9
所示,在彈出的對(duì)話框中,設(shè)置Target Environment 為Remote_A
19、單擊Configure 按鈕,按照如圖1-10 所示,設(shè)置仿真器,添加本機(jī)的IP 地址。
20、設(shè)置完成以后,ARM Debbuger 開(kāi)始通過(guò)仿真器裝載程序。如圖1-11 所示。
圖 1-11
21、裝載完畢以后,通過(guò)Execute | Go 菜單(或者工具欄中的相應(yīng)按鈕)運(yùn)行程序。
22、程序運(yùn)行的時(shí)候,可以使用Execute | Stop 菜單(或者工具欄中的相應(yīng)按鈕)暫停
運(yùn)行程序。如圖1-12 所示,在Execute 窗口中將顯示出程序暫停的位置。
圖 1-12
23、通過(guò)Execute | Step 菜單(或者工具欄中的相應(yīng)按鈕)可以單步運(yùn)行程序。也可以
使用Step In、Step Out 菜單命令進(jìn)入或者跳出函數(shù)的調(diào)用。
24、在程序停止運(yùn)行的時(shí)候,選擇View | Source Files 菜單命令,可以打開(kāi)如圖1-13 所示的源程序列表窗口,雙擊列表中的文件名可以查看相應(yīng)的源文件。
25、在源文件列表中打開(kāi)Main.c 文件。選擇源文件中的某一行,右擊鼠標(biāo),如圖1-14
所示,用Toggle Breakpoint 快捷菜單命令可以設(shè)置斷點(diǎn),使程序運(yùn)行到這里停下來(lái)。
26、使用在View 菜單下的Registers、Variables 和Memory 命令可以查看工作寄存器或
者內(nèi)存變量。讀者可以逐一的嘗試,為以后調(diào)試程序打下基礎(chǔ)。
評(píng)論