《嵌入式系統(tǒng)實(shí)驗(yàn)》由會(huì)員分享,可在線閱讀,更多相關(guān)《嵌入式系統(tǒng)實(shí)驗(yàn)(30頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級(jí),,第三級(jí),,第四級(jí),,第五級(jí),,,*,嵌入式系統(tǒng)實(shí)驗(yàn),● 交叉開發(fā)實(shí)驗(yàn),● 仿真開發(fā)實(shí)驗(yàn),,交叉開發(fā)環(huán)境,是指實(shí)現(xiàn)、編譯、鏈接、調(diào)試應(yīng)用程序代碼的環(huán)境與運(yùn)行應(yīng)用程序代碼的環(huán)境不同,分散在不同設(shè)備上。,,提供實(shí)現(xiàn)、編譯、鏈接、調(diào)試應(yīng)用程序代碼的環(huán)境的設(shè)備稱為,宿主機(jī),;,,運(yùn)行應(yīng)用程序代碼的設(shè)備稱為,目標(biāo)機(jī),。,,本實(shí)驗(yàn)中宿主機(jī)和目標(biāo)機(jī)的硬件連接,,編寫程序使用的語(yǔ)言是SIC33 C語(yǔ)言和匯編語(yǔ)言。,編程語(yǔ)言,● C語(yǔ)言,● 匯編語(yǔ)言,符合標(biāo)準(zhǔn)C語(yǔ)言的所有規(guī)范,相應(yīng)的源程序必須按照ANSI C編寫。,在C源程
2、序中可嵌入?yún)R編語(yǔ)句。,匯編語(yǔ)言語(yǔ)法見教材,,本實(shí)驗(yàn)采用Monitor方式調(diào)試,PC機(jī)的COM1口連Monitor調(diào)試器。,硬件連接,,,,實(shí)驗(yàn)板外形,長(zhǎng)度L=18.6cm ,寬度W=16cm,,J2 :5V電源接口,,POW_PSW :電源開關(guān),控制整個(gè)實(shí)驗(yàn)板的電源,,S1 ,S2:8位雙列開關(guān),,U1 :CUP芯片(S1C33209),,U2 :FLASH芯片(E28F320J3A),,U4,U5 :SRAM芯片W24L011AJ,,JP1 :MON 接口,,BYTE_MODE :FLASH的模式設(shè)置,,彈上:x8模式;按下:x16模式,,RP_SEL :FLASH復(fù)位節(jié)電控制,,彈上:節(jié)電
3、模式;按下:工作模式,,實(shí)驗(yàn)板的重要部分說明,,,Monitor接口調(diào)試步驟,,1.在斷電情況下,將微機(jī)COM1口與Monitor接口中間件串行接口相連,再將Monitor接口中間件上Monitor接口與實(shí)驗(yàn)板Monitor接口(JP1)相連,同時(shí)將實(shí)驗(yàn)板上BYTE_M(jìn)ODE以及RP_SEL兩開關(guān)均按下;,,2.Monitor 接口中間件上的debug 按扭開關(guān)為“ON”;,,3.將實(shí)驗(yàn)板上S1手撥開關(guān)中第7位撥到ON,使CPU工作使能;,,4.給實(shí)驗(yàn)板供電,打開宿主機(jī)上的調(diào)試工具wb33就可下載程序,進(jìn)行調(diào)試。,,宿主機(jī)配置,,,宿主機(jī)為一臺(tái)裝有windows操作系統(tǒng)和wb33工具包的PC機(jī)
4、,內(nèi)含S1C33 C編譯器gc33和調(diào)試器db33 。,,調(diào)試程序包括以下幾步:,,,1.編輯源程序,可用 wb33提供的編輯工具, 也可用其他的編輯工具;,,,2.當(dāng)源程序編寫完后,就可對(duì)源程序編譯、連接等處理,在此過程還要編寫相應(yīng)的make 文件,參數(shù)文件等;,,,3.當(dāng)編譯成功后,將生成后綴名為srf的可調(diào)試的程序,此程序就可下載到目標(biāo)板上進(jìn)行調(diào)試。,,下面通過一個(gè)例子來介紹整個(gè)程序的調(diào)試過程。,,本程序只是一個(gè)簡(jiǎn)單的ram測(cè)試程序,它的功能就是循環(huán)打亮指示燈。,在實(shí)驗(yàn)板上,有4個(gè)指示燈,分別對(duì)應(yīng)S2(8路開關(guān))的前4個(gè)開關(guān)??梢酝ㄟ^提高RXD, TXD 電壓來打通三極管的基
5、極,從而使連接在發(fā)射極的指示燈點(diǎn)亮。,,程序只需要向控制這些信號(hào)的端口寫為高電平,就可點(diǎn)亮指示燈。,,本程序的任務(wù)是循環(huán)點(diǎn)亮第1、2個(gè)指示燈,因此需要保持試驗(yàn)板上的對(duì)應(yīng)兩個(gè)開關(guān)打開。,,源程序有兩部分:boot.s, main.c。,,boot.s 主要作系統(tǒng)一些初始化,如設(shè)置堆棧和全局指針。,,main.c主要向端口寫高電平。,要點(diǎn)亮指示燈的兩個(gè)信號(hào):P,00,,P,01,。,,相關(guān)的寄存器如下:,,● 功能選擇寄存器,,(0x402d0 內(nèi)容形式D[0..7]):,,D[0]=0 選擇的是P,00,,D[1]=0 選擇的是P,01,,● I/O控制寄存器,,(0x402d2 內(nèi)
6、容形式D[0..7]):,,D[0]=0 P,00,為輸入,,D[0]=1 P,00,為輸出,,D[1]=0 P,01,為輸入,,D[1]=1 P,01,為輸出,,,,● I/O數(shù)據(jù)寄存器,,(0x402d1內(nèi)容形式D[0..7]):,,D[0]=0 P,00,為低電平,,D[0]=1 P,00,為高電平,,D[1]=0 P,01,為低電平,,D[1]=1 P,01,為高電平,,boot.s 程序如下:,,#define SP_INI 0x0800 ; sp is in end of 2KB internal RAM,,#define GP_INI 0x0000 ; glob
7、al pointer %r8 is 0x0,,.code,,.global BOOT ; BOOT VECTOR,,BOOT:,,xld.w %r8,SP_INI,,ld.w %sp,%r8 ; set SP,,ld.w %r8,GP_INI ; set global pointer,,xcall main ; goto main,,xjp BOOT ; infinity loop,,,main(),,{int i;,,*(volatile char *)(0x402D0)=0xf0;,,*(volatile char *)(0x402D2)=0xFF;,,*(volatile cha
8、r *)(0x402D1)=0x00;,,for(;;),,{for (i=0;i<500000;i++),,*(volatile char *)(0x402D1)=0x01;,,for (i=0;i<500000;i++),,*(volatile char *)(0x402D1)=0x02;,,},,},,main.c程序如下:,,寫好了boot.s和main.c源代碼之后,就可以使用wb33工具了:雙擊wb33圖標(biāo)啟動(dòng)wb33工具,打開work bench,并在左邊的目錄中找到源代碼所在的文件夾,打開它,選中“所有類型文件”的小圓點(diǎn),就可以看到main.c和boot.s文件。,,點(diǎn)擊正下方
9、的make edit按鍵,出現(xiàn)如左圖的界面,通過它來產(chǎn)生make文件。Make文件的后綴名為mak,文件名可以用戶自己設(shè)置,系統(tǒng)的默認(rèn)文件名是test,若要改變,可在左上方的Make file name的輸入框中,將test改為別的名字。在這個(gè)例子中,我們保留了系統(tǒng)默認(rèn)的test文件名。單擊左上方的New Make file按鍵就可以生成test.mak。生成test.mak的同時(shí),還會(huì)生成test.cm和test.cmx文件。分別選中左下方Add files框中的文件,通過點(diǎn)擊下面的Add to Make file將它們逐一加入右邊的內(nèi)容框中。完成之后就如右圖。,,這時(shí)可以關(guān)閉make fi
10、le edit界面,回到剛才的work bench。可以看到work bench左下的框中多出了三個(gè)文件:test.mak、test.cm和test.cmx文件。其中的test.cm很重要,并且在本試驗(yàn)中需要修改。通過選中左下框中的test.cm文件,并單擊下面的edit按鍵,可以打開test.cm文件進(jìn)行查看和編輯。系統(tǒng)生成的test.cm文件如下:,;Map set,,;-code 0x0080000 ; set relative code section start address,,;-data 0x0081000 ; set relativ
11、e data section start address,,;-bss 0x0000000 ; set relative bss section start address,,……,,;Library path,,-l E:\C33\lib,,檢查lib路徑和執(zhí)行路徑是否正確,如與實(shí)際情況不符需要改正。,,在本例中將程序代碼絕對(duì)定位到芯片的內(nèi)部ram 里,起始地址為:0x0000000。所以將本文件的第二行改為,,-code 0x0000000,,在此文件里也可將程序定位在外部的存儲(chǔ)器里。比如后面的兩個(gè)試驗(yàn)任務(wù)就需要把程序代碼絕對(duì)定位到芯片外部的flash里,起始地址
12、為:0x0800000。即將本文件的第二行改為,,-code 0x0800000,,,修改完畢后,保存test.cm文件。,,在左邊的文件框中選中test.mak文件,單擊右邊的make按鍵,就可以產(chǎn)生目標(biāo)文件test.srf,并產(chǎn)生一系列的相關(guān)文件:boot.ms, main.ms, boot.o,main.o, test.map,boot.ms。,,main.ms 是boot.s和 main.c 的匯編語(yǔ)言,boot.o 和main.o 是可重定位程序, test.srf 是絕對(duì)定位程序,test.map 表示程序的內(nèi)存映射情況。錯(cuò)誤信息保存在wb33.err文件中,,,單擊右下角的par
13、 gen按鍵,彈出parameter file generater窗口,設(shè)置好參數(shù)就可以單擊上方的creat par file按鍵生成參數(shù)配置文件33104_1.par。,在本例中不需對(duì)parameter file generater的默認(rèn)參數(shù)作出改變。但在后面兩個(gè)實(shí)驗(yàn)任務(wù)中,需要激活相應(yīng)存儲(chǔ)區(qū),即在地址800000對(duì)應(yīng)的enable選項(xiàng)前打勾 。,,關(guān)閉parameter file generater窗口,回到work bench界面。單擊上面的open option windowns,彈出gcc-lk options窗口和other options窗口。在other options窗口中選
14、擇調(diào)試方式為monitor,并保持這兩個(gè)窗口打開。,,當(dāng)上面的工作基本作完后,就可以用MON調(diào)試了。打開目標(biāo)板的電源,在wb33 主窗口中選擇33104_1.par,然后點(diǎn)擊DB33按鈕。立即在主機(jī)窗口中彈出db33的窗口,在此db33窗口中的命令窗口中顯示正常連接的信息。,因?yàn)樵谇懊鎸⒊绦虻某跏嘉恢枚ㄎ辉?x0000000處,所以要想執(zhí)行這段程序,還必須將PC指針指向0x00000000。,,可以用命令rs來改變PC指針,rs命令是用來修改一些寄存器內(nèi)容的,也包括PC寄存器。在command框中輸入rs命令后回車,就會(huì)顯示當(dāng)前pc指針的內(nèi)容,輸入要修改的值,本例是0,回車,再輸入q,則可退出
15、rs命令。,,調(diào)試過程包括可以單步執(zhí)行,連續(xù)執(zhí)行,也可設(shè)置斷點(diǎn),查看符號(hào)變量,查看相應(yīng)的內(nèi)存空間等。,如果讓程序連續(xù)執(zhí)行,就可以看到目標(biāo)系統(tǒng)上的兩個(gè)指示燈交替閃爍。(這里注意實(shí)驗(yàn)板上的SW_LED的1,2開關(guān)應(yīng)撥向ON。),,實(shí)驗(yàn)一 向內(nèi)存區(qū)寫一個(gè)菲波拉系列,實(shí)驗(yàn)要求,,向內(nèi)存區(qū)0x800100位置開始,寫一個(gè)菲波拉系列。此系列的關(guān)系式如下:,,A,0,=1; A,1,=1 A,N,=A,(N-1),+A,(N-2),(N=2,3, … … ),,在內(nèi)存區(qū)存儲(chǔ)的形式為:,,0x800100 0001,,0x800102 0001,,0x800104 0
16、002,,0x800106 0003,,……………………..,,任務(wù)中N=16,,實(shí)驗(yàn)?zāi)康?,,通過此任務(wù),使實(shí)驗(yàn)者達(dá)到如下目的:,,了解整個(gè)小型應(yīng)用程序的開發(fā)過程,熟悉EPSON提供的開發(fā)工具WB33, DB33。了解編輯、編譯、連接、下載調(diào)試的整個(gè)過程。,,針對(duì)此任務(wù),使實(shí)驗(yàn)者熟悉DB33中有關(guān)對(duì)內(nèi)存操作的命令如:dw,dh,db。,,實(shí)驗(yàn)二 編寫一個(gè)鍵盤中斷應(yīng)用程序,實(shí)驗(yàn)要求,,編寫一個(gè)鍵盤中斷應(yīng)用程序,當(dāng)按下某個(gè)鍵時(shí),使一些指示燈循環(huán)點(diǎn)亮。此鍵盤對(duì)應(yīng)的信號(hào)是NMI, NMI對(duì)應(yīng)的中斷向量號(hào)是7;要點(diǎn)亮指示燈的兩個(gè)信號(hào)。,,實(shí)驗(yàn)?zāi)康?,通過此實(shí)驗(yàn)任務(wù),使實(shí)驗(yàn)者達(dá)到如下目的:
17、,,,了解整個(gè)中斷機(jī)制。從中斷服務(wù)程序的編寫,中斷服務(wù)程序的掛接及如何響應(yīng)中斷深入了解中斷思想。,,了解如何利用處理器的端口資源,如何對(duì)處理器提供的相關(guān)端口進(jìn)行控制達(dá)到用戶的要求。使實(shí)驗(yàn)者對(duì)處理器內(nèi)部結(jié)構(gòu)有一些認(rèn)識(shí)。,,,,task2.cmd文件如下:,,eb 4812d,,59,,q,,ew 48134,,800000,,q,,lf int_test.srf,,rsth,在演示過程中,可把一些db33提供的指令編成后綴為cmd文件,作批處理執(zhí)行。在下載的過程中可在DB33選項(xiàng)中選中db33*.cmd file.如下頁(yè)圖的選項(xiàng)框中藍(lán)色部分。一旦下載就可一次執(zhí)行cmd文件中所有的命令。,,,謝謝觀賞,2003年12月20日,,