基于arm830+_2410說明書_第1頁
已閱讀1頁,還剩221頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  目 錄1</b></p><p>  第1章 EL-ARM-830+實驗系統(tǒng)的資源介紹3</p><p>  第2章 基于ARM系統(tǒng)資源的實驗31</p><p>  實驗一 ADS1.2開發(fā)環(huán)境創(chuàng)建與簡要介

2、紹32</p><p>  實驗二 基于ARM的匯編語言程序設(shè)計簡介40</p><p>  實驗三 基于ARM的C語言程序設(shè)計簡介45</p><p>  實驗四 基于ARM的硬件BOOT程序的基本設(shè)計50</p><p>  實驗五 ARM的I/O接口實驗55</p><p>  實驗六 ARM

3、的中斷實驗61</p><p>  實驗七 ARM的DMA實驗66</p><p>  實驗八 ARM的UART實驗71</p><p>  實驗九 ARM的A/D接口實驗78</p><p>  實驗十 模擬輸入輸出接口的實驗84</p><p>  實驗十一 鍵盤接口和七段數(shù)碼管的控制實驗86

4、</p><p>  實驗十二 LCD的顯示實驗88</p><p>  實驗十三 觸摸屏實驗101</p><p>  實驗十四 音頻錄放實驗109</p><p>  實驗十五 USB設(shè)備收發(fā)數(shù)據(jù)實驗116</p><p>  實驗十六 SD卡測試實驗120</p><p&g

5、t;  實驗十七 PS2接口鍵盤鼠標(biāo)實驗122</p><p>  附:燒寫程序Jflash-s3c2410的使用125</p><p>  第3章 基于uCOSII操作系統(tǒng)的ARM系統(tǒng)實驗127</p><p>  實驗一 uCOSII的內(nèi)核在ARM處理器上的移植實驗127</p><p>  實驗二 基于uCOSII的串口驅(qū)

6、動編寫實驗137</p><p>  實驗三 基于uCOSII的LCD驅(qū)動編寫實驗142</p><p>  實驗四 基于uCOSII的鍵盤驅(qū)動編寫實驗145</p><p>  實驗五 基于uCOSII的小型GUI的應(yīng)用程序編寫實驗148</p><p>  第4章 基于linux操作系統(tǒng)的ARM系統(tǒng)實驗164</p&

7、gt;<p>  實驗一 Linux的實驗環(huán)境的搭建164</p><p>  實驗二 BootLoader引導(dǎo)程序170</p><p>  實驗三 linux的移植、內(nèi)核、文件系統(tǒng)的生成與下載176</p><p>  實驗四 linux驅(qū)動程序的編寫184</p><p>  實驗五 linux應(yīng)用程序的

8、編寫190</p><p>  實驗六 基于linux的鍵盤驅(qū)動程序的編寫192</p><p>  實驗七 基于linux的LCD驅(qū)動程序的編寫200</p><p>  實驗八 基于linux的鍵盤應(yīng)用程序的編寫207</p><p>  實驗九 基于linux的基本繪圖應(yīng)用程序的編寫210</p><

9、;p>  實驗十 基于linux的跑馬燈應(yīng)用程序的編寫216</p><p>  實驗十一 利用實驗箱上網(wǎng)的實驗218</p><p>  實驗十二 USB播放mp3的實驗219</p><p>  第1章 EL-ARM-830+實驗系統(tǒng)的資源介紹</p><p>  ARM實驗箱硬件資源概述</p><

10、;p>  EL-ARM-830+型教學(xué)實驗系統(tǒng)屬于一種綜合的教學(xué)實驗系統(tǒng),該系統(tǒng)采用了目前在國內(nèi)普遍認(rèn)同的ARM920T核,32位微處理器,實現(xiàn)了多模塊的應(yīng)用實驗。它是集學(xué)習(xí)、應(yīng)用編程、開發(fā)研究于一體ARM實驗教學(xué)系統(tǒng)。用戶可根據(jù)自己的需求選用不同類型的CPU適配板,兼容ARM7與ARM9,而不需要改變?nèi)魏闻渲?,同時,實驗系統(tǒng)上的Tech_V總線能夠拓展較為豐富的實驗接口板。用戶在了解Tech_V標(biāo)準(zhǔn)后,更能研發(fā)出不同用途的實驗接

11、口板。除此之外,在實驗板上有豐富的外圍擴(kuò)展資源(數(shù)字、模擬信號發(fā)生器,數(shù)字量IO輸入輸出,語音編解碼、人機(jī)接口等單元),可以完成ARM的基礎(chǔ)實驗、算法實驗和數(shù)據(jù)通信實驗、以太網(wǎng)實驗。</p><p>  圖1-1-1 EL-ARM-830+實驗教學(xué)系統(tǒng)的底箱功能框圖</p><p>  1.1 實驗系統(tǒng)的硬件資源總覽</p><p>  ☆ CPU單元:內(nèi)核ARM9

12、20T,芯片三星的S3C2410,工作頻率最高202MHz;</p><p>  ☆ 動態(tài)存儲器:64MB,芯片HY57V561620;</p><p>  ☆ 海量存儲器:32MB,芯片K9F5608;</p><p>  ☆ USB單元: 1個主接口,1個設(shè)備接口;</p><p>  ☆ 網(wǎng)絡(luò)單元: 10/100M以太網(wǎng),芯

13、片AX88796;</p><p>  ☆ UART單元: 2個,最高通信波特率115200bps;</p><p>  語音單元: IIS格式,芯片UDA1341TS,采樣頻率最高48KHz;</p><p>  LCD單元: 8.4吋,65536色,640X480像素;</p><p>  觸摸屏單元: 四線電阻屏,640X48

14、0,8.4吋;</p><p>  SD卡單元: 通信頻率最高25MHz,芯片W86L388D,兼容MMC卡;</p><p>  鍵盤單元: 4X4鍵盤,帶8位LED數(shù)碼管;芯片HD7279A;</p><p>  數(shù)字輸入輸出單元:8個拔碼開關(guān)及8個LED發(fā)光管;</p><p>  A/D轉(zhuǎn)換單元:芯片自帶的8路10位A/D,滿量

15、程2.5V;</p><p>  信號源單元: 方波輸出;</p><p>  標(biāo)準(zhǔn)鍵盤及PS2鼠標(biāo)接口;</p><p>  達(dá)盛公司的Tech_V總線接口;</p><p>  達(dá)盛公司的E_Lab總線接口;</p><p>  1個設(shè)備接口,芯片PDIUSBD12;</p><p>&l

