嵌入式課程設(shè)計試驗報告_第1頁
嵌入式課程設(shè)計試驗報告_第2頁
嵌入式課程設(shè)計試驗報告_第3頁
嵌入式課程設(shè)計試驗報告_第4頁
嵌入式課程設(shè)計試驗報告_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、鑿斗親乂大季信息工程學院嵌入式系統(tǒng)開發(fā)技術(shù)課程設(shè)計(實習)報告信息工程學院編制 TOC o 1-5 h z 任務(wù)項目2按鍵中斷控制串口 3目的3/ 18 HYPERLINK l bookmark41 o Current Document 內(nèi)容3要求3 HYPERLINK l bookmark38 o Current Document 任務(wù)項目3 PWM控制蜂鳴器以及通過串口控制其頻率 6目的6內(nèi)容 6要求 6任務(wù)項目4看門狗定時器編程 9目的9內(nèi)容 9要求 9任務(wù)項目5 u-boot源碼詳細分析 12目的12內(nèi)容12要求 12 HYPERLINK l bookmark67 o Current

2、Document 附錄12 代碼注釋15心得體會18/ 18按鍵中斷控制串口任務(wù)項目2目的1.)熟悉裸機按鍵中斷的發(fā)生及通過串口輸出字符過程。(1內(nèi)容2.獨立編寫程序?qū)崿F(xiàn):時發(fā)生中斷,設(shè)計中斷服務(wù)函數(shù)使得蜂鳴器鳴響同時)當 按下按鍵SW7(1。串口輸出SW7時發(fā)生中斷,設(shè)計中斷服務(wù)函數(shù)使得蜂鳴器結(jié) 束鳴響SW82)當按下按鍵(SW8;同時串口輸出要求3.請將實驗過程截圖黏貼到下面的空白處。/ 18/ 18 ./ 18任務(wù)項目3PWM控制蜂鳴器以及通過串口控制其頻率1.目的PWM 定時器、串口程序的編寫。(1)熟悉裸機下內(nèi)容PWM1)參照課本程序調(diào)試運行使得定時器能控制蜂鳴器;(”時蜂鳴器能以不

3、同的頻”和“B2()加入串口程序使得當在串口輸入“入率鳴響。提示:可參看教材中斷這一章編寫程序。3.要求請將實驗過程截圖黏貼到下面的空白處。/ 18/ 18/ 18任務(wù)項目4看門狗定時器編程1.目的1)熟悉裸機下看門狗定時器程序的編寫、測試及運行。(內(nèi)容2.)參看課本程序,調(diào)試運行,實現(xiàn)通過定時器精確控制蜂鳴器延時1秒鐘;1 (。) 控制蜂鳴器鳴響使之模仿簡單歌曲讀書郎(2提示:參看系統(tǒng)時鐘和定時器這一章編寫程序。要求請將實驗過程截圖黏貼到下面的空白處。什 UC 11C 1 ._. JIL1 L1 己1十 I I I_l a I C L-LL gliCU 11 LJ All-cL,-.J 凸

4、D ./ ./# de fine TCNT02已 unsigned int 0 xE250002C) int mainO char by:e;CPDOCON |-0 x200;whil 已(I.1uart_ceid_ctrinj (rnPLease cel ect A or B t change the mode rEn) byt 已= uart_T 已 c:?_byt 已0;uart_send_byte(oyte);i f (byt 已二二A)/uart_s已(rVi mode lVrii);TCFGO 二 65;TCFG1 = 38;TCNTR2 = 12FfinVl TCMPB2 二 T

5、CNTB2/2;TCON = 114);TCON = 113);TCQN 二if (Wk = B ) .n/uart s已nd strins mode Nn):TCFGO 二 65;TCFG1 = 38;TCNTB2 = 12500V1;TCMPB2 二 TCNTB2/50:TCON = 114);TCON 二 113);TCON = (112)/ 18/ 18/ 185u -boot源碼詳細分析任務(wù)項目1.目的u-boot工程的總體結(jié)構(gòu)。(1)熟悉u-boot的流程、主要的數(shù)據(jù)結(jié)構(gòu)、內(nèi)存分配。(2)熟悉u-boot的重 要細節(jié),主要分析流程中各函數(shù)的功能。(3)熟悉2.內(nèi)容 S5PV210

6、u-boot 源碼分析要求3.源碼注釋,查看相關(guān)數(shù)據(jù)手冊,添加代碼注釋,以實驗臺為基數(shù),請?zhí)砑觰-booti 部分的50每組完成行代碼。注釋添加示例:Start.S中一段程序:.globl _start_start: b reset / b是跳轉(zhuǎn)指令,即跳轉(zhuǎn)到reset標簽處。接著返 回到此處。0 x0 0 x40 x80 xc /設(shè)置中斷向量表 ldr pc, _undefined_instructionpc, _software_interruptldrpc, _prefetch_abort ldrpc, _data_abort ldrpc, _not_usedldrpc, _irq ld

7、rpc, _fiq ldr附錄1. u-boot啟動流程/ 18。下面只是就功能方面對它們做說明,實bl2, bl1, bl01.1啟動階段分為3個, 這幾個階段的劃分是也就是說,際設(shè)計的時候,也許會對其具體功能做出調(diào)整, 就功能而言的,不能看得太死。到8kb的bl1:出廠的時候就固化在bl0irom中一段代碼,主要負責拷貝中運行。值得注意的是大小內(nèi)部sram(Internal SRAM)s5pv210的一個96kb,容量的擴增是為的大小可以達到16kbInternal SRAMs5pv210的支持的bl1bl1變得越來復(fù)雜而做的。雖然如此,但目前我們制 作出來的了適應(yīng)bootloder 8k

