版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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的匯編語言程序設計簡介40</p><p> 實驗三 基于ARM的C語言程序設計簡介45</p><p> 實驗四 基于ARM的硬件BOOT程序的基本設計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> 實驗十一 鍵盤接口和七段數碼管的控制實驗86
4、</p><p> 實驗十二 LCD的顯示實驗88</p><p> 實驗十三 觸摸屏實驗101</p><p> 實驗十四 音頻錄放實驗109</p><p> 實驗十五 USB設備收發(fā)數據實驗116</p><p> 實驗十六 SD卡測試實驗120</p><p&g
5、t; 實驗十七 PS2接口鍵盤鼠標實驗122</p><p> 附:燒寫程序Jflash-s3c2410的使用125</p><p> 第3章 基于uCOSII操作系統(tǒng)的ARM系統(tǒng)實驗127</p><p> 實驗一 uCOSII的內核在ARM處理器上的移植實驗127</p><p> 實驗二 基于uCOSII的串口驅
6、動編寫實驗137</p><p> 實驗三 基于uCOSII的LCD驅動編寫實驗142</p><p> 實驗四 基于uCOSII的鍵盤驅動編寫實驗145</p><p> 實驗五 基于uCOSII的小型GUI的應用程序編寫實驗148</p><p> 第4章 基于linux操作系統(tǒng)的ARM系統(tǒng)實驗164</p&
7、gt;<p> 實驗一 Linux的實驗環(huán)境的搭建164</p><p> 實驗二 BootLoader引導程序170</p><p> 實驗三 linux的移植、內核、文件系統(tǒng)的生成與下載176</p><p> 實驗四 linux驅動程序的編寫184</p><p> 實驗五 linux應用程序的
8、編寫190</p><p> 實驗六 基于linux的鍵盤驅動程序的編寫192</p><p> 實驗七 基于linux的LCD驅動程序的編寫200</p><p> 實驗八 基于linux的鍵盤應用程序的編寫207</p><p> 實驗九 基于linux的基本繪圖應用程序的編寫210</p><
9、;p> 實驗十 基于linux的跑馬燈應用程序的編寫216</p><p> 實驗十一 利用實驗箱上網的實驗218</p><p> 實驗十二 USB播放mp3的實驗219</p><p> 第1章 EL-ARM-830+實驗系統(tǒng)的資源介紹</p><p> ARM實驗箱硬件資源概述</p><
10、;p> EL-ARM-830+型教學實驗系統(tǒng)屬于一種綜合的教學實驗系統(tǒng),該系統(tǒng)采用了目前在國內普遍認同的ARM920T核,32位微處理器,實現了多模塊的應用實驗。它是集學習、應用編程、開發(fā)研究于一體ARM實驗教學系統(tǒng)。用戶可根據自己的需求選用不同類型的CPU適配板,兼容ARM7與ARM9,而不需要改變任何配置,同時,實驗系統(tǒng)上的Tech_V總線能夠拓展較為豐富的實驗接口板。用戶在了解Tech_V標準后,更能研發(fā)出不同用途的實驗接
11、口板。除此之外,在實驗板上有豐富的外圍擴展資源(數字、模擬信號發(fā)生器,數字量IO輸入輸出,語音編解碼、人機接口等單元),可以完成ARM的基礎實驗、算法實驗和數據通信實驗、以太網實驗。</p><p> 圖1-1-1 EL-ARM-830+實驗教學系統(tǒng)的底箱功能框圖</p><p> 1.1 實驗系統(tǒng)的硬件資源總覽</p><p> ☆ CPU單元:內核ARM9
12、20T,芯片三星的S3C2410,工作頻率最高202MHz;</p><p> ☆ 動態(tài)存儲器:64MB,芯片HY57V561620;</p><p> ☆ 海量存儲器:32MB,芯片K9F5608;</p><p> ☆ USB單元: 1個主接口,1個設備接口;</p><p> ☆ 網絡單元: 10/100M以太網,芯
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數碼管;芯片HD7279A;</p><p> 數字輸入輸出單元:8個拔碼開關及8個LED發(fā)光管;</p><p> A/D轉換單元:芯片自帶的8路10位A/D,滿量
15、程2.5V;</p><p> 信號源單元: 方波輸出;</p><p> 標準鍵盤及PS2鼠標接口;</p><p> 達盛公司的Tech_V總線接口;</p><p> 達盛公司的E_Lab總線接口;</p><p> 1個設備接口,芯片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的以太網控制芯片,完成網絡訪問功能,一個UART接口,完成串口通信,最高波特率率為115200bps, 一個RTC實時時鐘,一個5V轉3.3V和1.8V的電源管理模塊,一個20針的JTAG調試接口。具
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板上由于其內核采用1.8V,I/O接口采用3.3V供電,因此需要將通用的5V轉換成1.8V和3.3V。圖1-1-2為使用LM1117電源轉換芯片把5V轉成3.3V和1.8V的轉換電路。</p><p><b> 圖1-1-2</b></p><p> 2)NAND_FLASH海量存儲器單元</p&
21、gt;<p> 該存儲單元在板卡上標號為K9F5608U,選用32MB字節(jié)的K9F5608U,8位數據總線,該芯片由S3C2410的相關引腳直接控制, CPU分配給它的地址空間為0x0000 0000—0x01ff ffff。啟動代碼部分則放在從0x0000 0000開始的地址空間內。系統(tǒng)將CPU的引腳OM[1:0]設置成00b,當核心板上電復位時,系統(tǒng)首先將Nand_Flash開始的0~4K的程序映射到Stepping
22、Stone區(qū),然后從那里開始執(zhí)行。Nand_Flash可以存放數據和程序,但需要特定的指令進行讀寫。</p><p> 3)同步動態(tài)存儲器單元</p><p> 該存儲單元在板卡上標號為HY57V561620。選用兩片8MB字節(jié)的 HY57V561620,32位數據總線。片選NSCS6接兩片HY57V561620單元作為片選信號,CPU分配給這兩片HY57V561620單元的地址空間分
23、別為0x3000 0000 - 0x31ff ffff, 0x3200 0000-0x33ffffff,也就是S3C2410CPU的Bank6區(qū)和Bank7區(qū)。</p><p> 4)RS232串口單元</p><p> 該存儲單元在板卡上標號為UART0(CROSS/F),選用了MAX3232電壓轉換芯片,進行PC機與CPU板的串口通訊。它采用收、發(fā)、地,三線連接,無握手信號。通過S
24、3C2410內部的串口0控制器進行控制。</p><p> 5)主/從USB單元</p><p> 該單元在板卡上標號為USB-HOST和USB-DEVICE,通過S3C2410內部的USB主控制器和USB設備控制器進行控制。</p><p><b> 6)網絡單元</b></p><p> 該存儲單元在板卡上標
25、號為AX88796,選用了ASIX公司的AX88796網絡芯片,傳輸速率為10/100M自適應,16位數據總線傳輸,片選NGCS2接網絡單元。CPU分配給AX88796單元的地址空間為0x1000 0000—0x1800 0000,也就是S3C2410CPU的bank2區(qū)。S3C2410CPU的外部中斷ExINT2響應該中斷。RJ45插座上面自帶數據傳輸的指示燈。</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,聯合測試行動小組)是一種國際標準測試協(xié)議,主要用于芯片內部測試及對系統(tǒng)進行仿真、調試,JTAG技術是一種嵌入式調試技術,它在芯
27、片內部封裝了專門的測試電路TAP(Test Access Port,測試訪問口),通過專用的JTAG測試工具對內部節(jié)點進行測試。目前大多數比較復雜的器件都支持JTAG協(xié)議,如ARM、DSP、FPGA器件等。標準的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為測試模式選擇、測試時鐘、測試數據輸入和測試數據輸出。</p><p> 通過JTAG接口,可對芯片內部的所有部件進行訪問,因而是開發(fā)調試嵌入式系
28、統(tǒng)的一種簡潔高效的手段。目前JTAG接口的連接有兩種標準,即14針接口和20針接口,EL-ARM-830+核心板上使用的是20針接口。接口定義見表1-6。</p><p><b> 表1-6</b></p><p> 在核心板上,JTAG的第1腳用一黃色的方框標注,當串口、USB口、網絡口向左擺放時,第1腳下面的管腳為第2腳,它左面的管腳依次為3,5,…,19;第
29、2腳左面的管腳依次為4,6,…,20。</p><p> 8)核心CPU板上的外接接口單元</p><p> 在CPU板上有INTERFACE A、INTERFACE B、INTERFACE C,3個外擴接口單元,現對這三個接口的引腳加以說明。</p><p> INTERFACE B:INTERFACE B擴展信號是地址、數據總線和讀寫、片選信號:見表1-7
30、</p><p><b> 表1-7</b></p><p> INTERFACE A:INTERFACE A擴展信號外設信號接口:見表1-8。</p><p><b> 表1-8</b></p><p> INTERFACE C用來擴展INTERFACE A、INTERFACE B沒有擴展
31、的CPU信號,如AD輸入、液晶、串口等和擴展子板間的通訊信號。見表1-9。</p><p><b> 表1-9</b></p><p> 1.3 實驗箱底板的資源介紹</p><p><b> 1. 概述</b></p><p> 實驗箱底板上的資源豐富,具體的實驗單元有:LCD模塊,觸摸屏
32、模塊,語音單元模塊,串口2模塊,USB設備模塊,電源模塊,數字輸入輸出模塊,鍵盤模塊,CPLD燒寫模塊,鍵盤數碼管模塊,SD(MMC)卡模塊,A/D轉換模塊,信號源發(fā)生器模塊。以及PS2鼠標鍵盤接口, Tech_V總線接口,E_LAB總線接口等等。</p><p> 實驗箱上的底板詳細具體資源見表1-10。</p><p><b> 表1-10</b></p
33、><p> 2. 底板資源的具體介紹</p><p> 1)模擬輸入輸出接口單元</p><p> 8bit的數字量輸入(由八個拔碼開關產生或插孔),通過SI0---SI7跳線位控制連接至74LS244緩沖;8bit的數字量輸出通過74LS273鎖存輸出(八個LED燈顯示及插孔)。輸入開關拔至L處,表示輸入一個2進制的“0”值,至H處,表示輸入一個2進制的“1”值
34、, I0—I7為244輸入口,O0—O7為273輸出口。</p><p> 2)鍵盤數碼管模塊 </p><p> 鍵盤接口是由芯片HD7279A控制的,HD7279A是一片具有串行接口的,可同時驅動8位共陰式數碼管或(64只獨立LED)的智能顯示驅動芯片,該芯片同時還可連接多達64鍵的鍵盤矩陣,單片即可完成LED顯示,鍵盤接口的全部功能。HD7279A內部含有譯碼器,可直接接受BCD
35、碼或16進制碼,并同時具有2種譯碼方式。此外,還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。HD7279A具有片選信號,可方便地實現多于8位的顯示或多于64鍵的鍵盤接口。在該實驗系統(tǒng)中,僅提供了16個鍵。</p><p><b> 3)USB設備模塊</b></p><p> USB設備模塊,采用了飛利浦的USB設備控制芯片PDIUSBD12,該芯片遵從
36、USB1.1規(guī)范,最高通信率12Mbps,該單元位于實驗箱的左下角。D3為通信狀態(tài)指示燈。使用外部中斷4來響應中斷請求。</p><p><b> 4)串口1模塊</b></p><p> 串口1模塊,采用了美信的MAX3232CPE芯片,通過它可以把PC的電信號轉換成實驗箱可以使用的信號,它的最高串行通信波特率為115200bps.</p><
37、;p><b> 5)音頻模塊</b></p><p> 語音的模擬信號的編解碼采用了UDA1341TS芯片。該芯片有兩個串行同步變換通道、D/A轉換前的差補濾波器和A/D變換后的濾波器。其他部分提供片上時序和控制功能。芯片的各種應用配置可以通過芯片的三根線,由串行通信編程來實現。主要包括:復位、節(jié)電模式、通信協(xié)議、串行時鐘速率、信號采樣速率、增益控制和測試模式、音質特性。最大采樣速
38、率48kb/s。</p><p> 語音處理單元由UDA1341TS模塊、輸出功率模塊組成。語音的模擬信號經過偏置和濾波處理后輸入到語音的編解碼芯UDA1341TS中,UDA1341TS以IIS的語音格式送入S3C2410中,S3C2410可以處理也可以不處理該信號,把它保存起來,也可用DMA控制而不經過CPU處理,直接實時的采集,然后實時的播放出去。</p><p> 音頻信號通過D
39、/A轉換后輸出,經過一次功率放大,然后可以推動功率為0.4W的板載揚聲器,也可以接耳機輸出。如圖1-3。</p><p> 語音處理單元原理框圖</p><p><b> 圖1-3</b></p><p> 語音處理單元接口說明:</p><p> LINE_IN:音頻輸入端子,可輸入CD、聲卡、MP3等語音信號
40、。</p><p> MIC:音頻輸入端子,麥克風等語音信號。</p><p> SPEAKER:音頻輸出端子,可接耳機、音箱。</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的內部集成的控制器,LCD屏選用的是8.4吋,6400X480像素,65536色的彩屏。電源
42、操作范圍寬(2.7V to 5.5V);低功耗設計可滿足產品的省電要求。</p><p> 其中,可調變位器VR2用于調節(jié)LCD屏色彩的對比度,產品出廠時,已設定成在室溫下較好的對比度,當因溫度低或高等因素顯示不正常時,可適當調節(jié)VR2到合適的色彩。一般請不要調整。</p><p><b> “VR2”:</b></p><p><b
43、> 表1-13</b></p><p> “LCD_ON/OFF”按鍵,控制著LCD屏的電源,是電源的開關。</p><p><b> 7)觸摸屏模塊</b></p><p> S3C2410內部具有觸摸屏控制器,在底板跳線是ARM9的時候,觸摸屏直接與S3C2410連接,由CPU直接控制。</p>&l
44、t;p> 8)SD(MMC)卡單元</p><p> SD(MMC)卡單元,采用了華邦公司的W86L388D的SD(MMC)卡的控制器,它的最高時鐘率為25MHz,能夠使用1線或4線傳輸數據及指令,它通過初始化配置能夠使用MMC卡。CPU通過給其相應的寄存器中寫入控制命令,來驅動它讀寫SD(MMC)卡,從SD(MMC)卡中讀取的數據通過與CPU相連的16位數據總線,發(fā)送給CPU處理。SD(MMC)卡與C
45、PU的是通過中斷方式來進行應答的,W86L388D的中斷控制器則顯示SD(MMC)卡的各種中斷請求,CPU只須讀取其狀態(tài),就能判斷對SD(MMC)卡進行如何處理。其原理如圖1-4。D12,通信狀態(tài)指示燈,D13卡識別指示燈。</p><p><b> 圖1-4</b></p><p><b> 9)A/D轉換單元</b></p>
46、<p> A/D轉換單元,采用S3C2410內置的A/D轉換器,它包含一個8路模擬輸入混合器,12位模數轉換。最大轉換速率:100KSPS,輸入電壓范圍:0-2.5V輸入帶寬: 0-100 Hz(無采樣和保持電路),低的電源消耗。在本實驗系統(tǒng)中,模擬輸入信號經過降壓、偏置處理后輸入A/D轉換器,然后轉換的數字量給S3C2410處理。如圖1-5。</p><p> 圖1-5模數單元原理框圖</
47、p><p> 模數轉換單元撥碼開關說明見表1-13:</p><p><b> SW5:撥碼開關</b></p><p><b> 表1-13</b></p><p><b> 10)信號源單元</b></p><p> 信號源單元使用TI公司的T
48、LC2272,是雙通道運算放大器,可以產生方波。</p><p><b> 11)PS2單元</b></p><p> PS2單元中S5為復位鍵,KEYBOARD接口為鍵盤接口,MOUSE為鼠標接口。D1為數據傳輸指示燈??刂菩酒瑸锳T2051。</p><p><b> 12)CPLD單元</b></p>
49、;<p> 由于實驗箱上的資源眾多,幾乎每一個設備資源都要使用片選信號或中斷信號或一些串口的信號,以及一些寄存器的地址等等,這樣一來,S3C2410的I/O資源是不能滿足的,因此該實驗箱通過加入了一片CPLD芯片,用來完成各資源所需的地址譯碼,片選信號,以及一些高低電平的模擬。</p><p> CPLD單元使用S3C2410的片選是NGCS4,地址是0x20000000—0x28000000;
50、由于底板上大多的資源都通過CPLD的地址譯碼,進行片選電平的產生,以及模擬高低電平的產生,所以,應給CPLD的地址里寫入相應的數據以產生相應的信號。表1-21列出了底板中所需信號的地址。</p><p> #define clrcs1 (*(volatile unsigned *)0x20000000) = 0x01;</p><p> #define setcs1 (
51、*(volatile unsigned *)0x20000004) = 0x02;</p><p> 利用宏定義來代替置高、置低;給相應的地址里寫1,表示該CPLD的相應引腳輸出低電平,給相應的地址里寫2,表示該CPLD的相應引腳輸出高電平。有的地址需要寫入8位數據。</p><p><b> 表1-21</b></p><p> 具體的
52、應用,請詳見源碼程序。</p><p><b> 12)其它接口說明</b></p><p> 電源單元:為系統(tǒng)提供+5V、+12V、-12V、+3.3V電源,其中</p><p><b> 表1-22</b></p><p> 在底板上,留出了四列插孔,它們是供外部擴展所用。具體功能見表1
53、-23。</p><p><b> 表1-23</b></p><p> 在信號擴展單元處,又擴展了PS2鍵盤鼠標接口</p><p> 在此對底板上的設備所使用的中斷作一總結。見表1-24。</p><p><b> 表1-24</b></p><p> SW4:
54、撥碼開關,ARM系列的CPU板卡選擇。</p><p> 1.4 Tech_V總線的介紹</p><p> 在實驗箱的左中部,有兩條擴展接口,J3和J5,在深入掌握了ARM的系統(tǒng)之后,可以進一步開發(fā)屬于自己的具體的開發(fā)板,例如,在此總線上,我公司已經研制開發(fā)了GPS/GPRS模塊卡,高精度的A/D,D/A采集卡,靜態(tài)圖像處理卡等等。現就Tech_V 總線的接口定義說明見表1-26,1-
55、27。</p><p> J3:J3擴展信號是地址、數據總線和讀寫、片選信號:見表1-26</p><p><b> 表1-26</b></p><p> J5:J5擴展信號外設信號接口:見表1-27。</p><p><b> 表1-27</b></p><p>
56、 1.5 E_Lab總線的介紹</p><p> 在實驗箱的左下部,有一對擴展接口,JP3和JP4,稱為E_Lab總線接口。在深入掌握了ARM的系統(tǒng)之后,可以進一步開發(fā)屬于自己的具體的開發(fā)板,現就E_Lab 總線的接口定義說明見表1-28,1-29。值得注意的是E_Lab總線接口使用雙排插座,每個插座并列的兩個引腳的信號定義是相同的。</p><p> JP1:JP1擴展信號是地址總線
57、和讀寫、片選信號:見表1-28</p><p> 表1-28底板JP1插座引腳信號</p><p> JP2:JP2擴展信號是外設信號(數據)接口:見表1-29。</p><p> 表1-29 底板JP2插座引腳信號</p><p> 綜上所述,本章介紹了該系統(tǒng)的硬件資源,看完本章內容,應該對實驗系統(tǒng)有一個基本的了解,在后面的幾章中將
58、會結合光盤資料給出的實驗程序詳細介紹每個單元在實驗中的具體應用。</p><p> 第2章 基于ARM系統(tǒng)資源的實驗</p><p> 當進行嵌入式系統(tǒng)開發(fā)時,選擇合適的開發(fā)工具可以加快開發(fā)進度、節(jié)省開發(fā)成本。因此一套含有編輯軟件、編譯軟件、匯編軟件、連接軟件、調試軟件、工程管理及函數庫的集成開發(fā)環(huán)境(IDE)是必不可少的。</p><p> 當今在ARM領域
59、,被多數嵌入式開發(fā)人員使用的集成開發(fā)環(huán)境有ADS, ADS為ARM公司推出的新一代ARM集成開發(fā)工具,最新版本為ADS1.2。這兩種開發(fā)工具都是ARM公司為了方便用戶開發(fā)使用ARM內核芯片而推出的,目前被廣泛應用。ADS調試時在不需要仿真器的情況下,需要一根JTAG調試電纜就可以了,但它在調試的時候占用CPU的資源,調試的穩(wěn)定性稍差,成本低,比較適合學生實驗使用。ADS調試時使用外接仿真器的情況下,其在調試時不占用CPU的資源,穩(wěn)定性好
60、,但是成本高,適合用于科研教學和嵌入式的產品開發(fā)。</p><p> 在本章中主要是針對ARM的實驗開發(fā)環(huán)境、ARM的匯編、高級語言的使用,以及針對三星的S3C2410的硬件資源進行一系列的HARDWARE。這其中包括ADS 1.2 開發(fā)環(huán)境創(chuàng)建與簡要介紹、基于ARM匯編語言程序設計、基于ARM的C語言程序設計 基于ARM的硬件boot程序設計、ARM的I/O接口實驗、ARM的中斷實驗 ARM的DMA實驗、
61、ARM的UART實驗、ARM的A/D接口實驗、七段數碼管和鍵盤的控制實驗、LCD的顯示實驗、觸摸屏實驗、音頻錄放實驗、USB設備收發(fā)數據實驗、以太網傳輸實驗、SD卡檢測實驗,PS2鍵盤鼠標實驗。</p><p> 這些實驗是脫離操作系統(tǒng)的HARDWARE,通過此類實驗可以了解和學習ARM硬件的架構和軟件的啟動過程、運行過程,真正理解ARM芯片的應用。</p><p> 實驗一 ADS
62、1.2開發(fā)環(huán)境創(chuàng)建與簡要介紹</p><p><b> 一、實驗目的</b></p><p> 1. 熟悉ADS1.2開發(fā)環(huán)境,正確使用仿真調試電纜進行編譯、下載、調試。</p><p><b> 二、實驗內容</b></p><p> 1. 學習ADS1.2開發(fā)環(huán)境</p>
63、<p><b> 三、實驗設備</b></p><p> 1. EL-ARM-830+教學實驗箱,PentiumII以上的PC機,仿真調試電纜。</p><p> PC操作系統(tǒng)WIN98或WIN2000或WINXP,ADS1.2集成開發(fā)環(huán)境,仿真調試電纜驅動程序</p><p><b> 四、實驗步驟</
64、b></p><p> ADS1.2下建立工程</p><p> 1.運行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版本進行參數設置。</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í)行的代碼的初始開關。</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欄中設定程序的代碼段地址,以及數據使用的地址。圖中的RO Base欄中填寫程序代碼存放的起始地址,RW Base欄中填寫程序數據存放的起始地址。該地址是屬于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中運行,則可在0x30000000—0x33ffffff中選值,這是64M SDRAM的地址,但是這里用的是起始地址,所以必須把你的程序空間給留出來,并且還要留出足夠的程序使用的數據空間,而且還必須是4字節(jié)對齊的地址(ARM狀態(tài))。通常入口點Image entry point 為0x30000000,ro_base也為
71、0x30000000。</p><p> 在Layout欄中,如圖2-1-9,在Place at beginning of image框內,需要填寫項目的入口程序的目標文件名,如,整個工程項目的入口程序是2410init.s,那么應在Object/Symbol處填寫其目標文件名2410init.o,在Section處填寫程序入口的起始段標號。它的作用是通知編譯器,整個項目的開始運行,是從該段開始的。</p
72、><p><b> 圖2-1-9</b></p><p> 7. 在如圖2-1-10中,即在Debug Setting對話框中點擊左欄的ARM fromELF項,在Output file name欄中設置輸出文件名*.bin,前綴名可以自己取,在Output format 欄中選擇Plain binary,這是設置要下載到flash中的二進制文件。圖2-1-10中使
73、用的是test.bin.</p><p><b> 圖2-1-10</b></p><p> 8. 到此,在ADS1.2中的基本設置已經完成,可以將該新建的空的項目文件作為模板保存起來。首先,要將該項目工程文件改一個合適的名字,如S3C2410 ARM.mcp等,然后,在ADS1.2軟件安裝的目錄下的Stationary 目錄下新建一個合適的模板目錄名,如,S3C
74、2410 ARM Executable Image,再將剛剛設置完的S3c2410 ARM.mcp項目文件存放到該目錄下即可。這樣,就能在圖2-1-10中看到該模板。</p><p> 9.新建項目工程后,就可以執(zhí)行菜單Project|Add Files把和工程所有相關的文件加入,ADS1.2不能自動進行文件分類,用戶必須通過Project|Create Group來創(chuàng)建文件夾,然后把加入的文件選中,移入文件夾
75、。或者鼠標放在文件填加區(qū),右鍵點擊,即出!如圖2-1-11</p><p><b> 圖2-1-11</b></p><p> 先選Add Files,加入文件,再選Create Group,創(chuàng)建文件夾,然后把文件移入文件夾內。讀者可根據自己習慣,更改Edit|Preference窗口內關于文本編輯的顏色、字體大小,形狀,變量、函數的顏色等等設置。如圖2-1-12
76、。</p><p><b> 圖2-1-12</b></p><p> 2. ADS1.2下仿真、調試</p><p> 在ADS1.2下進行仿真調試,首先需要一根仿真調試電纜。其驅動程序的安裝和使用在光盤中的\實驗軟件\ARM9_RDI中,里面有相關的文檔。在連上調試電</p><p> 纜后,用直連線串口線將
77、CPU板上的串口和PC機的口相連,打開超級終端,配置串口的屬性(如COM1),配置波特率為115200,校驗位無,數據位為8,停止位為1,數據控制流為無;檢查連接是否可靠,可靠后,接入電源線,系統(tǒng)上電,同時按住“空格”鍵,進入VIVI狀態(tài)。打開調試軟件AXD Debugger。點擊File|load image 加載文件ADS.axf(\實驗程序\HARDWARE\ADS\實驗一\ADS\ADS_data目錄下);點擊全速運行,出現圖2
78、-1-13的界面:</p><p><b> 圖2-1-13</b></p><p> 在最后介紹調試按鈕,</p><p> 上圖,左起第一個是全速運行,第二個是停止運行,第三個跳入函數內部,第四個單步執(zhí)行,第五個跳出函數。</p><p> 到此,開發(fā)環(huán)境就全部介紹完了,這是 ARM的開發(fā)基礎,希望你有所收獲
79、。</p><p> 實驗二 基于ARM的匯編語言程序設計簡介</p><p><b> 一、實驗目的</b></p><p> 1. 了解ARM匯編語言的基本框架,學會使用ARM的匯編語言編程</p><p><b> 二、實驗內容</b></p><p>
80、1. 用匯編語言編寫一個簡單的應用程序</p><p><b> 三、實驗設備</b></p><p> 1. EL-ARM-830+教學實驗箱,PentiumII以上的PC機,仿真調試電纜,串口直連電纜。</p><p> PC操作系統(tǒng)WIN98或WIN2000或WINXP, ADS1.2集成開發(fā)環(huán)境,仿真調試驅動程序</p&
81、gt;<p><b> 四、匯編語言簡介</b></p><p> ARM匯編的一些簡要的書寫規(guī)范</p><p> ARM匯編中,所有標號必須在一行的頂格書寫,其后面不要添加“:”,而所有指令均不能頂格書寫。ARM匯編對標識符的大小寫敏感,書寫標號及指令時字母大小寫要一致。在ARM匯編中,ARM指令、偽指令、寄存器名等可以全部大寫或者全部小寫,但
82、不要大小寫混合使用。注釋使用“;”號,注釋的內容由“;”號起到此行結束,注釋可以在一行的頂格書寫。</p><p> 詳細的匯編語句及規(guī)范請參照ARM匯編的相關書籍、文檔,也可參照我們提供的文檔。</p><p> ARM匯編語言程序的基本結構</p><p> 在ARM匯編語言程序中,是以程序段為單位來組織代碼。段是相對獨立的指令或數據序列,具有特定的名稱。
83、段可以分為代碼段的和數據段,代碼段的內容為執(zhí)行代碼,數據段存放代碼運行時所需的數據。一個匯編程序至少應該有一個代碼段,當程序較長時,可以分割為多個代碼段和數據段,多個段在程序編譯鏈接時最終形成一個可執(zhí)行文件??蓤?zhí)行映像文件通常由以下幾部分構成:</p><p> ◆ 一個或多個代碼段,代碼段為只讀屬性。</p><p> ◆ 零個或多個包含初始化數據的數據段,數據段的屬性為可讀寫。&l
84、t;/p><p> ◆ 零個或多個不包含初始化數據的數據段,數據段的屬性為可讀寫。</p><p> 鏈接器根據系統(tǒng)默認或用戶設定的規(guī)則,將各個段安排在存儲器中的相應位置。源程序中段之間的相鄰關系與執(zhí)行的映象文件中的段之間的相鄰關系不一定相同。</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指令定義一個段,并說明定義段的相關屬性,本例中定義了一個名為Init的代碼段,屬性為只讀。ENTRY偽指令標識程序的入口,程序的末尾為END指令,該偽指令告訴編譯器源文件的結束,每一個匯編文件都要以END結束。</p><p> 下面是一個數據段的小例
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為數據段的標識。</p><p><b> 五、實驗步驟</b></p><p> 1. 本實驗僅使用實驗教學系統(tǒng)的CPU板,串口。在進行本實驗時,LCD電源開關、音頻的左右聲道開關、AD通道選擇開關、觸摸屏中斷選擇開關等均應處在關閉狀態(tài)。</p><p> 2.在P
90、C機并口和實驗箱的CPU板上的JTAG接口之間,連接仿真調試電纜,以及串口間連接公/母接頭串口線。</p><p> 3.打開超級終端,配置串口的屬性(如COM1),配置波特率為115200,校驗位無,數據位為8,停止位為1,數據控制流為無;檢查連接是否可靠,可靠后,接入電源線,系統(tǒng)上電,同時按住“空格”鍵,進入VIVI狀態(tài)。</p><p> 4.打開ADS1.2開發(fā)環(huán)境,從里面打開
91、\實驗程序\HARDWARE\ADS\實驗二\asm.mcp項目文件,進行編譯。</p><p> 5.編譯通過后,進入ADS1.2調試界面,加載\實驗程序\HARDWARE\ADS\實驗二\asm_Data\Debug中的映象文件程序映像asm.axf。</p><p> 6.在ADS調試環(huá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é)里,要詳細介紹。UART后的程序為主程序,在程序中找到下面這部分的代碼,</p><p>&
93、lt;b> …</b></p><p><b> …</b></p><p> ;//呼叫主應用程序</p><p><b> b UART</b></p><p><b> UART</b></p><p> ldr r0
94、, =GPHCON ;//設置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 ;//設置線寄存器</p><p> ldr r1, =0x3 ; //正常模式,無奇偶校驗,一個停止位,8個數據位</p><p> str r1, [r0]</p>
97、<p> ldr r0, =UCON0 ;//設置Uart0控制器</p><p> ldr r1, =0x245;//RX邊沿觸發(fā),TX電平觸發(fā),禁用延時中斷,使用RX 錯誤中斷,正常操作模式,中斷請求或表決模式</p><p> str r1, [r0]</p><p> ldr r0, =UBRDIV0 ;//設置波特率為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 ; //設置要打印的字符的個數</p><p> MOV R1 , #0x0 ; //設置要打印的字符</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í)行下邊的語句,不為空則跳轉到LOOP</p><p> LDR R
102、0 , =UTXH0</p><p> STR R1 ,[R0] ;//向數據緩沖區(qū)放置要發(fā)送的數據</p><p> ADD R1, R1, #1</p><p> SUB R5 ,R5, #0x01 ;//計數器減一</p><p> CMP R5
103、,#0x0</p><p><b> BNE LOOP</b></p><p> LOOP2 B LOOP2 </p><p> 分析清楚之后,我們改變R1的數據,換成其他的數據,然后保存、編譯、調試。觀察結果,比如0xaa,0x01等等。</p><p> 實驗三 基于ARM的C語言程序設計簡介&l
104、t;/p><p><b> 一、實驗目的</b></p><p> 1.了解ARM C語言的基本框架,學會使用ARM的C語言編程</p><p><b> 二、實驗內容</b></p><p> 1. 用C語言編寫一個簡單的應用程序</p><p><b>
105、三、實驗設備</b></p><p> 1. EL-ARM-830+教學實驗箱,PentiumII以上的PC機,仿真調試電纜,串口直連電纜。</p><p> 2. PC操作系統(tǒng)WIN98或WIN2000或WINXP,ADS1.2集成開發(fā)環(huán)境,仿真調試驅動程序</p><p> 四、ARM C語言簡介與使用規(guī)則</p><p&g
106、t; 1. ARM使用C語言編程是大勢所趨</p><p> 在應用系統(tǒng)的程序設計中,若所有的編程任務均由匯編語言來完成,其工作量巨大,并且不易移植。由于ARM的程序執(zhí)行速度較高,存儲器的存儲速度和存儲量也很高,因此,C語言的特點充分發(fā)揮,使得應用程序的開發(fā)時間大為縮短,代碼的移植十分方便,程序的重復使用率提高,程序架構清晰易懂,管理較為容易等等。因此,C語言的在ARM編程中具有重要地位。</p>
107、;<p> 2. ARM C語言程序的基本規(guī)則</p><p> 在ARM程序的開發(fā)中,需要大量讀寫硬件寄存器,并且盡量縮短程序的執(zhí)行時間的代碼一般使用匯編語言來編寫,比如ARM的啟動代碼,ARM的操作系統(tǒng)的移植代碼等,除此之外,絕大多數代碼可以使用C語言來完成。</p><p> C語言使用的是標準的C語言,ARM的開發(fā)環(huán)境實際上就是嵌入了一個C語言的集成開發(fā)環(huán)境,
108、只不過這個開發(fā)環(huán)境和ARM的硬件緊密相關。</p><p> 在使用C語言時,要用到和匯編語言的混合編程。當匯編代碼較為簡潔,則可使用直接內嵌匯編的方法,否則,使用將匯編文件以文件的形式加入項目當中,通過ATPCS的規(guī)定與C程序相互調用與訪問。</p><p> ATPCS,就是ARM、Thumb的過程調用標準(ARM/Thumb Procedure Call Standard),它規(guī)
109、定了一些子程序間調用的基本規(guī)則。如寄存器的使用規(guī)則,堆棧的使用規(guī)則,參數的傳遞規(guī)則等。</p><p> 在C程序和ARM的匯編程序之間相互調用必須遵守ATPCS。而使用ADS的C語言編譯器編譯的C語言子程序滿足用戶指定的ATPCS的規(guī)則。但是,對于匯編語言來說,完全要依賴用戶保證各個子程序遵循ATPCS的規(guī)則。具體來說,匯編語言的子程序應滿足下面3個條件:</p><p> ● 在子
110、程序編寫時,必須遵守相應的ATPCS規(guī)則;</p><p> ● 堆棧的使用要遵守相應的ATPCS規(guī)則;</p><p> ● 在匯編編譯器中使用-atpcs選項。</p><p> 基本的ATPCS規(guī)定,請詳見提供的相關PDF文檔。</p><p><b> 匯編程序調用C程序</b></p>&
111、lt;p> 匯編程序的設置要遵循ATPCS規(guī)則,保證程序調用時參數正確傳遞。</p><p> 在匯編程序中使用IMPORT偽指令聲明將要調用的C程序函數。</p><p> 在調用C程序時,要正確設置入口參數,然后使用BL調用。</p><p><b> C程序調用匯編程序</b></p><p> 匯
112、編程序的設置要遵循ATPCS規(guī)則,保證程序調用時參數正確傳遞。</p><p> 在匯編程序中使用EXPORT偽指令聲明本子程序,使其他程序可以調用此子程序。</p><p> 在C語言中使用extern關鍵字聲明外部函數(聲明要調用的匯編子程序)。</p><p> 在C語言的環(huán)境內開發(fā)應用程序,一般需要一個匯編的啟動程序,從匯編的啟動程序,跳到C語言下的主
113、程序,然后,執(zhí)行C程序,在C環(huán)境下讀寫硬件的寄存器,一般是通過宏調用,在每個項目文件的Startup2410/INC目錄下都有一個2410addr.h的頭文件,那里面定義了所有關于2410的硬件寄存器的宏,對宏的讀寫,就能操作2410的硬件。</p><p> 具體的編程規(guī)則同標準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 ;跳轉到Main()函數處的C/C++程序</p><p> END ;標識匯編程序結束
116、</p><p> 以上是一個簡單的程序,先寄存器初始化,然后跳轉到Main()函數標識的C/C++代碼處,執(zhí)行主要任務,此處的 Main是聲明的C語言中的Main()函數。</p><p> 對宏的預定義,在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> 在程序中實現,</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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于arm830+2410說明書
- ha830烤箱使用說明書
- 基于arm+linux的lcd驅動設計說明書
- 基于arm的串口通信系統(tǒng)的課程設計說明書
- 基于arm的串口通信系統(tǒng)的課程設計說明書
- 基于arm7的老鼠走迷宮的游戲設計說明書
- 課程設計說明書-基于arm的_圖形點陣lcd菜單設計
- 基于arm9-s3c2410數字核心板的硬件設計
- 基于S3C2410A的新型ARM實驗裝置的設計研究.pdf
- 基于ARM S3c2410芯片無線移動終端的設計與實現.pdf
- 基于matlabahp實現說明書
- 基于matlab通信編碼說明書
- 基于fpga數字時鐘說明書
- 基于fpga的mp3音樂播放器說明書說明書
- arm課程設計--基于s3c2410的實時時鐘及鬧鐘設計
- 基于三星ARM S3C2410的指紋識別系統(tǒng).pdf
- 基于matlabfir設計報告說明書
- ciscoiosvpn基于ca認證說明書
- 基于fpga的點陣說明書
- 說明書
評論
0/150
提交評論