16、t;b>  CPLD單元;</b></p><p><b>  電源模塊單元。</b></p><p>  注:帶☆的功能集成在ARM9的S3c2410 CPU板上。</p><p>  1.2 核心板的資源介紹</p><p>  1.核心板的硬件資源(ARM920T核)</p><

17、;p>  在核心CPU板上包括下列單元和芯片,32位ARM920T的處理器,即三星的S3C2410芯片,兩片動態(tài)存儲器,每片32M字節(jié),一片32M字節(jié)的NAND_flash存儲器,一個USB主接口,一個USB從接口,一個10/100M的以太網(wǎng)控制芯片,完成網(wǎng)絡(luò)訪問功能,一個UART接口,完成串口通信,最高波特率率為115200bps, 一個RTC實時時鐘,一個5V轉(zhuǎn)3.3V和1.8V的電源管理模塊,一個20針的JTAG調(diào)試接口。具

18、體元器件見</p><p><b>  表1-1。</b></p><p><b>  表1-1</b></p><p>  具體的單元、跳線見表1-2。</p><p><b>  表1-2</b></p><p>  表1-3為核心板上各LED指示燈

19、的意義。</p><p><b>  表1-3</b></p><p>  表1-4為核心板上的晶振單元</p><p><b>  表1-4</b></p><p>  2.核心板資源的具體介紹</p><p><b>  1)電源模塊</b><

20、/p><p>  在S3C2410 CPU板上由于其內(nèi)核采用1.8V,I/O接口采用3.3V供電,因此需要將通用的5V轉(zhuǎn)換成1.8V和3.3V。圖1-1-2為使用LM1117電源轉(zhuǎn)換芯片把5V轉(zhuǎn)成3.3V和1.8V的轉(zhuǎn)換電路。</p><p><b>  圖1-1-2</b></p><p>  2)NAND_FLASH海量存儲器單元</p&

21、gt;<p>  該存儲單元在板卡上標(biāo)號為K9F5608U,選用32MB字節(jié)的K9F5608U,8位數(shù)據(jù)總線,該芯片由S3C2410的相關(guān)引腳直接控制, CPU分配給它的地址空間為0x0000 0000—0x01ff ffff。啟動代碼部分則放在從0x0000 0000開始的地址空間內(nèi)。系統(tǒng)將CPU的引腳OM[1:0]設(shè)置成00b,當(dāng)核心板上電復(fù)位時,系統(tǒng)首先將Nand_Flash開始的0~4K的程序映射到Stepping

22、Stone區(qū),然后從那里開始執(zhí)行。Nand_Flash可以存放數(shù)據(jù)和程序,但需要特定的指令進(jìn)行讀寫。</p><p>  3)同步動態(tài)存儲器單元</p><p>  該存儲單元在板卡上標(biāo)號為HY57V561620。選用兩片8MB字節(jié)的 HY57V561620,32位數(shù)據(jù)總線。片選NSCS6接兩片HY57V561620單元作為片選信號,CPU分配給這兩片HY57V561620單元的地址空間分

23、別為0x3000 0000 - 0x31ff ffff, 0x3200 0000-0x33ffffff,也就是S3C2410CPU的Bank6區(qū)和Bank7區(qū)。</p><p>  4)RS232串口單元</p><p>  該存儲單元在板卡上標(biāo)號為UART0(CROSS/F),選用了MAX3232電壓轉(zhuǎn)換芯片,進(jìn)行PC機(jī)與CPU板的串口通訊。它采用收、發(fā)、地,三線連接,無握手信號。通過S

24、3C2410內(nèi)部的串口0控制器進(jìn)行控制。</p><p>  5)主/從USB單元</p><p>  該單元在板卡上標(biāo)號為USB-HOST和USB-DEVICE,通過S3C2410內(nèi)部的USB主控制器和USB設(shè)備控制器進(jìn)行控制。</p><p><b>  6)網(wǎng)絡(luò)單元</b></p><p>  該存儲單元在板卡上標(biāo)

25、號為AX88796,選用了ASIX公司的AX88796網(wǎng)絡(luò)芯片,傳輸速率為10/100M自適應(yīng),16位數(shù)據(jù)總線傳輸,片選NGCS2接網(wǎng)絡(luò)單元。CPU分配給AX88796單元的地址空間為0x1000 0000—0x1800 0000,也就是S3C2410CPU的bank2區(qū)。S3C2410CPU的外部中斷ExINT2響應(yīng)該中斷。RJ45插座上面自帶數(shù)據(jù)傳輸?shù)闹甘緹簟?lt;/p><p>  為清楚顯示核心板上各存儲區(qū)及

26、單元,見表1-5。</p><p><b>  表1-5</b></p><p><b>  7)JTAG單元</b></p><p>  JTAG(Joint Test Action Group,聯(lián)合測試行動小組)是一種國際標(biāo)準(zhǔn)測試協(xié)議,主要用于芯片內(nèi)部測試及對系統(tǒng)進(jìn)行仿真、調(diào)試,JTAG技術(shù)是一種嵌入式調(diào)試技術(shù),它在芯

27、片內(nèi)部封裝了專門的測試電路TAP(Test Access Port,測試訪問口),通過專用的JTAG測試工具對內(nèi)部節(jié)點進(jìn)行測試。目前大多數(shù)比較復(fù)雜的器件都支持JTAG協(xié)議,如ARM、DSP、FPGA器件等。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為測試模式選擇、測試時鐘、測試數(shù)據(jù)輸入和測試數(shù)據(jù)輸出。</p><p>  通過JTAG接口,可對芯片內(nèi)部的所有部件進(jìn)行訪問,因而是開發(fā)調(diào)試嵌入式系

28、統(tǒng)的一種簡潔高效的手段。目前JTAG接口的連接有兩種標(biāo)準(zhǔn),即14針接口和20針接口,EL-ARM-830+核心板上使用的是20針接口。接口定義見表1-6。</p><p><b>  表1-6</b></p><p>  在核心板上,JTAG的第1腳用一黃色的方框標(biāo)注,當(dāng)串口、USB口、網(wǎng)絡(luò)口向左擺放時,第1腳下面的管腳為第2腳,它左面的管腳依次為3,5,…,19;第

29、2腳左面的管腳依次為4,6,…,20。</p><p>  8)核心CPU板上的外接接口單元</p><p>  在CPU板上有INTERFACE A、INTERFACE B、INTERFACE C,3個外擴(kuò)接口單元,現(xiàn)對這三個接口的引腳加以說明。</p><p>  INTERFACE B:INTERFACE B擴(kuò)展信號是地址、數(shù)據(jù)總線和讀寫、片選信號:見表1-7