8、b以內(nèi),同樣能滿足需求。的大小仍然可以保持 在,)16kb大小,原因上一點提過了(s5pv210 bl1: u-boot的前8kb代碼也支 持我設(shè)的搬運工作(主要負責完成代碼除了初始化系統(tǒng)時鐘和一些基本的硬件外, nand (bl1+bl2)從bl2),也就是將完整的u-boot代碼而不僅僅是計成搬運 bl1+bl2, 。mmcSD等的存儲器中讀取到內(nèi)存中,然后跳轉(zhuǎn)到內(nèi)存中運行 u-bootflash或者oQSbl2:完成全面的硬件初始化和加載OS到內(nèi)存中,接著運行手冊中有詳細描述。見s5pv210_irom_application上述幾個階段的流 程描述在1:下圖圖 13 / 18為主,另外

9、還有start.S1.2首先把啟動部分的代碼分為3部分,以。,mem_setup.S, ctr0.Slowlevel_init.SDRAM 尤其是系統(tǒng)時鐘和其中 lowlevel_init.S主要是一部分硬件的初始化,一旦被搬運到內(nèi)存中運行,那么是必須要跳過時鐘和u-boot的初始化。如果的 初始化的,因為這在搬運之前已經(jīng)做過了。并且如果代碼在內(nèi)存中運DRAM, 那必然導致崩潰!行的時侯你卻去初始化DRAM相關(guān)代碼放在這個文件中。DRAM初始化代碼和MMUmem_setup.S: 。u-boot自帶的代碼文件,存放匯編函數(shù)mainctr0.S:中的足路徑1.3啟動代碼相關(guān)的幾個文件在u-boo

10、t)/arch/arm/cpu/armv7/start.S (需要自己修改:start.S)/board/samsung/zsy210/ lowlevel_init.S (需要自己修改lowlevel_init.S :需/board/samsung/zsy210/ mem_setup.S(u-boot 沒有,mem_setup.S:)要自己添加),一般不需要修改/arch/arm/lib/ctr0.S (u-boot自帶ctr0.S:2.啟動過程原理,norflash須要明白的一點是,當代碼從存儲介質(zhì)(nand flash, SD必接著會有u-boot,)中搬運到了 DRAM中后隨即會跳轉(zhuǎn)到內(nèi)

11、存中運行onenand 等中,而給start.S(relocate_code)的過程,relocate_code子函數(shù)在一個重定位 u-boot當判斷到當前crt0.S中的main子函數(shù)。relocate_code子函數(shù)傳參數(shù)的 是代碼從低地址處u-boot在內(nèi)存的低地址處,那么relocate_code就會工作,把。而搬運的u-boot再 搬運到內(nèi)存地址的頂端,然后跳轉(zhuǎn)到新的位置去繼續(xù)運行中 計算出來/arch/arm/lib/board.c中)(目標地址是在board_init_f()函數(shù)此函數(shù)在 的, 見圖2。-2圖 14 / 18圖中同樣也表現(xiàn)出啟動的start.S為主線,畫出了其程序

12、流程圖,下面,以的完整代碼,所以后面直接貼出start.S整個流程和啟動代碼文件間的組織關(guān) 系。見圖至于逐句匯編的分析不是本文的重點。大家結(jié)合流程圖相信都可以看明 白,3.3圖5.代碼注釋搬遷完成relocate_done:/ 181. 2.3.bx lr /。ir 中存放的地址處即跳轉(zhuǎn)到4. 5. _rel_dyn_start_ofs: )/r2=0 x64854(/* r2 - rel dyn start ofs */反匯編.word _rel_dyn_start -6. _start /r2=0 x64854(反匯編)/* r2 - rel dyn start ofs */ _rel_d

13、yn_end_ofs:7. /r3=0 x6d104(反匯編)/* r3 - rel dyn end ofs */.word _rel_dyn_end - _start8._dynsym_start_ofs:9. ) /r10=0 x6d104(反匯編/* r10 - sym table ofs */.Word_dynsym_start - _start 10.ENDPROC(relocate_code) 11.12.預(yù)編譯 13.#endif/ 14.啟動 15.進入 CPuENTRY(c_runtime_cpu_setup)/*16.* If I-cache is enabled inva

14、lidate it 17.*/18./ 19.結(jié)束預(yù)編譯#ifndef CONFIG_SYS_ICACHE_OFF 的協(xié)/ARM mcr p15, 0, r0, c7, c5, 0 invalidate icache 處理命令 20.的協(xié)處理命令 DSB/ARMmcrp15, 0, r0, c7, c10, 421.的協(xié)處理命令 ISB/ ARMmcrp15, 0, r0, c7, c5, 422./#endif 預(yù)編譯/*24.移動向量表 * Move vector table25. / */26.結(jié)束預(yù)編譯 27. /#if !defined(CONFIG_TEGRA20)/* Set v

15、ector address inCP15 VBAR register */28./ 18從內(nèi)存中讀出 ldr r0, =_start29. / /三項相加 30.add r0, r0,r9/協(xié)處理 31. mcr p15, 0, r0, c12, c0, 0 Set VBAR /結(jié)束預(yù)編譯32. #endif /* !Tegra20 *33. lr 跳轉(zhuǎn)到 bx lr/34.35.開始 ENDPROC(c_runtime_cpu_setup)/cpu36. 37./*無效/ * void save_boot_params(u32 r0, u32 r1, u32 r2, u32 r3)40.啟動參數(shù)保存_attribute_(weak);* 41. *42.堆棧指 * Stack pointer is not yet initialized at this moment/43.針尚未初始化不/ 44. * Don, t save anything to stack even if compiled with -00保存任何堆棧即使編譯* 45. 46.* */ENTRY(save_boot_params)/ 47. back to my calle

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論