實驗一-C語言程序?qū)嶒瀇第1頁
實驗一-C語言程序?qū)嶒瀇第2頁
實驗一-C語言程序?qū)嶒瀇第3頁
實驗一-C語言程序?qū)嶒瀇第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

昆明理工大學(xué)信息工程與自動化學(xué)院學(xué)生實驗報告〔2023———2023學(xué)年第2學(xué)期〕課程名稱:嵌入式系統(tǒng)設(shè)計開課實驗室:4432023年4月10日年級、專業(yè)、班學(xué)號姓名成績實驗工程名稱C語言程序?qū)嶒炛笇?dǎo)教師江虹教師評語該同學(xué)是否了解實驗原理: A.了解□ B.根本了解□ C.不了解□該同學(xué)的實驗?zāi)芰Γ? A.強□ B.中等□ C.差□該同學(xué)的實驗是否到達要求: A.到達□ B.根本到達□ C.未到達□實驗報告是否標(biāo)準(zhǔn): A.標(biāo)準(zhǔn)□ B.根本標(biāo)準(zhǔn)□ C.不標(biāo)準(zhǔn)□實驗過程是否詳細(xì)記錄: A.詳細(xì)□ B.一般□ C.沒有□教師簽名:年月日實驗一C語言程序?qū)嶒炓弧嶒災(zāi)康恼莆战⒏就暾腁RM工程,包含啟動代碼,連接腳本等;了解ARM7啟動過程,學(xué)會使用EmbestIDE簡單的C語言程序和匯編啟動代碼并進行調(diào)試;掌握命令腳本和鏈接腳本的作用;掌握如何指定代碼入口地址與入口點;掌握通過memory/register/watch/variable窗口分析判斷結(jié)果。二、實驗原理1.ARM異常向量表當(dāng)正常的程序執(zhí)行流程掛起時,稱之為異常。在處理異常之前,必須保存當(dāng)前的處理器狀態(tài),以便從異常程序返回時可以繼續(xù)執(zhí)行當(dāng)前的程序。ARM異常向量表如表2-2所示。表2-2ARM異常向量表地址異常入口模式優(yōu)先級0x00000000復(fù)位管理10x00000004未定義指令未定義60x00000008軟件中斷管理60x0000000C預(yù)取中止中止50x00000010數(shù)據(jù)中止中止20x00000014保存保存0x00000018IRQIRQ40x0000001CFIQFIQ3處理器允許多個異常同時發(fā)生。這時,處理器會按照表2-3中的優(yōu)先級順序進行處理。由上可見,復(fù)位〔Reset〕入口是整個程序的實際入口點。因此,編寫代碼時,第一條語句在0x00000000處開始執(zhí)行。2.命令腳本文件用戶在集成環(huán)境與目標(biāo)板連接時、軟件調(diào)試過程中以及復(fù)位目標(biāo)板后,有時需要集成環(huán)境自動完成一些特定的功能,比方復(fù)位目標(biāo)板、去除看門狗、屏蔽中斷存放器、存儲區(qū)映射等,這些特定的功能可以通過執(zhí)行一組命令序列完成,保存一組命令序列的文本文件稱為命令腳本文件(EmbestIDE使用.cs作為命令腳本文件擴展名)。命令腳本文件中各行以“;〞號開始作為注釋內(nèi)容,分號前是一條命令。但凡可以在調(diào)試命令窗口使用的命令,都可以在腳本文件中使用,包括執(zhí)行腳本文件命令“SCRIPT〞。命令腳本文件執(zhí)行時按照命令在腳本文件中排列的先后順序自動連續(xù)地執(zhí)行。(1)命令腳本文件的兩種執(zhí)行方法命令輸入窗口輸入:script腳本文件名;在工程設(shè)置對話框調(diào)試屬性頁可選擇命令腳本文件,在IDE和目標(biāo)系統(tǒng)連接后首先自動執(zhí)行。(2)常用命令介紹1)GO–執(zhí)行程序語法: go說明:從當(dāng)前PC執(zhí)行目標(biāo)程序。2)MEMWRITE–存儲區(qū)寫語法: memwrite[–e]地址數(shù)值說明:向存儲區(qū)指定地址寫入數(shù)值。3)REFRESH–刷新窗口語法: refresh說明:刷新所有窗口命令。調(diào)試命令執(zhí)行后,各窗口相關(guān)內(nèi)容并不更新,用戶可以調(diào)用本命令刷新界面各窗口,保持與實際內(nèi)容一致。4)REGWRITE–存放器寫語法: regwrite存放器名稱存放器值說明:寫存放器5)RESET–復(fù)位目標(biāo)設(shè)備語法: reset說明:復(fù)位目標(biāo)設(shè)備6)STOP–停止執(zhí)行程序語法: stop說明:停止目標(biāo)板運行3.鏈接腳本文件所有的鏈接都是通過鏈接腳本來控制實現(xiàn)的。這些鏈接腳本文件使用鏈接命令語言編寫。鏈接腳本的最主要作用是描述我們編寫的文件中這么多個局部應(yīng)該如何的相應(yīng)擺放在輸出文件中,并控制存儲區(qū)如何定位這些輸出文件。同時,如果需要,我們還可以使用鏈接腳本文件實現(xiàn)其它功能。大局部鏈接腳本文件都是很簡單的。最簡單的鏈接腳本只有一行命令:SECTIONS。使用SECTIONS命令來告訴存儲區(qū)應(yīng)該如何擺放輸出文件。內(nèi)嵌匯編語言GCC支持大局部根本的內(nèi)嵌匯編語言,編譯器遇到這個聲明時會在輸出流中插入一個匯編語言標(biāo)記。一個根本的內(nèi)嵌匯編語言例子如下:__asm__("movr1,r2")三、實驗內(nèi)容用C語言編寫延時函數(shù),在C語言中嵌入?yún)R編語言,使用匯編指令實現(xiàn)讀/寫某存儲單元的值。下面是ARM的啟動文件init.s及鏈接腳本文件ldscript的參考程序:參考程序init.s:#.arm.global_start.text_start:#設(shè)置中斷/異常向量BReset_HandlerUndefined_Handler:BUndefined_HandlerSWI_Handler: BSWI_HandlerPrefetch_Handler:BPrefetch_HandlerAbort_Handler: BAbort_HandlerNOP IRQ_Handler:BIRQ_HandlerFIQ_Handler:BFIQ_HandlerReset_Handler:LDR sp,=0x00002000#----------------------------------------------------------------#-BranchonCcodeMainfunction(withinterworking)#-BranchmustbeperformedbyaninterworkingcallaseitheranARMorThumb#-mainCfunctionmustbesupported.Thismakesthecodenotposition-#-independant.ABranchwithlinkwouldgenerateerrors#----------------------------------------------------------------.extern__mainldrr0,=__mainmovlr,pcbxr0#----------------------------------------------------------------#-Loopforever#-Endofapplication.Normally,neveroccur.#-CouldjumponSoftwareReset(B0x0).#----------------------------------------------------------------End:BEnd.end鏈接腳本文件ldscript:SECTIONS{ .=0x0; .text:{*(.text)} .data:{*(.data)} .rodata:{*(.rodata)} .bss:{*(.bss)}}四、實驗步驟:將C程序、init.s和ldscript參加到新建的工程中,注意Linker的設(shè)置。由于用到了初始化文件,故需相應(yīng)地指明程序入口地址;編譯、下載調(diào)試,結(jié)合實驗內(nèi)容觀察程序運行。Main函數(shù):/**********************************************************************************************File: main.c*Author: embest*Desc: cmainentry*History: *********************************************************************************************//*---includefiles---*/#include"44blib.h"#include"44b.h"#include"stdio.h"/*---functiondeclare---*/voidMain(void);/*---externfunction---*/externvoidDigit_Led_Test();/*---functioncode---*//**********************************************************************************************name: main*func: ccodeentry*para: none*ret: none*modify:*comment: *********************************************************************************************/voidMain(void){ chartmp;sys_init();/*Initial44B0X'sInterrupt,PortandUART*/_Link();/*PrintMiscinfo*/ /*printfinterface*/ Uart_Printf("\nEmbestS3C44B0XEvaluati

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論