30、</p><p><b>  表1-7</b></p><p>  INTERFACE A:INTERFACE A擴(kuò)展信號外設(shè)信號接口:見表1-8。</p><p><b>  表1-8</b></p><p>  INTERFACE C用來擴(kuò)展INTERFACE A、INTERFACE B沒有擴(kuò)展

31、的CPU信號,如AD輸入、液晶、串口等和擴(kuò)展子板間的通訊信號。見表1-9。</p><p><b>  表1-9</b></p><p>  1.3 實驗箱底板的資源介紹</p><p><b>  1. 概述</b></p><p>  實驗箱底板上的資源豐富,具體的實驗單元有:LCD模塊,觸摸屏

32、模塊,語音單元模塊,串口2模塊,USB設(shè)備模塊,電源模塊,數(shù)字輸入輸出模塊,鍵盤模塊,CPLD燒寫模塊,鍵盤數(shù)碼管模塊,SD(MMC)卡模塊,A/D轉(zhuǎn)換模塊,信號源發(fā)生器模塊。以及PS2鼠標(biāo)鍵盤接口, Tech_V總線接口,E_LAB總線接口等等。</p><p>  實驗箱上的底板詳細(xì)具體資源見表1-10。</p><p><b>  表1-10</b></p

33、><p>  2. 底板資源的具體介紹</p><p>  1)模擬輸入輸出接口單元</p><p>  8bit的數(shù)字量輸入(由八個拔碼開關(guān)產(chǎn)生或插孔),通過SI0---SI7跳線位控制連接至74LS244緩沖;8bit的數(shù)字量輸出通過74LS273鎖存輸出(八個LED燈顯示及插孔)。輸入開關(guān)拔至L處,表示輸入一個2進(jìn)制的“0”值,至H處,表示輸入一個2進(jìn)制的“1”值

34、, I0—I7為244輸入口,O0—O7為273輸出口。</p><p>  2)鍵盤數(shù)碼管模塊 </p><p>  鍵盤接口是由芯片HD7279A控制的,HD7279A是一片具有串行接口的,可同時驅(qū)動8位共陰式數(shù)碼管或(64只獨立LED)的智能顯示驅(qū)動芯片,該芯片同時還可連接多達(dá)64鍵的鍵盤矩陣,單片即可完成LED顯示,鍵盤接口的全部功能。HD7279A內(nèi)部含有譯碼器,可直接接受BCD

35、碼或16進(jìn)制碼,并同時具有2種譯碼方式。此外,還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。HD7279A具有片選信號,可方便地實現(xiàn)多于8位的顯示或多于64鍵的鍵盤接口。在該實驗系統(tǒng)中,僅提供了16個鍵。</p><p><b>  3)USB設(shè)備模塊</b></p><p>  USB設(shè)備模塊,采用了飛利浦的USB設(shè)備控制芯片PDIUSBD12,該芯片遵從

36、USB1.1規(guī)范,最高通信率12Mbps,該單元位于實驗箱的左下角。D3為通信狀態(tài)指示燈。使用外部中斷4來響應(yīng)中斷請求。</p><p><b>  4)串口1模塊</b></p><p>  串口1模塊,采用了美信的MAX3232CPE芯片,通過它可以把PC的電信號轉(zhuǎn)換成實驗箱可以使用的信號,它的最高串行通信波特率為115200bps.</p><

37、;p><b>  5)音頻模塊</b></p><p>  語音的模擬信號的編解碼采用了UDA1341TS芯片。該芯片有兩個串行同步變換通道、D/A轉(zhuǎn)換前的差補(bǔ)濾波器和A/D變換后的濾波器。其他部分提供片上時序和控制功能。芯片的各種應(yīng)用配置可以通過芯片的三根線,由串行通信編程來實現(xiàn)。主要包括:復(fù)位、節(jié)電模式、通信協(xié)議、串行時鐘速率、信號采樣速率、增益控制和測試模式、音質(zhì)特性。最大采樣速

38、率48kb/s。</p><p>  語音處理單元由UDA1341TS模塊、輸出功率模塊組成。語音的模擬信號經(jīng)過偏置和濾波處理后輸入到語音的編解碼芯UDA1341TS中,UDA1341TS以IIS的語音格式送入S3C2410中,S3C2410可以處理也可以不處理該信號,把它保存起來,也可用DMA控制而不經(jīng)過CPU處理,直接實時的采集,然后實時的播放出去。</p><p>  音頻信號通過D

39、/A轉(zhuǎn)換后輸出,經(jīng)過一次功率放大,然后可以推動功率為0.4W的板載揚(yáng)聲器,也可以接耳機(jī)輸出。如圖1-3。</p><p>  語音處理單元原理框圖</p><p><b>  圖1-3</b></p><p>  語音處理單元接口說明:</p><p>  LINE_IN:音頻輸入端子,可輸入CD、聲卡、MP3等語音信號

40、。</p><p>  MIC:音頻輸入端子,麥克風(fēng)等語音信號。</p><p>  SPEAKER:音頻輸出端子,可接耳機(jī)、音箱。</p><p>  語音處理單元旋鈕說明:</p><p>  “SPEAKER_R”:</p><p><b>  表1-11</b></p>&l

41、t;p>  “SPEAKER_L”:</p><p><b>  表1-12</b></p><p><b>  6)LCD模塊</b></p><p>  本實驗系統(tǒng)僅選用了LCD液晶顯示屏,LCD的控制器使用S3C2410的內(nèi)部集成的控制器,LCD屏選用的是8.4吋,6400X480像素,65536色的彩屏。電源

42、操作范圍寬(2.7V to 5.5V);低功耗設(shè)計可滿足產(chǎn)品的省電要求。</p><p>  其中,可調(diào)變位器VR2用于調(diào)節(jié)LCD屏色彩的對比度,產(chǎn)品出廠時,已設(shè)定成在室溫下較好的對比度,當(dāng)因溫度低或高等因素顯示不正常時,可適當(dāng)調(diào)節(jié)VR2到合適的色彩。一般請不要調(diào)整。</p><p><b>  “VR2”:</b></p><p><b

43、>  表1-13</b></p><p>  “LCD_ON/OFF”按鍵,控制著LCD屏的電源,是電源的開關(guān)。</p><p><b>  7)觸摸屏模塊</b></p><p>  S3C2410內(nèi)部具有觸摸屏控制器,在底板跳線是ARM9的時候,觸摸屏直接與S3C2410連接,由CPU直接控制。</p>&l

