




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、嵌入式系統(tǒng)原理及應用實 驗 指 導 書平頂山學院計科系目 錄實驗一 ads 1.2集成開發(fā)環(huán)境實驗1實驗二 匯編指令實驗6實驗三 c語言調用匯編實驗9實驗四 外部中斷與gpio輸出控制實驗11實驗五 pwm輸出實驗14實驗六 定時器實驗17實驗七 µc/os-移植實驗19實驗八 基于µc/os-的鍵盤與數(shù)碼管顯示實驗29實驗一 ads 1.2集成開發(fā)環(huán)境實驗一、實驗目的1. 了解ads 1.2 集成開發(fā)環(huán)境的使用方法二、實驗儀器設備、材料1. 硬件:pc 機 一臺2. 軟件:windows98/xp/2000 系統(tǒng),ads集成開發(fā)環(huán)境三、實驗內容1. 建立一個新的工程。2.
2、 建立一個c 源文件,并添加到工程中。3. 設置文本編輯器支持中文。4. 設置編譯鏈接控制選項。5. 編譯鏈接工程。6. 調試工程。四、實驗步驟(1)啟動ads1.2 ide 集成開發(fā)環(huán)境,選擇【file】->【new】,使用arm executableimage 工程模板建立一個工程,工程名稱為ads,見圖1.1。圖1.1 建立arm 指令代碼的工程(2)選擇【file】->【new】建立一個新的文件test1.s,設置直接添加到項目中,見圖1.2。輸入如程序清單1.1 所示的代碼,并保存,見圖1.3。圖1.2 新建文件test1.s圖1.3 添加了test1.s 的工程管理窗口
3、程序清單1.1 test1.s 文件代碼(3)由于ads 安裝以后默認字體是courier new,對于中文支持不完善,因此建議修改字體。選擇【edit】->【perferences】,可以看見以下對話框,如圖1.4所示。在font 選項設置字體是fixedsys,script 是chinese_gb2312 。由于tab 在不同文本編輯器解釋不同,建議在tab inserts spaces 前打勾,使tab 鍵插入的是多個空格。圖1.4 字體和tab 設置(4)選擇【edit】->【debugrel settings】,在debugrel settings 對話框的左邊選擇arm
4、 linker 項,然后在output 頁設置鏈接地址(見圖1.5),在options 頁設置調試入口地址(見圖1.6)。圖1.5 工程鏈接地址設置圖1.6 工程調試入口地址設置(5)選擇【project】->【make】,將編譯鏈接整個工程。如果編譯成功,見圖1.7,errors & warnings 對話框會報告編譯錯誤為0,那么就可以對工程進行仿真。圖1.7 編譯錯誤和警告對話框(6)選擇【project】->【debug】, 或者按下快捷鍵f5。ide 環(huán)境就會啟動axd 調試軟件,見圖1.8。斷點調試方法:首先設置斷點,只需要在第6 行灰色區(qū)域雙擊鼠標即可,如果出
5、現(xiàn)紅色實心圓點,那么表示斷點設置成功,然后選擇【execute】->【go】全速運行,可以發(fā)現(xiàn)程序停止在第6 行。還有一種比較方便的調試方法就是run to cursor,單擊鼠標第8 行灰色區(qū)域,如果axd 將第8 行高亮就表示設置成功,然后選擇【execute】->【run to cursor】運行到光標,可以發(fā)現(xiàn)程序停止在第8 行。通過斷點調試可以觀察arm 寄存器數(shù)值變化,具體的操作方法在后面的實驗會具體介紹。圖1.8 axd調試窗口實驗二 匯編指令實驗1 實驗目的(1)了解ads 1.2 集成開發(fā)環(huán)境及armulator 軟件仿真。(2)掌握arm7tdmi 匯編指令的用
6、法,并能編寫簡單的匯編程序。(3)掌握指令的條件執(zhí)行和使用ldr/str 指令完成存儲器的訪問。2 實驗設備硬件:pc 機 一臺軟件:windows98/xp/2000 系統(tǒng),ads 1.2 集成開發(fā)環(huán)境3 實驗內容(1)使用ldr 指令讀取0x40003100上的數(shù)據(jù),將數(shù)據(jù)加1,若結果小于10 則使用str 指令把結果寫回原地址,若結果大于等于10,則把0寫回原地址。然后再次讀取0x40003100 上的數(shù)據(jù),將數(shù)據(jù)加1,判斷結果是否小于10周而復此循環(huán)。(2)使用ads 1.2 軟件仿真,單步、全速運行程序,設置斷點,打開寄存器窗口(processor registers)監(jiān)視r0、r1
7、 的值,打開存儲器觀察窗口(memory) 監(jiān)視0x40003100 上的值。4 實驗預習要求(1)仔細閱讀參考文獻1第4 章arm 指令系統(tǒng)的內容。(2)仔細閱讀產(chǎn)品光盤附帶文檔ads 集成開發(fā)環(huán)境及仿真器應用或其它相關資料,了解ads 工程編輯和axd 調試的內容 (本實驗使用軟件仿真) 。5 實驗步驟(1)啟動ads 1.2,使用arm executable image 工程模板建立一個工程instruction1。(2)建立匯編源文件test2.s,編寫實驗程序,然后添加到工程中。(3)設置工程鏈接地址ro base 為0x40000000,rw base 為0x40003000。設置
8、調試入口地址image entry point 為0x40000000。(6)編譯鏈接工程,選擇【project】->【debug】,啟動axd 進行軟件仿真調試。(7)打開寄存器窗口(processor registers),選擇current 項監(jiān)視r0、r1 的值。打開存儲器觀察窗口(memory) 設置觀察地址為0x40003100,顯示方式size 為32bit,監(jiān)視0x40003100 地址上的值。說明:在memory 窗口中點擊鼠標右鍵,size 項中可以選擇顯示格式為8bit、16bit 或32bit,如圖2.1 所示??梢詥尾竭\行程序,可以設置/取消斷點,或者全速運行程
9、序,停止程序運行,調試時觀察寄存器和0x40003100 地址上的值。運行結果見圖2.2。圖 2.1 memory 窗口顯示格式設置圖 2.2 程序運行結果6 實驗參考程序程序清單 2.1 匯編指令實驗參考程序29實驗三 c語言調用匯編實驗1 實驗目的掌握在 c 語言程序中調用匯編程序,了解atpcs 基本規(guī)則。2 實驗設備硬件:pc 機 一臺軟件:windows98/xp/2000 系統(tǒng),ads 1.2 集成開發(fā)環(huán)境3 實驗內容在 c 程序調用匯編子程序,實現(xiàn)兩個整數(shù)的加法運算。匯編子程序的原型為:uint32 add(uint32 x, uint32 y),其中uint32 已定義為uns
10、igned int。4 實驗預習要求(1)仔細閱讀arm 公司的atpcs 的相關文檔,比如atpcs.pdf。(2)仔細閱讀產(chǎn)品光盤附帶文檔ads 集成開發(fā)環(huán)境及仿真器應用或其它相關資料,了解ads 工程編輯和axd 調試的內容。(本實驗使用軟件仿真)5 實驗步驟(1)啟動ads 1.2,使用arm executable image 工程模板建立一個工程programc1。(2)建立源文件startup.s、add.s 和test.c,編寫實驗程序,然后添加到工程中。(3)設置工程鏈接地址ro base 為0x40000000,rw base 為0x40003000。設置調試入口地址imag
11、e entry point 為0x40000000。(4)設置工程鏈接選項,位于開始位置的起始代碼段設置為startup.o的start段。(5)編譯鏈接工程,選擇【project】->【debug】,啟動axd 進行軟件仿真調試。(6)在test.c文件中的調用add()的代碼處設置斷點,然后全速動行程序。(7)程序在斷點處停止。使用setp in 單步運行程序,觀察程序是否轉到匯編程序add.s。(8)選擇【processor views】->【variables】)打開變量觀察窗口,觀察全局變量的值,單步/全速運行程序,判斷程序的運算結果是否正確。6 實驗參考程序c 語言調用
12、匯編程序實驗的參考程序見程序清單3.1。匯編加法函數(shù)代碼見程序清單3.2。程序清單3.1 c語言調用匯編程序實驗參考程序程序清單3.2 匯編加法函數(shù)代碼實驗四 外部中斷與gpio輸出控制實驗1 實驗目的(1)掌握向量中斷控制器(vic)的設置。(2)掌握外部中斷引腳功能設置及外部中斷的工作模式設置。(3)了解中斷服務函數(shù)的編寫。2 實驗設備硬件:pc 機 一臺,magicarm2200-s 教學實驗開發(fā)平臺一套軟件:windows98/xp/2000 系統(tǒng),ads 1.2 集成開發(fā)環(huán)境3 實驗內容設置 p0.20 腳為eint3 功能,初始化為非向量中斷,并設置為電平觸發(fā)模式,然后等待外部中斷
13、。中斷服務程序將蜂鳴器控制輸出信號取反,然后等待中斷信號的撤消,最后清除中斷標志并退出中斷。4 實驗預習要求仔細閱讀參考文獻1第5.4.6 節(jié)外部中斷輸入的說明,第5.8 節(jié)向量中斷控制器的說明。5 實驗步驟(1)啟動ads 1.2,使用arm executable image for magicarm2200 工程模板建立一個工程vicdef_c。(2)在user 組中的main.c 中編寫主程序代碼。(3)選用debuginexram 生成目標,然后編譯鏈接工程。(4)短接magicarm2200-s 教學實驗開發(fā)平臺上的蜂鳴器跳線jp7,獨立按鍵jp11。斷開cf 卡跳線jp13、gpi
14、o 接口j17,ps2 跳線jp4。(5)選擇【project】->【debug】,啟動axd 進行jtag 仿真調試。(6)在中斷服務程序中設置斷點,全速運行程序,使eint3 為低/高電平,即反復按下與釋放key1。(7)單步/全速運行程序,觀察程序是否正確運行,蜂鳴器是否蜂鳴。6 實驗參考程序外部中斷實驗的參考程序見程序清單 4.1。程序清單 4.1 外部中斷實驗參考程序實驗五 pwm輸出實驗1 實驗目的掌握 pwm 功能,實現(xiàn)數(shù)模轉換。2 實驗設備硬件:pc 機 一臺,magicarm2200-s 教學實驗開發(fā)平臺一套軟件:windows98/xp/2000 系統(tǒng),ads 1.2
15、 集成開發(fā)環(huán)境3 實驗內容程序通過改變 pwm 占空比,使pwmdac 端口輸出步進升高的直流電壓。4 實驗預習要求(1)仔細閱讀參考文獻1第5.15 節(jié)脈寬調制器(pwm)的說明。(2)仔細閱讀本書第1 章的內容,了解magicarm2200-s 教學實驗開發(fā)平臺的硬件結構,注意pwmdac 部分的電路。5 實驗步驟(1)啟動ads 1.2,使用arm executable image for magicarm2200 工程模板建立一個工程pwmdac_c。(2)在user 組中的main.c 中編寫主程序代碼。(3)選用debuginexram 生成目標,然后編譯鏈接工程。(4)測量pwm
16、dac 測試圓孔的電壓。(5)選擇【project】->【debug】,啟動axd 進行jtag 仿真調試。(6)全速運行程序,用示波器或萬用表測量電壓。圖 5.1 pwm連接電路6 實驗參考程序數(shù)模轉換實驗的參考程序見程序清單 5.1。程序清單 5.1 數(shù)模轉換實驗參考程序實驗六 定時器實驗1 實驗目的熟悉 lpc2000系列arm7微控制器的定時器0/1 的基本設置及應用。2 實驗設備硬件:pc 機 一臺,magicarm2200-s 教學實驗開發(fā)平臺一套軟件:windows98/xp/2000 系統(tǒng),ads 1.2 集成開發(fā)環(huán)境3 實驗內容使用定時器 0 實現(xiàn)1 秒定時,控制蜂鳴器
17、蜂鳴。采用軟件查詢方式等待定時時間到達。4 實驗預習要求仔細閱讀參考文獻1第5.14 節(jié)定時器0 和定時器1 的說明。5 實驗步驟(1)啟動ads 1.2,使用arm executable image for magicarm2200 工程模板建立一個工程timebeep_c。(2)在user組中的main.c 中編寫主程序代碼。(3)選用debuginexram生成目標,然后編譯鏈接工程。(4)見圖2.16,短接magicarm2200-s 教學實驗開發(fā)平臺上的蜂鳴器跳線jp7。斷開cf 卡跳線jp13、gpio 接口j17。(5)選擇【project】->【debug】,啟動axd
18、進行jtag 仿真調試??梢匀龠\行程序,蜂鳴器會響一秒,停一秒,然后再響一秒依次循環(huán)。6 實驗參考程序定時器實驗的參考程序見程序清單6.1。程序清單 6.1 定時器實驗參考程序實驗七 µc/os-移植實驗1 實驗目的(1) 掌握將c/os-ii 操作系統(tǒng)移植到arm7 處理器的方法。(2) 了解c/os-ii 操作系統(tǒng)的基本原理和移植條件。2 實驗設備硬件:pc 機 一臺,magicarm2200-s 教學實驗開發(fā)平臺一套軟件:windows98/xp/2000 系統(tǒng),ads 1.2 集成開發(fā)環(huán)境,c/os-ii 操作系統(tǒng)(v2.52)3 實驗內容學習移植 c/os-ii 操作系統(tǒng)
19、到arm7 處理器,然后編寫一個簡單的多任務應用程序,實現(xiàn)led 流水燈控制。4 實驗預習要求(1) 仔細閱讀參考文獻4,了解c/os-ii 的組成和移植相關的文件內容。(2) 仔細閱讀參考文獻1第35 章和第7 章的內容,了解arm7 體系結構及其匯編編程,了解lpc2000 系列arm7 微控制器的硬件結構(如向量中斷控制器和定時器等)和c/os-ii 移植的相關說明。5 實驗原理(1) c/os-ii 概述c/os-ii 是一個完整的、可移植、可固化、可剪裁的占先式實時多任務內核。c/os-ii是用ansi c 語言編寫,包含一小部分匯編代碼,使之可以供不同架構的微處理器使用。c/os-
20、ii 可以管理64 個任務,具有信號量、互斥信號量、事件標志組、消息郵箱、消息隊列、任務管理、時間管理和內存塊管理等系統(tǒng)功能。c/os-ii 軟件體系結構如圖7.1 所示,由圖可以看出,c/os-ii 包括以下3 個部分:c/os-ii 核心代碼:包括10 個c 程序文件和1 個頭文件,主要實現(xiàn)了系統(tǒng)調度、任務管理、內存管理、信號量、消息郵箱和消息隊列等系統(tǒng)功能。此部分的代碼與處理器無關。c/os-ii 配置代碼:包括2 個頭文件,用于裁剪和配置c/os-ii。此部分的代碼與用戶實際應用相關。c/os-ii 移植代碼:包括1 個匯編文件、1 個c 程序文件和1 個頭文件,這是移植c/os-ii
21、 所需要的代碼。此部分的代碼與處理器相關。說明:移植代碼的文件名不是固定的,但為了保持 c/os-ii 系統(tǒng)的一致性,文件名一般也不要改變(即os_cpu.h、os_cpu_a.asm 和os_cpu_c.c)。圖 7.1 c/os-ii 軟件體系結構(2) c/os-ii 移植條件移植 c/os-ii 之前需要注意,目標處理器必須滿足以下幾點要求:處理器的 c 編譯器能產(chǎn)生可重入型代碼;處理器支持中斷,并且能產(chǎn)生定時中斷(通常為10100hz);用 c 語言就可以開/關中斷;處理器能夠支持一定數(shù)量的數(shù)據(jù)存儲硬件堆棧(可能是幾千字節(jié));處理器有將堆棧指針以及其它 cpu 寄存器的內容讀出,并保
22、存到堆?;騼却嬷腥サ闹噶?。lpc2000 系列arm7 微控制器可以滿足第2、4 和5 點要求,使用ads 1.2 的c 編譯器可以滿足第1、3 點要求。(3) c/os-ii 移植步驟1) os_cpu.h 的移植在 os_cpu.h 文件中定義與處理器相關(實際上是與編譯器相關)的數(shù)據(jù)類型,如boolean、int8u、int8s 等等。根據(jù)ads 1.2 編譯器的特性,定義代碼可參考程序清單7.1。程序清單 7.1 os_cpu.h與編譯器相關的數(shù)據(jù)類型在 os_cpu.h 文件中定義與處理器相關的宏,主要是進入臨界區(qū)的os_enter_critical 和退臨界區(qū)的os_exit_cr
23、itical,定義代碼可參考程序清單7.2。如程序清單7.2所列,將os_enter_critical()和os_exit_critical()定義為軟件中斷函數(shù),所以還要編寫相應的軟件中斷處理代碼(可以在os_cpu_c.c 文件中編寫)實現(xiàn)開/關中斷。同樣定義 os_task_sw()為軟件中斷函數(shù),并編寫有相應的軟件中斷處理代碼(調用osintctxsw 函數(shù))實現(xiàn)任務切換。程序清單 7.2 os_cpu.h與處理器相關的宏2) os_cpu_c.c 的移植在 os_cpu_c.c 文件中,需要編寫以下10 個簡單的c 函數(shù):ostaskstkinit();ostaskcreatehoo
24、k();ostaskdelhook();ostaskswhook();ostaskidlehook();ostaskstathook();ostasktickhook();osinithookbegin();osinithookend();ostcbinithook()。其中,9 個系統(tǒng)hook 函數(shù)可以為空函數(shù),也可以根據(jù)用戶自己的需要編寫相應的操作代碼。任務棧結構初始化函數(shù)ostaskstkinit,必須根據(jù)移植時統(tǒng)一定義的任務堆棧結構進行初始化,代碼參考程序清單7.3。程序清單 7.3 os_cpu_c.c函數(shù)ostaskstkinit3) os_cpu_a.s 的移植由于 ads1.2
25、 編譯器默認匯編文件后綴名為“s”,所以移植代碼os_cpu_a.asm 改名為os_cpu_a.s。在 os_cpu_a.s 文件中,需要編寫以下4 個簡單的匯編語言函數(shù):osstarthighrdy();osctxsw();osintctxsw();ostickisr()。其中,函數(shù) osctxsw 不是必須的,但必須要定義好函數(shù)os_task_sw(在os_cpu.h中聲明),以實現(xiàn)任務級任務切換。在 isr(中斷服務程序)中切換任務時會調用osintctxsw 函數(shù),代碼參考程序清單7.4。程序清單 7.4 os_cpu_a.s函數(shù)osintctxsw啟動 c/os-ii 是通過調用o
26、sstart()實現(xiàn),osstart()最終調用函數(shù)osstarthighrdy()運行多任務啟動前優(yōu)先級最高的任務。osstarthighrdy()函數(shù)的代碼參考程序清單7.5。說明:在os_cpu_c.c 文件已定義osstarthighrdy(),此函數(shù)直接調用_osstarthighrdy()。程序清單 7.5 os_cpu_a.s函數(shù)osstarthighrdy函數(shù) ostickisr 為系統(tǒng)時鐘節(jié)拍中斷函數(shù),這需要使用到處理器的定時器和定時中斷。為了達到集中地初始化硬件(定時器、中斷和i/o 等)的目的,此函數(shù)可以在用戶工程的啟動代碼文件中實現(xiàn),參考程序清單7.6。說明:系統(tǒng)時鐘節(jié)
27、拍中斷函數(shù)的名稱并不是固定的,也并不一定要在 os_cpu_a.s 文件中實現(xiàn)。程序清單 7.6 系統(tǒng)時鐘節(jié)拍中斷服務程序6 實驗步驟(1) 連接easyjtag 仿真器和magicarm2200-s,然后安裝easyjtag 仿真器的驅動程序(若已經(jīng)安裝過,此步省略)。(2) 為ads1.2 增加lpc2200(for magicarm2200)專用工程模板(若已增加過,此步省略)。(3) 建立一個項目目錄ucos-ii,添加c/os 2.52 源代碼和移植代碼(移植代碼在產(chǎn)品配套光盤上可以找到,其目錄名為arm)。將移植的pc 服務代碼arm_pc 復制到項目目錄ucos-ii 下。(4)
28、 將c/os 2.52 源代碼source(目錄)復制到項目目錄,此時ucos-ii 目錄的結構如圖7.2 所示。c/os 2.52 源代碼可以從參考文獻4的附帶光盤上獲得。說明:source 子目錄下存放c/os 2.52 源代碼,arm 子目錄存放移植代碼,arm_pc子目錄存放移植的pc 服務代碼(可通過串口向pc 機發(fā)送顯示信息)。圖 7.2 c/os-ii 目錄的結構(5) 啟動ads 1.2,使用arm executable image for ucosii(for magicarm2200)工程模板建立一個工程leddisp,工程存儲在ucos-ii 目錄下。(6) 打開工程窗口user 組中的main.c 文件,編寫實驗程序并保存。(7) 根據(jù)程序設計來更改os_cfg.h 文件,配置c/os-ii 操作系統(tǒng)。(對于本實驗,c/os-ii的配置使用模板默認設置即可)(8) 選用debuginexram 生成目
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年級數(shù)學下冊教案-5.3 長方形的面積(2)-北師大版
- 五年級下冊數(shù)學教案-2.1 分數(shù)的意義 ︳西師大版
- 2025年合同占股模板
- 一年級下數(shù)學教案-綜合練習-北師大版
- 2025年河北省石家莊市單招職業(yè)傾向性測試題庫附答案
- 2024年浸酸劑項目資金籌措計劃書代可行性研究報告
- 2025年湖南省郴州市單招職業(yè)適應性測試題庫審定版
- 2025年度心理咨詢師培訓朋輩督導小組保密合作協(xié)議
- 2025年度家禽養(yǎng)殖與食品安全監(jiān)管合作協(xié)議
- 2025年度導演與票務銷售公司聘用合同
- 工業(yè)自動化控制系統(tǒng)升級與維護服務合同
- 定崗定編定員實施方案(5篇)
- 藥品經(jīng)營質量管理規(guī)范
- 爆破工程師培訓
- 2024年云南省公務員考試《行測》真題及答案解析
- 教科版初中物理八年級下冊知識梳理
- 《飛科電器公司盈利能力存在的問題及完善對策(7800字論文)》
- 零星維修工程項目施工方案1
- 楚辭離騷的原文全文完整注音版、拼音版標準翻譯譯文及注釋
- 湖北省荊州市2024年七年級上學期期中數(shù)學試題【附答案】
- 刑事訴訟法課件
評論
0/150
提交評論