



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、嵌入式微處理器結(jié)構(gòu)與應(yīng)用基于 ARM7TDMI微處理器S3C44B0X實(shí)驗指導(dǎo)書(選修班)撰稿人:韓桂明張錕2011年3月信息科技學(xué)院電子工程系實(shí)驗?zāi)夸泴?shí)驗一實(shí)驗開發(fā)環(huán)境的創(chuàng)建和使用1實(shí)驗二ARM 匯編程序?qū)嶒?1實(shí)驗三 GPIO 輸出控制實(shí)驗14實(shí)驗四 GPIO 輸入控制實(shí)驗16實(shí)驗五 PWM 信號實(shí)驗 17實(shí)驗六定時中斷實(shí)驗19實(shí)驗七鍵盤及LED 驅(qū)動實(shí)驗 24實(shí)驗一實(shí)驗開發(fā)環(huán)境的創(chuàng)建和使用一、實(shí)驗?zāi)康?. 熟悉 ADS1.2 開發(fā)環(huán)境,學(xué)習(xí)使用 ADS 編譯、下載、調(diào)試并跟蹤程序。2.了解嵌入式開發(fā)的基本思想和過程。3. 了解 UP-NETARM3000 實(shí)驗箱,學(xué)會 ARM 仿真器的使
2、用。4. 掌握 Windows 超級終端的設(shè)置,能夠正確使用實(shí)驗箱提供的BIOS 功能。二、實(shí)驗內(nèi)容1.運(yùn)行 Windows 系統(tǒng)下的超級終端,通過超級終端查看BIOS 啟動情況。2.配置 ADS 集成開發(fā)環(huán)境,新建一個簡單的工程文件,并編譯這個工程文件。3. 學(xué)習(xí) ARM 仿真器的使用和開發(fā)環(huán)境的設(shè)置。4.下載已經(jīng)編譯好的文件到嵌入式控制器中運(yùn)行,學(xué)會在程序中設(shè)置斷點(diǎn),觀察系統(tǒng)內(nèi)存和變量,為調(diào)試應(yīng)用程序打下基礎(chǔ)。三、實(shí)驗設(shè)備及工具1. 硬件: UP-NETARM3000 實(shí)驗箱、 JTAG 仿真器、 PC 機(jī)。2. 軟件: PC 機(jī)操作系統(tǒng) WinXP 、ADS1.2 集成開發(fā)環(huán)境、仿真器驅(qū)
3、動程序、超級終端通訊程序。四、實(shí)驗步驟1.超級終端設(shè)置及BIOS 功能使用1)運(yùn)行 Windows 系統(tǒng)下的超級終端( HyperTerminal)應(yīng)用程序,新建一個通信終端。如果要求輸入?yún)^(qū)號、電話號碼等信息請隨意輸入。出現(xiàn)如圖 1.1所示對話框時,為所建超級終端取名,如“ arm”;可以為其選一個圖標(biāo),然后單擊“確定”按鈕。圖 1.1 創(chuàng)建超級終端2)在接下來的對話框中選擇 ARM 開發(fā)平臺實(shí)際連接的 PC 機(jī)串口(如 COM1 ),按確定后出現(xiàn)如圖 1.2所示的屬性對話框,設(shè)置通信的格式和協(xié)議。這里波特率為 115200,數(shù)據(jù)位 8,無奇偶校驗,停止位 1,無數(shù)據(jù)流控制。按確定完成設(shè)置。圖
4、 1.2 設(shè)置串行口3)完成新建超級終端的設(shè)置以后,可以選擇超級終端文件菜單中的保存,將當(dāng)前設(shè)置保存為一個特定超級終端到桌面上,以備后用。用串口線將 PC 機(jī)串口和平臺 UART0 正確連接后,就可以在超級終端上看到程序輸出的信息。4)啟動開發(fā)板,按住開發(fā)板上鍵盤的任意按鍵,使開發(fā)板進(jìn)入BIOS設(shè)置狀態(tài)。如圖 1.3所示。圖 1.3 系統(tǒng)的 BIOS 設(shè)置程序5)該畫面上提示了該 BIOS 的版本等信息。 Shell Menu 是平臺的檢測菜單,每個條目的最左邊字母是該功能的快捷鍵,按 PC 機(jī)鍵盤相應(yīng)鍵將執(zhí)行對應(yīng)功能。注意操作時保持超級終端處于激活狀態(tài),并且 PC 機(jī)鍵盤必須為小寫。6)用戶
5、可以按超級終端的提示嘗試部分測試功能,其中:l:測試 LCD 的文本和圖形顯示。 執(zhí)行該命令后 LCD 上會打出文本提示, 然后進(jìn)入圖形模式并顯示一幅彩色條形圖案,然后在超級終端上看提示按任意鍵返回文本模式,并退出 LCD 測試返回測試菜單。o:格式化開發(fā)平臺的 16M FLASH ,其中的文件將丟失,需要重新拷貝。執(zhí)行該命令后超級終端上會出現(xiàn)確認(rèn)提示,如果按“ y”鍵則會格式化 Flash,之后返回菜單。 n :設(shè)置開發(fā)平臺網(wǎng)卡的 IP 地址,子網(wǎng)掩碼等,下有子菜單。執(zhí)行該命令后出現(xiàn)子菜單:p:設(shè)置 MAC地址,執(zhí)行該命令后按提示操作i:設(shè)置 IP 地址,執(zhí)行該命令后按提示操作,請與所在局域
6、網(wǎng)在同一網(wǎng)段m:設(shè)置子網(wǎng)掩碼,執(zhí)行該命令后按提示操作g:設(shè)置網(wǎng)關(guān)的 IP 地址,執(zhí)行該命令后按提示操作s:保存所設(shè)地址,設(shè)置完 IP 地址等后必須執(zhí)行該命令保存設(shè)置,否則設(shè)置無效d:設(shè)置默認(rèn)地址q:退出子菜單,返回到主菜單。u:激活開發(fā)平臺的 USB 連接,開發(fā)平臺的 Flash 可以作為 U 盤使用,從而可以方便的將字庫和應(yīng)用程序等文件從 PC 機(jī)拷貝到平臺的 FLASH 中。使用此功能時,必須保證 USB 電纜正確連接。e:測試由 ZLG7289 驅(qū)動的 LED 顯示,共分 3 步,請看超級終端提示按任意鍵繼續(xù),同時觀察 LED 的變化,最后返回主菜單。k:測試由 ZLG7289 控制的鍵
7、盤掃描,執(zhí)行該命令后按開發(fā)平臺的鍵盤,看超級終端的鍵名顯示,而在超級終端上按 PC 鍵盤任意鍵則退出測試返回菜單。s:測試開發(fā)平臺觸摸屏,觸摸屏有動作時在超級終端上會顯示動作類型和坐標(biāo)。按 PC鍵盤任意鍵后,再點(diǎn)一下觸摸屏即可退出測試并返回主菜單。h:設(shè)置觸摸屏的坐標(biāo)基準(zhǔn)點(diǎn),也就是校屏功能。需要按提示點(diǎn)擊觸摸屏的3 個位置并保存結(jié)果。a:測試開發(fā)平臺的 AD 電路,執(zhí)行該命令后調(diào)節(jié)平臺的 4個電位器,在超級終端上顯示 AD0 AD3 的數(shù)值。按 PC 鍵盤任意鍵退出測試并返回。d:測試開發(fā)平臺的 DA 電路,在超級終端顯示電壓值, 需要用電壓表測量平臺 DA 輸出端子。按 PC 鍵盤任意鍵退出
8、測試并返回。t:設(shè)置開發(fā)平臺的 RTC 時間參數(shù),該時間由開發(fā)平臺上的鈕扣電池保證持續(xù)計時。請按提示確認(rèn)修改時間并分別輸入時間。設(shè)置完成合需要保存,否則設(shè)置參數(shù)無效。i:測試平臺的音頻電路, 執(zhí)行該命令后可以聽到一段從平臺揚(yáng)聲器發(fā)出的音樂。 請適當(dāng)調(diào)節(jié)音量電位器。m:測試平臺的兩個電機(jī),需要打開電機(jī)附近的電機(jī)電源開關(guān),按提示分別測試直流電機(jī)和步進(jìn)電機(jī)。c:測試平臺的 CAN 控制器。執(zhí)行該命令在超級終端顯示 CAN 控制器 ID ,正常應(yīng)該顯示 1234 或 0000。b:引導(dǎo) FLASH 中的應(yīng)用程序 system.bin。執(zhí)行該功能將退出 BIOS 狀態(tài),把控制交給應(yīng)用程序。7)按 PC
9、鍵盤的 u 鍵(要使超級終端處于活動狀態(tài)) ,這時超級終端上會顯示如圖1.4所示的信息。圖 1.4 進(jìn)入 U 盤狀態(tài)這時,在“我的電腦”中可以發(fā)現(xiàn)多了一個“可移動磁盤” ,這就是開發(fā)板的海量存儲器 16M 非線性 Flash。開發(fā)平臺的 Flash 芯片就像一個 U 盤,可以通過“我的電腦”進(jìn)行操作。可以把編譯后生成的 system.bin 文件通過 USB 下載到嵌入式開發(fā)板中, 復(fù)位系統(tǒng),運(yùn)行并檢查輸出結(jié)果。< 提示 >system.bin 文件是系統(tǒng)通過 BIOS 引導(dǎo)以后,裝入內(nèi)存中運(yùn)行的默認(rèn)文件名。2. 配置 ADS 集成開發(fā)環(huán)境1)運(yùn)行 ADS1.2 集成開發(fā)環(huán)境( C
10、odeWarrior for ARM Developer Suite)。選擇“ FileNew ”菜單,在對話框中選擇 Project,如圖 1.5所示,新建一個工程文件。圖中示例的工程名為 Exp6.mcp。圖 1.5 新建工程點(diǎn)“ set ”按鈕可為該工程選擇路徑如圖 1.6所示,選中 CreatFolder 選項后將以圖1.5中的 ProjectName為名創(chuàng)建目錄,這樣可以將所有與該工程相關(guān)的文件放到該工程目錄下,便于管理工程。圖 1.6 保存工程在圖 1.5中工程模板列表中我們選擇 ARM Executable Image 通用模板。我們隨后將一步一步的把它配置成針對我們 ARM30
11、00 開發(fā)板的模板 44B0 ARM Executable Imaage,并把它拷貝到 ADS1.2 安裝目錄下的 Stationery 目錄中(所有的工程模板都在此目錄下)。以后我們新建工程時,在工程模板列表中直接選中 44B0 ARM Executable Imaage 模板選項,就不必每次重新配置模板了。2)在新建的工程中,如圖 1.7所示,選擇 Debug 版本,使用 Edit | Debug Settings菜單對 Debug 版本進(jìn)行參數(shù)設(shè)置。圖 1.7 選擇版本在 Debug Settings 對話框中選擇 Target Settings 項,如圖 1.8 所示。在 Post-l
12、inker一欄中選擇 ARM fromELF ,點(diǎn)擊右下角的 Apply 使其有效。圖 1.8 Target Settings在Debug Settings 對話框中選擇 ARM Linker 項,如圖 1.9。在 Output 下的 Linktype 中有三種類型的連接方式,我們常用的是 Simple 和 Scattered 兩種。如果程序需要用到標(biāo)準(zhǔn) C 庫函數(shù)的話需要按 Scattered 進(jìn)行連接地址的設(shè)置。如果用不到標(biāo)準(zhǔn) C 庫函數(shù)的話,請選擇 Simple 選項。下面以 Simple方式設(shè)置為例:在 ARM Linker 項的 Output 選項卡中,我們選擇 Simple 選項,
13、如圖 1.9所示。在Simple image 框中設(shè)置連接的 Read-Only(只讀)和 Read-Write(讀寫)地址。地址0x0c080000是開發(fā)板上 SDRAM 的真實(shí)地址,是由系統(tǒng)的硬件決定的; 0x0c200000 指的是系統(tǒng)可讀寫的內(nèi)存地址。也就是說 0x0c0800000xC1fffff 之間是只讀區(qū)域,存放程序的代碼段,在 0xC200000開始是程序的數(shù)據(jù)段。圖 1.9 設(shè)置連接地址范圍點(diǎn)擊 Layout選項卡,在 Layout 選項卡的 Place at beginning of image 框中設(shè)置程序的入口模塊。如圖 1.10所示,指定在生成的代碼中,程序從 44
14、binit.s 開始運(yùn)行的。 Object 設(shè)為 44binit.o ,section 設(shè)為 init 。圖 1.10設(shè)置入口模塊3)在Debug Settings 對話框中選擇 ARM fromELF 項,如圖 1.11。在Output file name 框中設(shè)置輸出文件名為 system.bin,這就是要下載到開發(fā)板的嵌入式應(yīng)用程序文件。圖 1.11設(shè)置輸出文件名4)回到如圖 1.7所示的工程窗口中, 選擇 Release 版本,使用 Edit | ReleaseSettings 菜單對 Release 版本進(jìn)行參數(shù)設(shè)置。參照前文設(shè)置 Release版本的 Post-linker、連接地
15、址范圍、入口模塊和輸出文件。5)回到工程窗口中,選擇 Targets選項卡,如圖 1.12所示。選中 DebugRel 版本,按 Del 鍵將其刪除。圖 1.12 刪除 DebugRel 版本6)設(shè)置完成后,可以將該新建的空工程文件作為模板保存以便以后使用。在ADS1.2 軟件安裝目錄下的 Stationery 目錄下新建名為 ARM 44B0X Simple Image的模板目錄,再將剛設(shè)置完的 mcp工程模板文件存放到該目錄下。這樣以后新建工程的時候,就能看到圖 1.13所示以“ ARM 44B0X Simple Image ”為名字的模板了。圖 1.13 顯示 44B0 ARM 模板&l
16、t;提示 >建議同學(xué)們將老師提供的“ ARM 44B0X Scattered Image ”子目錄直接拷貝到 ADS1.2 安裝目錄下的 Stationery 目錄中,這樣也能在新建工程對話框中看到這個模板。此模板為 Scattered 版本,其中已經(jīng)設(shè)置好針對本開發(fā)板的參數(shù)。3. 建立工程文件配置好針對 UP-ARM3000 的開發(fā)環(huán)境后,可以執(zhí)行菜單 Project | Add Files把和工程相關(guān)的所有文件加入到工程中。ADS1.2 不能自動按文件類別對這些文件進(jìn)行分類,需要的話用戶可以執(zhí)行菜單 Project | Create Group 創(chuàng)建文件組,然后分別將不同類的文件加入
17、到不同的組,以方便管理。如圖 1.14所示。更為簡單的辦法是,在新建工程時 ADS 創(chuàng)建了和工程同名的目錄,在該目錄下按類別創(chuàng)建子目錄并存放工程文件。 然后用鼠標(biāo)選中工程子目錄, 將其拖動到工程文件窗口,松開鼠標(biāo)。這樣 ADS 將以子目錄名建立同名文件組并以此對文件分類。這里我們把 init 和STARTUP 兩個目錄拷貝到新建的工程目錄下,然后選中這兩個目錄,拖動到工程文件窗口,松開鼠標(biāo)。這樣 ADS 將以 init 和 STARTUP 目錄名建立同名文件組并以此對文件分類。圖 1.14加入工程文件雙擊圖 1.14中的 Main.c 打開該文件,可以看到 Main() 函數(shù)的內(nèi)容:int m
18、ain(void)ARMTargetInit(); / 開發(fā)版初始化LCD_Init();LCD_ChangeMode(DspTxtMode); / 轉(zhuǎn)換 LCD 顯示模式為文本顯示模式 LCD_Cls(); / 文本模式下清屏命令LCD_printf("Hello world!n"); /向液晶屏輸出Uart_Printf("nHello world!n"); / 向串口輸出while(1);讀者可以查看其他源文件的內(nèi)容以對系統(tǒng)運(yùn)行有所了解。可以發(fā)現(xiàn)ADS 的文本編輯器可以按語法分顏色顯示,讀者可以根據(jù)喜好在Edit 菜單下的 Preferences
19、窗口中進(jìn)行設(shè)置。4.進(jìn)行程序的在線仿真、調(diào)試1) 回到工程窗口選中 Debug 版本,執(zhí)行菜單 Project | Make 對工程進(jìn)行編譯連接。在出現(xiàn)的錯誤 /警告窗口中選擇某錯誤 /警告信息,ADS 會自動打開相應(yīng)源文件并用箭頭指向出錯的文本行。如果某個源文件被修改,重新編譯時 ADS 會自動同步各文件的日期信息。2) 在ADS 中執(zhí)行菜單 Project | Debug 啟動 ADS1.2 的調(diào)試工具 AXD 。3) 在AXD 中執(zhí)行菜單 Options | Configure Target 對AXD 進(jìn)行設(shè)置。如圖 1.15所示。選擇 ADP 即遠(yuǎn)程調(diào)試,點(diǎn) Configure 按鈕進(jìn)
20、一步設(shè)置具體參數(shù),如圖1.16所示。圖 1.15 設(shè)置 AXD 參數(shù)4)在圖 1.16中點(diǎn) Select 按鈕選擇遠(yuǎn)程連接為 ARM ethernet driver ,點(diǎn) Configure按鈕輸入仿真器的 IP 地址。如果用戶使用的是并行口仿真器,請輸入127.0.0.1 即可。圖 1.16設(shè)置遠(yuǎn)程連接5)等待程序裝載完畢以后,通過 Execute | Go 菜單以及 Execute | Stop(或者工具欄中的相應(yīng)按鈕)運(yùn)行或暫停程序。程序暫停后在窗口中將顯示出程序暫停的位置。6)通過 Execute | Step 菜單(或者工具欄中的相應(yīng)按鈕)可以單步運(yùn)行程序。也可以使用 Step In
21、、Step Out 菜單命令進(jìn)入或者跳出函數(shù)的調(diào)用。 Run To Cursor 命令運(yùn)行到光標(biāo)位置。7)程序停止后可以通過 Processor Views | Sources 菜單查看源文件,并可在適當(dāng)位置按 F9 設(shè)置端點(diǎn)。8)使用在 Processor View 菜單下的 Registers、Variables 和Memory 命令可以查看工作寄存器或者內(nèi)存變量。讀者可以逐一地嘗試,為以后調(diào)試程序打下基礎(chǔ)。< 提示 >在進(jìn)行調(diào)試時在 ADS 中必須選擇當(dāng)前工程的 Debug 版本,如果選擇 Release 版本則無法正常調(diào)試程序。實(shí)驗二ARM 匯編程序?qū)嶒炓弧?shí)驗?zāi)康?. 掌
22、握 ARM 匯編指令的含義和使用方法。2. 了解 ARM 指令靈活的第二操作數(shù)。3. 學(xué)習(xí)簡單匯編程序的編寫。二、實(shí)驗內(nèi)容1. 使用 ARM 的數(shù)據(jù)傳送指令,能夠訪問寄存器和存儲器。2. 使用相關(guān)指令完成數(shù)據(jù)加 /減運(yùn)算及邏輯運(yùn)算。三、實(shí)驗設(shè)備及工具1. 硬件: UP-NETARM3000 實(shí)驗箱、 JTAG 仿真器、 PC 機(jī)。2. 軟件: PC 機(jī)操作系統(tǒng) WinXP 、ADS1.2 集成開發(fā)環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。四、實(shí)驗原理實(shí)驗參考程序:五、實(shí)驗步驟1. 啟動 ADS1.2,建立一個工程文件。然后建立匯編源文件,添加到工程中,編寫實(shí)驗程序。2. 編寫好實(shí)驗程序后,編譯連
23、接工程,選擇 Project>Debug,啟動 AXD 進(jìn)行軟件仿真調(diào)試。或者點(diǎn)擊 Debug圖標(biāo)。3. 調(diào)試并觀察程序執(zhí)行過程1) AXD 調(diào)試模式,選擇 Options->Configure Target,如圖:2)選擇軟件仿真,點(diǎn)擊ARMUL ,并點(diǎn)擊 OK。3)點(diǎn)擊 Load Image,裝載我們的.axf文件4)打開寄存器窗口( Processor Registers),選擇 Current項監(jiān)視各寄存器的值。說明:使用鼠標(biāo)左鍵選擇一個寄存器,然后右擊,在 Format項中選擇顯示格式 Hex、Decimal等,如圖所示。單步運(yùn)行程序,觀察寄存器值的變化。說明:有變化的寄
24、存器會以紅色顯示,如圖。4. 編寫、調(diào)試、觀察以下程序通過課本 P61頁【例 3.5】【例 3.6】,掌握無符號數(shù)和有符號數(shù)的相關(guān)運(yùn)算。六、思考題1. 指令“ MOVR0,#0x12345678”是否正確?為什么?2. 將參考程序中應(yīng)用 CMP指令的代碼,功能改為 “若(5*Y/2 )>(2*X), 則R5=R5|0x000000FF,否則 R5=R5&0XFFFF0000”,程序應(yīng)如何修改?3. 更改參考程序 X 的值為 200, Y的值為 163,單步運(yùn)行程序,每執(zhí)行一步程序的結(jié)果是多少?實(shí)驗三 GPIO 輸出控制實(shí)驗一、實(shí)驗?zāi)康?. 熟悉 S3C44B0 ARM 芯片的 G
25、PIO 輸入輸出配置方法。2. 通過實(shí)驗掌握 ARM 芯片 I/O 控制 LED 顯示的方法。3. 進(jìn)一步熟悉 ARM 匯編語言程序設(shè)計步驟。二、實(shí)驗內(nèi)容1. 熟悉 ARM 芯片 I/O 口的編程配置方法。2.熟悉 S3C44B0 芯片 I/O 口配置寄存器。3. 通過編程實(shí)現(xiàn) GPIO 的 E 口輸入, A 口輸出來控制實(shí)驗平臺上的 LED 。三、實(shí)驗設(shè)備及工具1. 硬件: UP-NETARM3000 實(shí)驗箱、 JTAG 仿真器、 PC 機(jī)。2. 軟件: PC 機(jī)操作系統(tǒng) WinXP 、ADS1.2 集成開發(fā)環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。四、實(shí)驗原理S3C44B0 芯片上共有 71
26、 個多功能 I/O 引腳,它們分為7 組 I/O 端口:2個9位I/O端口(端口 E和F)。2個8位I/O端口(端口 D 和G)。1 個 16 位 I/O 端口(端口 C)。1 個 10 位 I/O 端口(端口 A )。1 個 11 位 I/O 端口(端口 B)。每組端口都可以通過軟件配置寄存器來滿足不同系統(tǒng)和設(shè)計的需要。1)流程示意圖開始E 端口輸出初始化E 端口數(shù)據(jù)寄存器賦值延時結(jié)束2) 部分參考程序3) 電路原理圖五、實(shí)驗步驟GPE6GPE71. 啟動 ADS3C44B01.2,建立一芯個片工程文件。然后建立匯編源文件,添加到工程中,編寫實(shí)驗程序。VCC3.32. 編寫程序,實(shí)現(xiàn)用 E
27、口輸出控制 LED 燈亮、滅的匯編程序。3. 單步運(yùn)行程序,查看工作寄存器;并觀察 LED 燈的亮、滅情況。六、思考題1. 用 C 語言如何實(shí)現(xiàn)上述程序的編寫。實(shí)驗四 GPIO 輸入控制實(shí)驗一、實(shí)驗?zāi)康?. 熟悉 S3C44B0 ARM 芯片的 GPIO 輸入輸出配置方法。2. 通過實(shí)驗掌握 ARM 芯片 I/O 控制 LED 顯示的方法。3. 進(jìn)一步熟悉 ARM 匯編語言程序設(shè)計步驟。二、實(shí)驗內(nèi)容1. 熟悉 ARM 芯片 I/O 口的編程配置方法。2.熟悉 S3C44B0 芯片 I/O 口配置寄存器。3. 通過編程實(shí)現(xiàn) GPIO 的 E 口輸入, A 口輸出來控制實(shí)驗平臺上的 LED 。三、
28、實(shí)驗設(shè)備及工具1. 硬件: UP-NETARM3000 實(shí)驗箱、 JTAG 仿真器、 PC 機(jī)。2. 軟件: PC 機(jī)操作系統(tǒng) WinXP 、ADS1.2 集成開發(fā)環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。四、實(shí)驗原理S3C44B0 芯片上共有 71 個多功能 I/O 引腳,它們分為7 組 I/O 端口:2個9位I/O端口(端口 E和F)。2個8位I/O端口(端口 D 和G)。1 個 16 位 I/O 端口(端口 C)。1 個 10 位 I/O 端口(端口 A )。1 個 11 位 I/O 端口(端口 B)。每組端口都可以通過軟件配置寄存器來滿足不同系統(tǒng)和設(shè)計的需要。1)流程圖開始E 端口輸入初
29、始化A 端口輸出初始化判斷 E 口輸入情況A 口作相應(yīng)的輸出值結(jié)束2) 部分參考程序3) 電路原理圖S3C44B0 芯片五、實(shí)驗步驟VCC3.3GPA2GPA3輸入1. 啟動 ADS1.2,建立一個工程GPE7文件。然后建立匯編源文件,添加到工程中,編寫實(shí)驗程序。2. 編寫實(shí)現(xiàn) E 口輸入的匯編程序,使用 JTAG 進(jìn)行仿真調(diào)試。3. 編寫程序,實(shí)現(xiàn)用 A 口輸出控制 LED 燈亮、滅的匯編程序。4. 編寫程序,通過 E 口輸入來控制 A 口的 LED 燈亮、滅, A 口、 E 口的配置采用調(diào)用子程序的方式。5. 單步運(yùn)行程序,查看工作寄存器;并觀察 LED 燈的亮、滅情況。六、思考題1. 用
30、 C 語言如何實(shí)現(xiàn)上述程序的編寫。實(shí)驗五 PWM 信號實(shí)驗一、實(shí)驗?zāi)康?. 了解 PWM 信號的特點(diǎn)。2. 掌握 S3C44B0X 產(chǎn)生 PWM 信號的方法。3. 練習(xí)如何優(yōu)化代碼。二、實(shí)驗內(nèi)容1. 定時器工作方式設(shè)置。2. 配置 GPIO 為 PWM 信號輸出引腳。三、實(shí)驗設(shè)備及工具1. 硬件: UP-NETARM3000 實(shí)驗箱、 JTAG 仿真器、 PC 機(jī)。2. 軟件: PC 機(jī)操作系統(tǒng) WinXP 、ADS1.2 集成開發(fā)環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。四、實(shí)驗原理1. 實(shí)驗電路示意圖如下:R1Led1S3C44B0 芯片PWM 信號輸出2.實(shí)驗主程序框圖如下:主程序開始PW
31、M 信號端口輸出初始化設(shè)置定時器分頻、預(yù)置值初始化定時器啟動定時器停機(jī)等待3.實(shí)驗參考程序:PCONEEQU 0X01D20028PDATEEQU 0X01D2002CPUPEEQU 0X01D20030TCFG0EQU0X01D50000TCFG1EQU0X01D50004TCONEQU0X01D50008TCNTB3EQU0X01D50030TCMPB3EQU0X01D50034TCNTO3EQU0X01D50014CMD1EQU0X00A0000CMD2EQU0X0090000ENTRY; 程序入口CODE32; 指定為 32 位的ARM程序代碼STARTLDR R1,=PCONELDR
32、 R0,=0X02000STR R0,R1LDR R1,=PUPE; 不配置E 口的上拉電阻LDR R0,=0X1FFSTR R0,R1LDR R1,=TCFG0LDR R2,=0X0000FF00STR R2,R1LDR R1,=TCFG1LDR R2,=0X02000STR R2,R1LDR R1,=TCNTB3LDR R2,=0XFFFFFFFFSTR R2,R1LDR R1,=TCMPB3LDR R2,=0X88888888STR R2,R1LDR R1,=TCONLDR R2,=CMD1STR R2,R1LDR R1,=TCONLDR R2,=CMD2STR R2,R1WAITBWA
33、ITEND五、實(shí)驗步驟1. 啟動 ADS1.2,建立一個工程文件。然后建立匯編源文件,添加到工程中,編寫實(shí)驗程序。2. 編寫程序?qū)崿F(xiàn) PWM 輸出控制 LED 燈亮度,使用 JTAG 進(jìn)行仿真調(diào)試。3.單步運(yùn)行程序,查看工作寄存器;并觀察LED 燈的情況。4. 修改、完善源程序,實(shí)現(xiàn)程序的模塊化。六、思考題1. 在進(jìn)行匯編模塊化編程的時候如何建立堆棧,實(shí)現(xiàn)對現(xiàn)場的保護(hù)。2. 用 C 語言如何實(shí)現(xiàn)上述程序的編寫。實(shí)驗六定時中斷實(shí)驗一、實(shí)驗?zāi)康?. 了解 S3C44B0X 處理器的定時器應(yīng)用方法。2. 掌握 S3C44B0X 處理器上中斷的程序編寫。3. 進(jìn)一步熟悉平臺硬件及其驅(qū)動程序的編寫。二、
34、實(shí)驗內(nèi)容1.設(shè)置并啟動定時器。2.設(shè)置中斷,編寫定時器中斷服務(wù)程序,對中斷次數(shù)進(jìn)行計數(shù)并用LED 顯示結(jié)果。三、實(shí)驗設(shè)備及工具1. 硬件: UP-NETARM3000 實(shí)驗箱、 JTAG 仿真器、 PC 機(jī)。2. 軟件: PC 機(jī)操作系統(tǒng) WinXP 、ADS1.2 集成開發(fā)環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。四、實(shí)驗原理1. 定時器原理S3C44B0X 具有 6個16bit 定時器,每個定時器可以基于中斷模式或 DMA 模式運(yùn)行。定時器 0、 1、 2、 3 具有 PWM 功能,定時器 0 還具有死區(qū)發(fā)生器可用于大電流設(shè)備。定時器 0 和1,2 和3,4 和 5 分別共享 3個8bit
35、預(yù)比例因子寄存器。每個定時器都各有一個 4 或5 級的分頻器,用 TCFG0 和 TCFG1 可以設(shè)置這些比例因子或分頻系數(shù)。計數(shù)值緩存寄存器 TCNTBn 的值在定時器啟動后裝載到減法計數(shù)器中。 比較緩存寄存器 TCMPBn 的值將裝載到比較寄存器中以和計數(shù)器中的值進(jìn)行比較。 TCNTBn 和TCMPBn 的這種雙緩存技術(shù)使得當(dāng)頻率和占空比改變時定時器能有一個穩(wěn)定的輸出。即使設(shè)置了一個新的計數(shù)值,當(dāng)前定時器操作繼續(xù)完成。當(dāng)減法計數(shù)器到達(dá) 0 時將產(chǎn)生定時器中斷請求,通知 CPU 定時器操作已經(jīng)完成。此時,如果自動重裝控制位使能, TCNTBn 的值會自動裝載到計數(shù)器并開始下一操作周期。當(dāng)通過
36、清除定時器使能位等方法使定時器停止后,計數(shù)值將不會自動重裝。TCMPBn 的值用于 PWM 或產(chǎn)生波形。當(dāng)減法計數(shù)器的值和比較寄存器的值匹配時,定時器控制邏輯將改變輸出電平。這樣可以控制定時器輸出的波形占空比。下圖是定時器 2 和 3 的結(jié)構(gòu)圖,其中沒有死區(qū)發(fā)生器。啟動定時器的步驟如下:1)將初始值寫入 TCNTBn 和 TCMPBn 。2)將該定時器的人工刷新位( manual update bit)置 1,建議同時配置反轉(zhuǎn)開關(guān)位 (inverter on/off bit) 。3)將該定時器的啟動位置1,啟動定時器,同時清除人工刷新位。定時器時鐘頻率和比例因子、分頻系數(shù)以及系統(tǒng)主頻的關(guān)系如下
37、:Timer input clock Frequency = MCLK / prescaler value + 1 / divider value prescaler value = 0-255divider value = 2, 4, 8, 16, 322. 中斷控制器S3C44B0X的中斷控制器接受來自于 30 個中斷源的請求。 這些中斷源包括 DMA 控制器, UART 和SIO 等等。其中外部中斷 EINT4/5/6/7 是相或的。中斷控制器的任務(wù)是經(jīng)過仲裁過程(當(dāng)有多個中斷源同時發(fā)出中斷請求時)將 FIQ或IRQ 中斷請求遞交給 ARM7TDMI 核。S3C44B0X支持基于軟件優(yōu)先
38、級算法的仲裁過程,也支持向量中斷模式。前者在有多個中斷請求產(chǎn)生時,將讀取中斷掛起寄存器來決定中斷服務(wù)的優(yōu)先級。 S3C44B0X的中斷控制器硬件直接提供了中斷服務(wù)向量表, 當(dāng)有多個中斷請求時硬件優(yōu)先級邏輯決定響應(yīng)哪個中斷。向量中斷模式較之軟件方法減少了中斷響應(yīng)時間。要使能 IRQ或FIQ中斷響應(yīng)必須清除程序狀態(tài)字PSR 中的 I-bit 或F-bit 并且必須清除 INTMSK 中的相關(guān)位。如果 PSR 中的 I-bit 或F-bit 置1,CPU將不接受中斷控制器的IRQ或 FIQ。ARM7TDMI 具有兩種中斷類型: IRQ中斷請求, FIQ 快速中斷請求。所有的中斷源都可以決定在中斷請求
39、時采用那種中斷模式。中斷掛起寄存器表明是否有中斷請求被掛起。當(dāng)某掛起位被置 1,如果中斷使能則啟動中斷服務(wù)例程。它是只讀寄存器,必須通過對 I_ISPC或F_ISPC置 1來清除。當(dāng)中斷掩碼寄存器的某位置 1后表明對應(yīng)中斷被關(guān)閉。 如果某掩碼位被置 1而相應(yīng)中斷請求產(chǎn)生后,對應(yīng)掛起位將被置 1,但該中斷不被響應(yīng)。中斷設(shè)置相關(guān)的寄存器如下:1) INTCON :使能 IRQ向量模式、使能 IRQ和 FIQ到CPU 的中斷請求線。其設(shè)置和位描述如表 6-1所示。表6-1 INTCON 寄存器的位描述2) INTPND :其設(shè)置如表 6-2所示。表 6-2 INTPND 寄存器的設(shè)置3) INTMO
40、D :設(shè)置中斷的類型,在本系統(tǒng)中全部選為IRQ,其設(shè)置如表 6-3所示。表 6-3 INTMOD 寄存器的設(shè)置4) INTMSK :每個中斷源在各寄存器內(nèi)的偏移位址都是一樣的。其設(shè)置及位描述如表 6-4,表 6-5所示。表 6-4 INTMSK 寄存器的設(shè)置表 6-5 INTMSK 寄存器的位描述5) I_ISPR:0 =不服務(wù)1 =現(xiàn)在服務(wù),其設(shè)置如表 6-6所示。表6-6 I_ISPR 寄存器的設(shè)置6) I_ISPC/F_ISPC:清除中斷掛起位,在中斷服務(wù)程序結(jié)束前必須清除對應(yīng)的中斷掛起位。其設(shè)置如表 6-7所示。表6-7 I_ISPC/F_ISPC 寄存器的設(shè)置3、 IRQ 非向量中斷
41、模式的中斷響應(yīng)過程在本實(shí)驗中所有的中斷均被分配為 IRQ 類型,采用軟件優(yōu)先級算法。 當(dāng)有中斷請求并且 PSR、 INTCON 、 INTMSK 等寄存器允許中斷響應(yīng)時, CPU 會執(zhí)行位于地址0x00000018 的指令。在 44BINIT.S 文件中可以看到該處的指令是b HandlerIRQ。執(zhí)行該指令程序跳轉(zhuǎn)到:HandlerIRQ HANDLER HandleIRQ其中 HANDLER 是一個宏,定義如下:MACRO$HandlerLabel HANDLER $HandleLabel$HandlerLabelsub sp,sp,#4stmfd sp!,r0ldr r0,=$Handl
42、eLabelldr r0,r0str r0,sp,#4ldmfd sp!,r0,pcMEND該宏的意思是程序跳轉(zhuǎn)到 $HandlerLabel 之后再跳轉(zhuǎn)到 $HandleLabel。這意味著程序又跳轉(zhuǎn)到了 HandleIRQ 處,也就從 0Bank 的 ROM 空間跳到 6Bank 的 SDRAM 空間了,因為 HandleIRQ 實(shí)際上是一個 RAM 地址,從 ADS 環(huán)境下的工程路徑的 Init 目錄下 isr_address.s 文件和 scat_ram.scf 文件即可看出,其值是 0xc7fff00+0x18 。另外,在 44b.h 文件中有如此定義:#define pISR_IR
43、Q (*(unsigned *)(_ISR_STARTADDRESS+0x18) 其中的宏 _ISR_STARTADDRESS 的定義在 option.h 文件中: #define _ISR_STARTADDRESS 0xc7fff00這就意味著 HandleIRQ 和 pISR_IRQ 有著特殊的關(guān)系,前者是地址,后者是這個地址上的內(nèi)容,也就是說 pISR_IRQ 就可認(rèn)為是中斷服務(wù)程序的地址了。在 UHAL.C 中有這個函數(shù) void uHALr_InterruptRequestInit() 用來初始化中斷。其中有: pISR_IRQ= (unsigned) IRQ_Handler;而 I
44、RQ_Handler 又回到了 0Bank 的 ROM 中,在 44BINIT.S 中有:IRQ_HandlerIMPORT ISR_IrqHandlerSTMFD sp!, r0-r12, lrBL ISR_IrqHandlerLDMFD sp!, r0-r12, lrSUBS pc, lr, #4EXPORT IRQ_Handler從這段匯編程序看出,控制又轉(zhuǎn)移到了 ISR_IrqHandler 上,這是 IRQ 的中斷服務(wù)程序,定義在 ISR.C 中:void ISR_IrqHandler() int IntOffset;IntOffset=GetISROffsetClr(); / 得到
45、中斷向量的偏移地址(*InterruptHandlersIntOffset)(); / 運(yùn)行中斷服務(wù)程序其中 GetISROffsetClr() 定義如下:int GetISROffsetClr() / 計算中斷的偏移地址,高位優(yōu)先 int i,ispr=rI_ISPR,tmp=1<<(MAXHNDLRS-1); /temp bit for(i=MAXHNDLRS;i>0;i-)if(ispr&tmp)rI_ISPC=tmp;return i-1;tmp>>=1;return -1;實(shí)際上這段程序就是軟件優(yōu)先級算法,通過查看I_ISPR 寄存器,決定應(yīng)該執(zhí)行的真正的對應(yīng)于具體中斷的中斷服務(wù)程序。并使用rI_ISPC 寄存器清除中斷掛起位。而(*InterruptHandlersIntOffset)(); 則是把控制最終轉(zhuǎn)移到了ISR 上。然而,實(shí)際的 ISR 是如何和這套極其復(fù)雜的中斷響應(yīng)過程發(fā)生關(guān)系的呢?這里用SetISR_Interrupt()函數(shù)把用戶
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025山煤國際井下操作技能人員招聘150人(山西)筆試參考題庫附帶答案詳解
- 25年公司廠級員工安全培訓(xùn)考試試題新版
- 2024-2025新入職工安全培訓(xùn)考試試題答案A卷
- 2025簡約式門面房屋租賃合同樣本
- 2025融資租賃合同金融范本
- 2025授權(quán)融資合同范本
- 就業(yè)協(xié)議書失效
- 2025企業(yè)實(shí)習(xí)生合同
- 2025餐飲服務(wù)承包合同范本
- 2025裝飾裝潢工程承包合同
- 2025年裝維智企工程師(三級)復(fù)習(xí)模擬100題及答案
- 國家管網(wǎng)集團(tuán)西南管道昆明輸油氣分公司突發(fā)環(huán)境事件綜合應(yīng)急預(yù)案
- 停送電培訓(xùn)課件
- 醫(yī)院培訓(xùn)課件:《核心制度-護(hù)理值班和交接班制度》
- 解題秘籍05 圓的綜合問題(9種題型匯-總+專題訓(xùn)練)(解析版)-2025年中考數(shù)學(xué)重難點(diǎn)突破
- 無線網(wǎng)絡(luò)施工方案
- 電商平臺居間合同
- 美學(xué)《形象設(shè)計》課件
- 江蘇省建筑與裝飾工程計價定額(2014)電子表格版
- DB14∕T 2024-2020 出口水果包裝廠管理規(guī)范
- 08真空熱處理爐
評論
0/150
提交評論