44、t;p>  8)SD(MMC)卡單元</p><p>  SD(MMC)卡單元,采用了華邦公司的W86L388D的SD(MMC)卡的控制器,它的最高時鐘率為25MHz,能夠使用1線或4線傳輸數(shù)據(jù)及指令,它通過初始化配置能夠使用MMC卡。CPU通過給其相應(yīng)的寄存器中寫入控制命令,來驅(qū)動它讀寫SD(MMC)卡,從SD(MMC)卡中讀取的數(shù)據(jù)通過與CPU相連的16位數(shù)據(jù)總線,發(fā)送給CPU處理。SD(MMC)卡與C

45、PU的是通過中斷方式來進(jìn)行應(yīng)答的,W86L388D的中斷控制器則顯示SD(MMC)卡的各種中斷請求,CPU只須讀取其狀態(tài),就能判斷對SD(MMC)卡進(jìn)行如何處理。其原理如圖1-4。D12,通信狀態(tài)指示燈,D13卡識別指示燈。</p><p><b>  圖1-4</b></p><p><b>  9)A/D轉(zhuǎn)換單元</b></p>

46、<p>  A/D轉(zhuǎn)換單元,采用S3C2410內(nèi)置的A/D轉(zhuǎn)換器,它包含一個8路模擬輸入混合器,12位模數(shù)轉(zhuǎn)換。最大轉(zhuǎn)換速率:100KSPS,輸入電壓范圍:0-2.5V輸入帶寬: 0-100 Hz(無采樣和保持電路),低的電源消耗。在本實驗系統(tǒng)中,模擬輸入信號經(jīng)過降壓、偏置處理后輸入A/D轉(zhuǎn)換器,然后轉(zhuǎn)換的數(shù)字量給S3C2410處理。如圖1-5。</p><p>  圖1-5模數(shù)單元原理框圖</

47、p><p>  模數(shù)轉(zhuǎn)換單元撥碼開關(guān)說明見表1-13:</p><p><b>  SW5:撥碼開關(guān)</b></p><p><b>  表1-13</b></p><p><b>  10)信號源單元</b></p><p>  信號源單元使用TI公司的T

48、LC2272,是雙通道運(yùn)算放大器,可以產(chǎn)生方波。</p><p><b>  11)PS2單元</b></p><p>  PS2單元中S5為復(fù)位鍵,KEYBOARD接口為鍵盤接口,MOUSE為鼠標(biāo)接口。D1為數(shù)據(jù)傳輸指示燈??刂菩酒瑸锳T2051。</p><p><b>  12)CPLD單元</b></p>

49、;<p>  由于實驗箱上的資源眾多,幾乎每一個設(shè)備資源都要使用片選信號或中斷信號或一些串口的信號,以及一些寄存器的地址等等,這樣一來,S3C2410的I/O資源是不能滿足的,因此該實驗箱通過加入了一片CPLD芯片,用來完成各資源所需的地址譯碼,片選信號,以及一些高低電平的模擬。</p><p>  CPLD單元使用S3C2410的片選是NGCS4,地址是0x20000000—0x28000000;

50、由于底板上大多的資源都通過CPLD的地址譯碼,進(jìn)行片選電平的產(chǎn)生,以及模擬高低電平的產(chǎn)生,所以,應(yīng)給CPLD的地址里寫入相應(yīng)的數(shù)據(jù)以產(chǎn)生相應(yīng)的信號。表1-21列出了底板中所需信號的地址。</p><p>  #define clrcs1 (*(volatile unsigned *)0x20000000) = 0x01;</p><p>  #define setcs1 (

51、*(volatile unsigned *)0x20000004) = 0x02;</p><p>  利用宏定義來代替置高、置低;給相應(yīng)的地址里寫1,表示該CPLD的相應(yīng)引腳輸出低電平,給相應(yīng)的地址里寫2,表示該CPLD的相應(yīng)引腳輸出高電平。有的地址需要寫入8位數(shù)據(jù)。</p><p><b>  表1-21</b></p><p>  具體的

52、應(yīng)用,請詳見源碼程序。</p><p><b>  12)其它接口說明</b></p><p>  電源單元:為系統(tǒng)提供+5V、+12V、-12V、+3.3V電源,其中</p><p><b>  表1-22</b></p><p>  在底板上,留出了四列插孔,它們是供外部擴(kuò)展所用。具體功能見表1

53、-23。</p><p><b>  表1-23</b></p><p>  在信號擴(kuò)展單元處,又?jǐn)U展了PS2鍵盤鼠標(biāo)接口</p><p>  在此對底板上的設(shè)備所使用的中斷作一總結(jié)。見表1-24。</p><p><b>  表1-24</b></p><p>  SW4:

54、撥碼開關(guān),ARM系列的CPU板卡選擇。</p><p>  1.4 Tech_V總線的介紹</p><p>  在實驗箱的左中部,有兩條擴(kuò)展接口,J3和J5,在深入掌握了ARM的系統(tǒng)之后,可以進(jìn)一步開發(fā)屬于自己的具體的開發(fā)板,例如,在此總線上,我公司已經(jīng)研制開發(fā)了GPS/GPRS模塊卡,高精度的A/D,D/A采集卡,靜態(tài)圖像處理卡等等?,F(xiàn)就Tech_V 總線的接口定義說明見表1-26,1-

55、27。</p><p>  J3:J3擴(kuò)展信號是地址、數(shù)據(jù)總線和讀寫、片選信號:見表1-26</p><p><b>  表1-26</b></p><p>  J5:J5擴(kuò)展信號外設(shè)信號接口:見表1-27。</p><p><b>  表1-27</b></p><p> 

56、 1.5 E_Lab總線的介紹</p><p>  在實驗箱的左下部,有一對擴(kuò)展接口,JP3和JP4,稱為E_Lab總線接口。在深入掌握了ARM的系統(tǒng)之后,可以進(jìn)一步開發(fā)屬于自己的具體的開發(fā)板,現(xiàn)就E_Lab 總線的接口定義說明見表1-28,1-29。值得注意的是E_Lab總線接口使用雙排插座,每個插座并列的兩個引腳的信號定義是相同的。</p><p>  JP1:JP1擴(kuò)展信號是地址總線

57、和讀寫、片選信號:見表1-28</p><p>  表1-28底板JP1插座引腳信號</p><p>  JP2:JP2擴(kuò)展信號是外設(shè)信號(數(shù)據(jù))接口:見表1-29。</p><p>  表1-29 底板JP2插座引腳信號</p><p>  綜上所述,本章介紹了該系統(tǒng)的硬件資源,看完本章內(nèi)容,應(yīng)該對實驗系統(tǒng)有一個基本的了解,在后面的幾章中將

