《基于ARM的嵌入式系統(tǒng)實驗課件唐山學(xué)院》由會員分享,可在線閱讀,更多相關(guān)《基于ARM的嵌入式系統(tǒng)實驗課件唐山學(xué)院(39頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,信息工程系實驗中心,基于ARM的嵌入式系統(tǒng)實驗,實驗一 ADS1.2開發(fā)環(huán)境創(chuàng)建與簡要介紹,一、實驗?zāi)康?1.熟悉ADS1.2開發(fā)環(huán)境,正確使用仿真調(diào)試電纜進行編譯、下載、調(diào)試。,二、實驗內(nèi)容,1.學(xué)習(xí)ADS1.2開發(fā)環(huán)境,三、實驗設(shè)備,1.EL-ARM(DSP)-掛箱教學(xué)實驗箱,PentiumII以上的PC機,仿真調(diào)試電纜。,2.PC操作系統(tǒng)WIN98或WIN2000或WINXP,ADS1.2集成開發(fā)環(huán)境,仿真調(diào)試電纜驅(qū)動程序,四、實驗步驟,(一)ADS1.2下建立工程,1.運行ADS1.2集成開發(fā)環(huán)境
2、(CodeWarrior for ARM Developer Suite),點擊 File|New,在New對話框中,選擇Project欄,其中共有7項,ARM Executable Image是ARM的通用模板。選中它即可生成ARM的執(zhí)行文件。同時,如圖2-1-1。,還要在,Project name欄中輸入項目的名稱,以及在Location中輸入其存放的位置。按確定保存項目。,2.在新建的工程中,選擇Debug版本,如圖2-1-2,使用 Edit|Debug Settings菜單對Debug版本進行參數(shù)設(shè)置。,圖2-1-2,3.在如圖2-1-3中,點擊Debug Setting 按鈕,彈出2
3、-1-4圖,選中Target Setting,圖2-1-3,圖2-1-4,項,在Post-linker欄中選中ARM fromELF項。按OK確定。這是為生成可執(zhí)行的代碼的初始開關(guān)。,4.在如圖2-1-5中,點擊ARM Assembler,在Architecture or Processer欄中選ARM920T。這是要編譯的CPU核,。,圖2-1-5,5.在如圖2-1-6中,點擊ARM C Compliler,在Architecture or Processer欄中選ARM920T。這是要編譯的CPU核。,圖2-1-6,6.在如圖2-1-7中,點擊ARM linker,在outpur欄中設(shè)定程
4、序的代碼段地址,以及數(shù)據(jù)使用的地址。圖中的RO Base欄中填寫程序代碼存放的起始地址,RW Base欄中填寫程序數(shù)據(jù)存放的起始地址。該地址是屬于SDRAM的地址。,圖2-1-7,圖2-1-8,在options欄中,如圖2-1-8,Image entry point要填寫程序代碼的入口地址,其他保持不變,如果是在SDRAM中運行,則可在0 x300000000 x33ffffff中選值,這是64M SDRAM的地址,但是這里用的是起始地址,所以必須把你的程序空間給留出來,并且還要留出足夠的程序使用的數(shù)據(jù)空間,而且還必須是4字節(jié)對齊的地址(ARM狀態(tài))。通常入口點Image entry poin
5、t 為0 x30000000,ro_base也為0 x30000000。,在Layout欄中,如圖2-1-9,在Place at beginning of image框內(nèi),需要填寫項目的入口程序的目標(biāo)文件名,如,整個工程項目的入口程序是2410init.s,那么應(yīng)在Object/Symbol處填寫其目標(biāo)文件名2410init.o,在Section處填寫程序入口的起始段標(biāo)號。它的作用是通知編譯器,整個項目的開始運行,是從該段開始的。,圖2-1-9,7.在如,圖,圖2-1-10中,即,在,在Debug Setting對,話,話框中點擊,左,左欄的ARM fromELF,項,項,在Outputfil
6、ename欄,中,中設(shè)置輸出,文,文件名*.bin,前,綴,綴名可以自,己,己取,在Outputformat 欄中,選,選擇Plain binary,這,這是設(shè)置要,下,下載到flash中的,二,二進制文件,。,。圖2-1-10中使,用,用的是 test.bin.,圖2-1-10,8.到此,,,,在ADS1.2中的,基,基本設(shè)置已,經(jīng),經(jīng)完成,可,以,以將該新建,的,的空的項目,文,文件作為模,板,板保存起來,。,。首先,要,將,將該項目工,程,程文件改一,個,個合適的名,字,字,如S3C2410ARM.mcp等,,,,然后,在ADS1.2軟件安裝,的,的目錄下的Stationary,目,目錄
7、下新,建,建一個合適,的,的模板目錄,名,名,如,S3C2410 ARMExecutable Image,再將,剛,剛剛設(shè)置完,的,的S3c2410 ARM.mcp項目文件,存,存放到該目,錄,錄下即可。,這,這樣,就能,在,在圖2-1-10中看,到,到該模板。,9.新建項,目,目工程后,,就,就可以執(zhí)行,菜,菜單 Project|AddFiles,把,把和工程所,有,有相關(guān)的文,件,件加入,ADS1.2,不,不能自動進,行,行文件分類,,,,用戶必須,通,通過 Project|Create Group,來,來創(chuàng)建文件,夾,夾,然后把,加,加入的文件,選,選中,移入,文,文件夾?;?者,者鼠標(biāo)
8、放在,文,文件填加區(qū),,,,右鍵點擊,,,,即出!如,圖,圖2-1-11,圖2-1-11,先選AddFiles,加入文,件,件,再選CreateGroup,創(chuàng)建文,件,件夾,然后,把,把文件移入,文,文件夾內(nèi)。,讀,讀者可根據(jù),自,自己習(xí)慣,,更,更改 Edit|Preference窗,口,口內(nèi)關(guān)于文,本,本編輯的顏,色,色、字體大,小,小,形狀,,變,變量、函數(shù),的,的顏色等等,設(shè),設(shè)置。如圖2-1-12。,圖2-1-12,(二)ADS1.2下,仿,仿真、調(diào)試,在ADS1.2下進行,仿,仿真調(diào)試,,首,首先需要一,根,根仿真調(diào)試,電,電纜。其驅(qū),動,動程序的安,裝,裝和使用在,光,光盤中的,
9、實,實驗軟件ARM9_RDI中,,里,里面有相關(guān),的,的文檔。在,連,連上調(diào)試電,纜,纜后,給實,驗,驗箱上電,,打開調(diào)試軟,件,件AXDDebugger。點,擊,擊 File|loadimage,加,加載文件ADS.axf(實驗程序HARDWAREADS實,驗,驗一ADS ADS_data目錄下)。打開超,級,級終端,設(shè),置,置其參數(shù)為,:,:波特率為115200,數(shù)據(jù)位,數(shù),數(shù)8,奇偶,校,校驗無,停,止,止位無1,,數(shù),數(shù)據(jù)流控?zé)o,。,。點擊全速,運,運行,出現(xiàn),圖,圖2-1-13的界面,:,:,圖2-1-13,在最后介紹,調(diào)試,按鈕,,上圖,左起,第,第一個是全,速,速運行,第,二,二
10、個是停止,運,運行,第三,個,個跳入函數(shù),內(nèi),內(nèi)部,第四,個,個單步執(zhí)行,,,,第五個跳,出,出函數(shù)。,到此,開發(fā),環(huán),環(huán)境就全部,介,介紹完了,,這,這是 ARM的開發(fā)基,礎(chǔ),礎(chǔ),希望有,所,所收獲。,實驗二,基,基于ARM,的,的C語言程,序,序設(shè)計簡介,一、實驗?zāi)?的,的,1.了解ARM C語,言,言的基本框,架,架,學(xué)會使,用,用ARM的C語言編程,二、實驗內(nèi),容,容,1.用C,語,語言編寫一,個,個簡單的應(yīng),用,用程序,三、實驗設(shè),備,備,1.EL-ARM(DSP)-,掛,掛箱教學(xué)實,驗,驗箱,PentiumII以上的PC機,仿,真,真調(diào)試電纜,,,,串口電纜,。,。,2.PC,操,
11、操作系統(tǒng)WIN98或WIN2000或WINXP,ADS1.2,集,集成開發(fā)環(huán),境,境,仿真調(diào),試,試驅(qū)動程序,四、ARMC語言簡,介,介與使用規(guī),則,則,1.ARM使用C,語,語言編程是,大,大勢所趨,在應(yīng)用系統(tǒng),的,的程序設(shè)計,中,中,若所有,的,的編程任務(wù),均,均由匯編語,言,言來完成,,其,其工作量巨,大,大,并且不,易,易移植。由,于,于ARM的,程,程序執(zhí)行速,度,度較高,存,儲,儲器的存儲,速,速度和存儲,量,量也很高,,因,因此,C語,言,言的特點充,分,分發(fā)揮,使,得,得應(yīng)用程序,的,的開發(fā)時間,大,大為縮短,,代,代碼的移植,十,十分方便,,程,程序的重復(fù),使,使用率提高,,
12、,,程序架構(gòu),清,清晰易懂,,管,管理較為容,易,易等等。因,此,此,C語言,的,的在ARM,編,編程中具有,重,重要地位。,2.ARM C語,言,言程序的基,本,本規(guī)則,在ARM程,序,序的開發(fā)中,,,,需要大量,讀,讀寫硬件寄,存,存器,并且,盡,盡量縮短程,序,序的執(zhí)行時,間,間的代碼一,般,般使用匯編,語,語言來編寫,,,,比如ARM的啟動代,碼,碼,ARM,的,的操作系統(tǒng),的,的移植代碼,等,等,除此之,外,外,絕大多,數(shù),數(shù)代碼可以,使,使用C語言,來,來完成。,C語言使用,的,的是標(biāo)準(zhǔn)的C語言,ARM的開發(fā),環(huán),環(huán)境實際上,就,就是嵌入了,一,一個C語言,的,的集成開發(fā),環(huán),環(huán)境
13、,只不,過,過這個開發(fā),環(huán),環(huán)境和ARM的硬件緊,密,密相關(guān)。,在使用C語,言,言時,要用,到,到和匯編語,言,言的混合編,程,程。當(dāng)匯編,代,代碼較為簡,潔,潔,則可使,用,用直接內(nèi)嵌,匯,匯編的方法,,,,否則,使,用,用將匯編文,件,件以文件的,形,形式加入項,目,目當(dāng)中,通,過,過ATPCS的規(guī)定與C程序相互,調(diào),調(diào)用與訪問,。,。,ATPCS,,,,就是ARM、Thumb的過程,調(diào),調(diào)用標(biāo)準(zhǔn)(ARM/ThumbProcedureCallStandard),,它,它規(guī)定了一,些,些子程序間,調(diào),調(diào)用的基本,規(guī),規(guī)則。如寄,存,存器的使用,規(guī),規(guī)則,堆棧,的,的使用規(guī)則,,,,參數(shù)的傳,
14、遞,遞規(guī)則等。,在C程序和ARM的匯,編,編程序之間,相,相互調(diào)用必,須,須遵守ATPCS。而,使,使用ADS,的,的C語言編,譯,譯器編譯的C語言子程,序,序滿足用戶,指,指定的ATPCS的規(guī),則,則。但是,,對,對于匯編語,言,言來說,完,全,全要依賴用,戶,戶保證各個,子,子程序遵循ATPCS,的,的規(guī)則。具,體,體來說,匯,編,編語言的子,程,程序應(yīng)滿足,下,下面3個條,件,件:,在子程,序,序編寫時,,必,必須遵守相,應(yīng),應(yīng)的ATPCS規(guī)則;,堆棧的,使,使用要遵守,相,相應(yīng)的ATPCS規(guī)則,;,;,在匯編,編,編譯器中使,用,用-atpcs,選,選項。,基本的ATPCS規(guī)定,,,,
15、請詳見提,供,供的相關(guān)PDF文檔。,匯編程序調(diào),用,用C程序,匯編程序的,設(shè),設(shè)置要遵循ATPCS,規(guī),規(guī)則,保證,程,程序調(diào)用時,參,參數(shù)正確傳,遞,遞。,在匯編程序,中,中使用IMPORT偽,指,指令聲明將,要,要調(diào)用的C,程,程序函數(shù)。,在調(diào)用C程,序,序時,要正,確,確設(shè)置入口,參,參數(shù),然后,使,使用BL調(diào),用,用。,C程序調(diào)用,匯,匯編程序,匯編程序的,設(shè),設(shè)置要遵循ATPCS,規(guī),規(guī)則,保證,程,程序調(diào)用時,參,參數(shù)正確傳,遞,遞。,在匯編程序,中,中使用EXPORT偽,指,指令聲明本,子,子程序,使,其,其他程序可,以,以調(diào)用此子,程,程序。,在C語言中,使,使用extern關(guān)
16、鍵,字,字聲明外部,函,函數(shù)(聲明,要,要調(diào)用的匯,編,編子程序),。,。,在C語言的,環(huán),環(huán)境內(nèi)開發(fā),應(yīng),應(yīng)用程序,,一,一般需要一,個,個匯編的啟,動,動程序,從,匯,匯編的啟動,程,程序,跳到C語言下的,主,主程序,然,后,后,執(zhí)行C,程,程序,在C,環(huán),環(huán)境下讀寫,硬,硬件的寄存,器,器,一般是,通,通過宏調(diào)用,,,,在每個項,目,目文件的Startup2410/INC目,錄,錄下都有一,個,個2410addr.h的頭文件,,,,那里面定,義,義了所有關(guān),于,于2410,的,的硬件寄存,器,器的宏,對,宏,宏的讀寫,,就,就能操作2410的硬,件,件。,具體的編程,規(guī),規(guī)則同標(biāo)準(zhǔn)C語言。,3.簡,單,單的小例子,下面是一個,簡,簡單的小例,子,子,IMPORT Main,AREAInit,CODE,READONLY;,ENTRY,LDRR0,=0 x01d00000,LDRR1,=0 x245,STRR1,R0,;,;把0 x245,放,放到地址0X01D00000,BLMain,;,;跳轉(zhuǎn)到Main()函數(shù)處的C/C+,程,程序,END,;,;標(biāo),識,識匯編程序,結(jié),結(jié)束,以