58、會結(jié)合光盤資料給出的實驗程序詳細(xì)介紹每個單元在實驗中的具體應(yīng)用。</p><p>  第2章 基于ARM系統(tǒng)資源的實驗</p><p>  當(dāng)進(jìn)行嵌入式系統(tǒng)開發(fā)時,選擇合適的開發(fā)工具可以加快開發(fā)進(jìn)度、節(jié)省開發(fā)成本。因此一套含有編輯軟件、編譯軟件、匯編軟件、連接軟件、調(diào)試軟件、工程管理及函數(shù)庫的集成開發(fā)環(huán)境(IDE)是必不可少的。</p><p>  當(dāng)今在ARM領(lǐng)域

59、,被多數(shù)嵌入式開發(fā)人員使用的集成開發(fā)環(huán)境有ADS, ADS為ARM公司推出的新一代ARM集成開發(fā)工具,最新版本為ADS1.2。這兩種開發(fā)工具都是ARM公司為了方便用戶開發(fā)使用ARM內(nèi)核芯片而推出的,目前被廣泛應(yīng)用。ADS調(diào)試時在不需要仿真器的情況下,需要一根JTAG調(diào)試電纜就可以了,但它在調(diào)試的時候占用CPU的資源,調(diào)試的穩(wěn)定性稍差,成本低,比較適合學(xué)生實驗使用。ADS調(diào)試時使用外接仿真器的情況下,其在調(diào)試時不占用CPU的資源,穩(wěn)定性好

60、,但是成本高,適合用于科研教學(xué)和嵌入式的產(chǎn)品開發(fā)。</p><p>  在本章中主要是針對ARM的實驗開發(fā)環(huán)境、ARM的匯編、高級語言的使用,以及針對三星的S3C2410的硬件資源進(jìn)行一系列的HARDWARE。這其中包括ADS 1.2 開發(fā)環(huán)境創(chuàng)建與簡要介紹、基于ARM匯編語言程序設(shè)計、基于ARM的C語言程序設(shè)計 基于ARM的硬件boot程序設(shè)計、ARM的I/O接口實驗、ARM的中斷實驗 ARM的DMA實驗、

61、ARM的UART實驗、ARM的A/D接口實驗、七段數(shù)碼管和鍵盤的控制實驗、LCD的顯示實驗、觸摸屏實驗、音頻錄放實驗、USB設(shè)備收發(fā)數(shù)據(jù)實驗、以太網(wǎng)傳輸實驗、SD卡檢測實驗,PS2鍵盤鼠標(biāo)實驗。</p><p>  這些實驗是脫離操作系統(tǒng)的HARDWARE,通過此類實驗可以了解和學(xué)習(xí)ARM硬件的架構(gòu)和軟件的啟動過程、運(yùn)行過程,真正理解ARM芯片的應(yīng)用。</p><p>  實驗一 ADS

62、1.2開發(fā)環(huán)境創(chuàng)建與簡要介紹</p><p><b>  一、實驗?zāi)康?lt;/b></p><p>  1. 熟悉ADS1.2開發(fā)環(huán)境,正確使用仿真調(diào)試電纜進(jìn)行編譯、下載、調(diào)試。</p><p><b>  二、實驗內(nèi)容</b></p><p>  1. 學(xué)習(xí)ADS1.2開發(fā)環(huán)境</p>

63、<p><b>  三、實驗設(shè)備</b></p><p>  1. EL-ARM-830+教學(xué)實驗箱,PentiumII以上的PC機(jī),仿真調(diào)試電纜。</p><p>  PC操作系統(tǒng)WIN98或WIN2000或WINXP,ADS1.2集成開發(fā)環(huán)境,仿真調(diào)試電纜驅(qū)動程序</p><p><b>  四、實驗步驟</

64、b></p><p>  ADS1.2下建立工程</p><p>  1.運(yùn)行ADS1.2集成開發(fā)環(huán)境(CodeWarrior for ARM Developer Suite),點擊File|New,在New對話框中,選擇Project欄,其中共有7項,ARM Executable Image是ARM的通用模板。選中它即可生成ARM的執(zhí)行文件。同時,如圖2-1-1</p>

65、<p><b>  圖2-1-1</b></p><p>  還要在,Project name欄中輸入項目的名稱,以及在Location中輸入其存放的位置。按確定保存項目。</p><p>  2.在新建的工程中,選擇Debug版本,如圖2-1-2,使用Edit|Debug Settings菜單對Debug版本進(jìn)行參數(shù)設(shè)置。</p><

66、;p><b>  圖2-1-2</b></p><p>  3.在如圖2-1-3中,點擊Debug Setting 按鈕,彈出2-1-4圖,選中Target Setting</p><p><b>  圖2-1-3</b></p><p><b>  圖2-1-4</b></p>

67、<p>  項,在Post-linker欄中選中ARM fromELF項。按OK確定。這是為生成可執(zhí)行的代碼的初始開關(guān)。</p><p>  4. 在如圖2-1-5中,點擊ARM Assembler ,在Architecture or Processer </p><p><b>  圖2-1-5</b></p><p>  欄中

68、選ARM920T。這是要編譯的CPU核。</p><p>  5.在如圖2-1-6中,點擊ARM C Compliler ,在Architecture or Processer欄中選ARM920T。這是要編譯的CPU核。</p><p><b>  圖2-1-6</b></p><p>  6. 在如圖2-1-7中,點擊ARM linker

69、 ,在outpur欄中設(shè)定程序的代碼段地址,以及數(shù)據(jù)使用的地址。圖中的RO Base欄中填寫程序代碼存放的起始地址,RW Base欄中填寫程序數(shù)據(jù)存放的起始地址。該地址是屬于SDRAM的地址。</p><p><b>  圖2-1-7</b></p><p><b>  圖2-1-8</b></p><p>  在opti

70、ons欄中,如圖2-1-8,Image entry point要填寫程序代碼的入口地址,其他保持不變,如果是在SDRAM中運(yùn)行,則可在0x30000000—0x33ffffff中選值,這是64M SDRAM的地址,但是這里用的是起始地址,所以必須把你的程序空間給留出來,并且還要留出足夠的程序使用的數(shù)據(jù)空間,而且還必須是4字節(jié)對齊的地址(ARM狀態(tài))。通常入口點Image entry point 為0x30000000,ro_base也為

71、0x30000000。</p><p>  在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)號。它的作用是通知編譯器,整個項目的開始運(yùn)行,是從該段開始的。</p

72、><p><b>  圖2-1-9</b></p><p>  7. 在如圖2-1-10中,即在Debug Setting對話框中點擊左欄的ARM fromELF項,在Output file name欄中設(shè)置輸出文件名*.bin,前綴名可以自己取,在Output format 欄中選擇Plain binary,這是設(shè)置要下載到flash中的二進(jìn)制文件。圖2-1-10中使

73、用的是test.bin.</p><p><b>  圖2-1-10</b></p><p>  8. 到此,在ADS1.2中的基本設(shè)置已經(jīng)完成,可以將該新建的空的項目文件作為模板保存起來。首先,要將該項目工程文件改一個合適的名字,如S3C2410 ARM.mcp等,然后,在ADS1.2軟件安裝的目錄下的Stationary 目錄下新建一個合適的模板目錄名,如,S3C

74、2410 ARM Executable Image,再將剛剛設(shè)置完的S3c2410 ARM.mcp項目文件存放到該目錄下即可。這樣,就能在圖2-1-10中看到該模板。</p><p>  9.新建項目工程后,就可以執(zhí)行菜單Project|Add Files把和工程所有相關(guān)的文件加入,ADS1.2不能自動進(jìn)行文件分類,用戶必須通過Project|Create Group來創(chuàng)建文件夾,然后把加入的文件選中,移入文件夾

75、?;蛘呤髽?biāo)放在文件填加區(qū),右鍵點擊,即出!如圖2-1-11</p><p><b>  圖2-1-11</b></p><p>  先選Add Files,加入文件,再選Create Group,創(chuàng)建文件夾,然后把文件移入文件夾內(nèi)。讀者可根據(jù)自己習(xí)慣,更改Edit|Preference窗口內(nèi)關(guān)于文本編輯的顏色、字體大小,形狀,變量、函數(shù)的顏色等等設(shè)置。如圖2-1-12

76、。</p><p><b>  圖2-1-12</b></p><p>  2. ADS1.2下仿真、調(diào)試</p><p>  在ADS1.2下進(jìn)行仿真調(diào)試,首先需要一根仿真調(diào)試電纜。其驅(qū)動程序的安裝和使用在光盤中的\實驗軟件\ARM9_RDI中,里面有相關(guān)的文檔。在連上調(diào)試電</p><p>  纜后,用直連線串口線將

77、CPU板上的串口和PC機(jī)的口相連,打開超級終端,配置串口的屬性(如COM1),配置波特率為115200,校驗位無,數(shù)據(jù)位為8,停止位為1,數(shù)據(jù)控制流為無;檢查連接是否可靠,可靠后,接入電源線,系統(tǒng)上電,同時按住“空格”鍵,進(jìn)入VIVI狀態(tài)。打開調(diào)試軟件AXD Debugger。點擊File|load image 加載文件ADS.axf(\實驗程序\HARDWARE\ADS\實驗一\ADS\ADS_data目錄下);點擊全速運(yùn)行,出現(xiàn)圖2

78、-1-13的界面:</p><p><b>  圖2-1-13</b></p><p>  在最后介紹調(diào)試按鈕,</p><p>  上圖,左起第一個是全速運(yùn)行,第二個是停止運(yùn)行,第三個跳入函數(shù)內(nèi)部,第四個單步執(zhí)行,第五個跳出函數(shù)。</p><p>  到此,開發(fā)環(huán)境就全部介紹完了,這是 ARM的開發(fā)基礎(chǔ),希望你有所收獲

79、。</p><p>  實驗二 基于ARM的匯編語言程序設(shè)計簡介</p><p><b>  一、實驗?zāi)康?lt;/b></p><p>  1. 了解ARM匯編語言的基本框架,學(xué)會使用ARM的匯編語言編程</p><p><b>  二、實驗內(nèi)容</b></p><p>  

80、1. 用匯編語言編寫一個簡單的應(yīng)用程序</p><p><b>  三、實驗設(shè)備</b></p><p>  1. EL-ARM-830+教學(xué)實驗箱,PentiumII以上的PC機(jī),仿真調(diào)試電纜,串口直連電纜。</p><p>  PC操作系統(tǒng)WIN98或WIN2000或WINXP, ADS1.2集成開發(fā)環(huán)境,仿真調(diào)試驅(qū)動程序</p&

81、gt;<p><b>  四、匯編語言簡介</b></p><p>  ARM匯編的一些簡要的書寫規(guī)范</p><p>  ARM匯編中,所有標(biāo)號必須在一行的頂格書寫,其后面不要添加“:”,而所有指令均不能頂格書寫。ARM匯編對標(biāo)識符的大小寫敏感,書寫標(biāo)號及指令時字母大小寫要一致。在ARM匯編中,ARM指令、偽指令、寄存器名等可以全部大寫或者全部小寫,但

82、不要大小寫混合使用。注釋使用“;”號,注釋的內(nèi)容由“;”號起到此行結(jié)束,注釋可以在一行的頂格書寫。</p><p>  詳細(xì)的匯編語句及規(guī)范請參照ARM匯編的相關(guān)書籍、文檔,也可參照我們提供的文檔。</p><p>  ARM匯編語言程序的基本結(jié)構(gòu)</p><p>  在ARM匯編語言程序中,是以程序段為單位來組織代碼。段是相對獨立的指令或數(shù)據(jù)序列,具有特定的名稱。

83、段可以分為代碼段的和數(shù)據(jù)段,代碼段的內(nèi)容為執(zhí)行代碼,數(shù)據(jù)段存放代碼運(yùn)行時所需的數(shù)據(jù)。一個匯編程序至少應(yīng)該有一個代碼段,當(dāng)程序較長時,可以分割為多個代碼段和數(shù)據(jù)段,多個段在程序編譯鏈接時最終形成一個可執(zhí)行文件。可執(zhí)行映像文件通常由以下幾部分構(gòu)成:</p><p>  ◆ 一個或多個代碼段,代碼段為只讀屬性。</p><p>  ◆ 零個或多個包含初始化數(shù)據(jù)的數(shù)據(jù)段,數(shù)據(jù)段的屬性為可讀寫。&l

84、t;/p><p>  ◆ 零個或多個不包含初始化數(shù)據(jù)的數(shù)據(jù)段,數(shù)據(jù)段的屬性為可讀寫。</p><p>  鏈接器根據(jù)系統(tǒng)默認(rèn)或用戶設(shè)定的規(guī)則,將各個段安排在存儲器中的相應(yīng)位置。源程序中段之間的相鄰關(guān)系與執(zhí)行的映象文件中的段之間的相鄰關(guān)系不一定相同。</p><p><b>  簡單的小例子</b></p><p>  下面是

85、一個代碼段的小例子</p><p>  AREA Init,CODE,READONLY</p><p><b>  ENTRY</b></p><p>  LDR R0, =0x3FF5000</p><p>  LDR R1, 0x0f</p><p>  STR

86、 R1, [R0]</p><p>  LDR R0, =0x3F50008</p><p>  LDR R1, 0x1</p><p>  STR R1, [R0]</p><p><b>  …</b></p><p><b>  …</b>

87、;</p><p><b>  END</b></p><p>  在匯編程序中,用AREA指令定義一個段,并說明定義段的相關(guān)屬性,本例中定義了一個名為Init的代碼段,屬性為只讀。ENTRY偽指令標(biāo)識程序的入口,程序的末尾為END指令,該偽指令告訴編譯器源文件的結(jié)束,每一個匯編文件都要以END結(jié)束。</p><p>  下面是一個數(shù)據(jù)段的小例

88、子</p><p>  AREA DataArea, DATA, NOINIT, ALIGN=2</p><p>  DISPBUFSPACE200</p><p>  RCVBUFSPACE200</p><p><b>  …</b></p><p><b>  …&

89、lt;/b></p><p>  DATA為數(shù)據(jù)段的標(biāo)識。</p><p><b>  五、實驗步驟</b></p><p>  1. 本實驗僅使用實驗教學(xué)系統(tǒng)的CPU板,串口。在進(jìn)行本實驗時,LCD電源開關(guān)、音頻的左右聲道開關(guān)、AD通道選擇開關(guān)、觸摸屏中斷選擇開關(guān)等均應(yīng)處在關(guān)閉狀態(tài)。</p><p>  2.在P

90、C機(jī)并口和實驗箱的CPU板上的JTAG接口之間,連接仿真調(diào)試電纜,以及串口間連接公/母接頭串口線。</p><p>  3.打開超級終端,配置串口的屬性(如COM1),配置波特率為115200,校驗位無,數(shù)據(jù)位為8,停止位為1,數(shù)據(jù)控制流為無;檢查連接是否可靠,可靠后,接入電源線,系統(tǒng)上電,同時按住“空格”鍵,進(jìn)入VIVI狀態(tài)。</p><p>  4.打開ADS1.2開發(fā)環(huán)境,從里面打開

91、\實驗程序\HARDWARE\ADS\實驗二\asm.mcp項目文件,進(jìn)行編譯。</p><p>  5.編譯通過后,進(jìn)入ADS1.2調(diào)試界面,加載\實驗程序\HARDWARE\ADS\實驗二\asm_Data\Debug中的映象文件程序映像asm.axf。</p><p>  6.在ADS調(diào)試環(huán)境下全速運(yùn)行映象文件,應(yīng)出現(xiàn)圖2-2-1界面:</p><p><

92、;b>  圖2-2-1</b></p><p>  本程序連續(xù)發(fā)送了128個字節(jié)的ASCII字符。</p><p>  下面分析一下程序的源碼。</p><p>  在UART前的部分為系統(tǒng)的初始化,這在后邊BOOTLOADER的章節(jié)里,要詳細(xì)介紹。UART后的程序為主程序,在程序中找到下面這部分的代碼,</p><p>&

93、lt;b>  …</b></p><p><b>  …</b></p><p>  ;//呼叫主應(yīng)用程序</p><p><b>  b UART</b></p><p><b>  UART</b></p><p>  ldr r0

94、, =GPHCON ;//設(shè)置GPIO(RxD0,TxD0引腳)</p><p>  ldr r1, =0x2afaaa</p><p>  str r1, [r0]</p><p>  ldr r0, =GPHUP</p><p>  ldr r1, =0x7ff</p><p>  str r1, [r0] ;

95、 //GPH[10:0]禁止上拉</p><p>  ldr r0, =UFCON0 ;//禁用FIFO</p><p>  ldr r1, =0x0</p><p>  str r1, [r0]</p><p>  ldr r0, =UMCON0 ;//禁用AFC</p><p>  ldr r1, =0x0&l

96、t;/p><p>  str r1, [r0]</p><p>  ldr r0, =ULCON0 ;//設(shè)置線寄存器</p><p>  ldr r1, =0x3 ; //正常模式,無奇偶校驗,一個停止位,8個數(shù)據(jù)位</p><p>  str r1, [r0]</p>

97、<p>  ldr r0, =UCON0 ;//設(shè)置Uart0控制器</p><p>  ldr r1, =0x245;//RX邊沿觸發(fā),TX電平觸發(fā),禁用延時中斷,使用RX 錯誤中斷,正常操作模式,中斷請求或表決模式</p><p>  str r1, [r0]</p><p>  ldr r0, =UBRDIV0 ;//設(shè)置波特率為115200<

98、;/p><p>  ldr r1, =0x1a ;//int(50700000 / 16 / 115200) - 1 = 26</p><p>  str r1, [r0]</p><p>  mov r1, #100</p><p><b>  Delay</b></p><p>  sub

99、r1, r1, #0x1</p><p><b>  bne Delay</b></p><p><b>  ;//開中斷</b></p><p>  ldr r0, =INTMSK</p><p>  ldr r1, [r0]</p><p>  and r1, r1, #

100、0xefffffff</p><p>  str r1, [r0]</p><p>  MOV R5 , #127 ; //設(shè)置要打印的字符的個數(shù)</p><p>  MOV R1 , #0x0 ; //設(shè)置要打印的字符</p><p><b>  LOOP </b></p><p&

101、gt;  LDR R3 , =UTRSTAT0</p><p>  LDR R2 , [R3]</p><p>  TST R2 ,#0x04 ; //判斷發(fā)送緩沖區(qū)是否為空</p><p>  BEQ LOOP ;//為空則執(zhí)行下邊的語句,不為空則跳轉(zhuǎn)到LOOP</p><p>  LDR R

102、0 , =UTXH0</p><p>  STR R1 ,[R0] ;//向數(shù)據(jù)緩沖區(qū)放置要發(fā)送的數(shù)據(jù)</p><p>  ADD R1, R1, #1</p><p>  SUB R5 ,R5, #0x01 ;//計數(shù)器減一</p><p>  CMP R5

103、,#0x0</p><p><b>  BNE LOOP</b></p><p>  LOOP2 B LOOP2 </p><p>  分析清楚之后,我們改變R1的數(shù)據(jù),換成其他的數(shù)據(jù),然后保存、編譯、調(diào)試。觀察結(jié)果,比如0xaa,0x01等等。</p><p>  實驗三 基于ARM的C語言程序設(shè)計簡介&l

104、t;/p><p><b>  一、實驗?zāi)康?lt;/b></p><p>  1.了解ARM C語言的基本框架,學(xué)會使用ARM的C語言編程</p><p><b>  二、實驗內(nèi)容</b></p><p>  1. 用C語言編寫一個簡單的應(yīng)用程序</p><p><b>  

105、三、實驗設(shè)備</b></p><p>  1. EL-ARM-830+教學(xué)實驗箱,PentiumII以上的PC機(jī),仿真調(diào)試電纜,串口直連電纜。</p><p>  2. PC操作系統(tǒng)WIN98或WIN2000或WINXP,ADS1.2集成開發(fā)環(huán)境,仿真調(diào)試驅(qū)動程序</p><p>  四、ARM C語言簡介與使用規(guī)則</p><p&g

106、t;  1. ARM使用C語言編程是大勢所趨</p><p>  在應(yīng)用系統(tǒng)的程序設(shè)計中,若所有的編程任務(wù)均由匯編語言來完成,其工作量巨大,并且不易移植。由于ARM的程序執(zhí)行速度較高,存儲器的存儲速度和存儲量也很高,因此,C語言的特點充分發(fā)揮,使得應(yīng)用程序的開發(fā)時間大為縮短,代碼的移植十分方便,程序的重復(fù)使用率提高,程序架構(gòu)清晰易懂,管理較為容易等等。因此,C語言的在ARM編程中具有重要地位。</p>

107、;<p>  2. ARM C語言程序的基本規(guī)則</p><p>  在ARM程序的開發(fā)中,需要大量讀寫硬件寄存器,并且盡量縮短程序的執(zhí)行時間的代碼一般使用匯編語言來編寫,比如ARM的啟動代碼,ARM的操作系統(tǒng)的移植代碼等,除此之外,絕大多數(shù)代碼可以使用C語言來完成。</p><p>  C語言使用的是標(biāo)準(zhǔn)的C語言,ARM的開發(fā)環(huán)境實際上就是嵌入了一個C語言的集成開發(fā)環(huán)境,

108、只不過這個開發(fā)環(huán)境和ARM的硬件緊密相關(guān)。</p><p>  在使用C語言時,要用到和匯編語言的混合編程。當(dāng)匯編代碼較為簡潔,則可使用直接內(nèi)嵌匯編的方法,否則,使用將匯編文件以文件的形式加入項目當(dāng)中,通過ATPCS的規(guī)定與C程序相互調(diào)用與訪問。</p><p>  ATPCS,就是ARM、Thumb的過程調(diào)用標(biāo)準(zhǔn)(ARM/Thumb Procedure Call Standard),它規(guī)

109、定了一些子程序間調(diào)用的基本規(guī)則。如寄存器的使用規(guī)則,堆棧的使用規(guī)則,參數(shù)的傳遞規(guī)則等。</p><p>  在C程序和ARM的匯編程序之間相互調(diào)用必須遵守ATPCS。而使用ADS的C語言編譯器編譯的C語言子程序滿足用戶指定的ATPCS的規(guī)則。但是,對于匯編語言來說,完全要依賴用戶保證各個子程序遵循ATPCS的規(guī)則。具體來說,匯編語言的子程序應(yīng)滿足下面3個條件:</p><p>  ● 在子

110、程序編寫時,必須遵守相應(yīng)的ATPCS規(guī)則;</p><p>  ● 堆棧的使用要遵守相應(yīng)的ATPCS規(guī)則;</p><p>  ● 在匯編編譯器中使用-atpcs選項。</p><p>  基本的ATPCS規(guī)定,請詳見提供的相關(guān)PDF文檔。</p><p><b>  匯編程序調(diào)用C程序</b></p>&

111、lt;p>  匯編程序的設(shè)置要遵循ATPCS規(guī)則,保證程序調(diào)用時參數(shù)正確傳遞。</p><p>  在匯編程序中使用IMPORT偽指令聲明將要調(diào)用的C程序函數(shù)。</p><p>  在調(diào)用C程序時,要正確設(shè)置入口參數(shù),然后使用BL調(diào)用。</p><p><b>  C程序調(diào)用匯編程序</b></p><p>  匯

112、編程序的設(shè)置要遵循ATPCS規(guī)則,保證程序調(diào)用時參數(shù)正確傳遞。</p><p>  在匯編程序中使用EXPORT偽指令聲明本子程序,使其他程序可以調(diào)用此子程序。</p><p>  在C語言中使用extern關(guān)鍵字聲明外部函數(shù)(聲明要調(diào)用的匯編子程序)。</p><p>  在C語言的環(huán)境內(nèi)開發(fā)應(yīng)用程序,一般需要一個匯編的啟動程序,從匯編的啟動程序,跳到C語言下的主

113、程序,然后,執(zhí)行C程序,在C環(huán)境下讀寫硬件的寄存器,一般是通過宏調(diào)用,在每個項目文件的Startup2410/INC目錄下都有一個2410addr.h的頭文件,那里面定義了所有關(guān)于2410的硬件寄存器的宏,對宏的讀寫,就能操作2410的硬件。</p><p>  具體的編程規(guī)則同標(biāo)準(zhǔn)C語言。</p><p>  3. 簡單的小例子</p><p>  下面是一個簡

114、單的小例子</p><p>  IMPORT Main</p><p>  AREA Init ,CODE, READONLY;</p><p><b>  ENTRY </b></p><p>  LDR R0, =0x01d00000</p><p>  LDR R1, =0

115、x245</p><p>  STR R1 , [R0] ;把0x245放到地址0X01D00000 </p><p>  BL Main ;跳轉(zhuǎn)到Main()函數(shù)處的C/C++程序</p><p>  END ;標(biāo)識匯編程序結(jié)束

116、</p><p>  以上是一個簡單的程序,先寄存器初始化,然后跳轉(zhuǎn)到Main()函數(shù)標(biāo)識的C/C++代碼處,執(zhí)行主要任務(wù),此處的 Main是聲明的C語言中的Main()函數(shù)。</p><p>  對宏的預(yù)定義,在2410addr.h中已定義,如:</p><p>  #define rGPGCON (*(volatile unsigned *)0x5600006

117、0) //Port G control</p><p>  #define rGPGDAT (*(volatile unsigned *)0x56000064) //Port G data</p><p>  #define rGPGUP (*(volatile unsigned *)0x56000068) //Pull-up control G</p><p&g

118、t;<b>  在程序中實現(xiàn),</b></p><p><b>  for(;;){</b></p><p>  if(flag==0){</p><p>  for(i=0;i<100000;i++); //延時</p><p>  rGPGCON = rGPGCON & 0xff

119、f0ffff | 0x00050000;</p><p>  rGPGDAT = rGPGDAT & 0xeff | 0x200;</p><p>  for(i=0;i<100000;i++); //延時</p><p><b>  flag = 1;</b></p><p><b>  } e

溫馨提示

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

評論

0/150

提交評論