合工大嵌入式系統(tǒng)實驗報告_第1頁
合工大嵌入式系統(tǒng)實驗報告_第2頁
合工大嵌入式系統(tǒng)實驗報告_第3頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

計算機和信息學(xué)院《嵌入式系統(tǒng)》實驗報告學(xué)生姓名:學(xué) 號專業(yè)班級:2014年6月20日實驗一(:熟悉Linux開發(fā)環(huán)境一、實驗?zāi)康氖煜inuxMini6410的LinuxLinuxarm-linux-gcc編譯,minicom串口方式下載調(diào)試二、實驗內(nèi)容本次實驗使用Fedora9.0操作系統(tǒng)環(huán)境,安裝ARM-Linux的開發(fā)庫及編譯器。創(chuàng)建一個新目錄,并在其中編寫hello.cMakefile文件。學(xué)習(xí)在LinuxARM好的文件到目標開發(fā)板上運行。三、實驗設(shè)備及工具(包括軟件調(diào)試工具)硬件:Mini6410PC機Pentium500以上,10G軟件:PC機操作系統(tǒng)Fedora9+MINICOM+ARM-LINUX開發(fā)環(huán)境四、實驗步驟、建立工作目錄[root@zxtsmile]# mkdir[root@zxtsmile]#cdhello、編寫程序源代碼Linux下的文本編輯器有許多,常用的是viXwindowgedit等,開發(fā)過程中推薦使用vi。Kdevelope、anjuta軟件的界面和vc6.0類似,使用它們對于熟windows環(huán)境下開發(fā)的用戶更容易上手。實際的hello.c源代碼較簡單,如下:#include<stdio.h>main(){出現(xiàn)上面的界面,點擊回車,出現(xiàn)下圖printf(“helloworld\n”)出現(xiàn)上面的界面,點擊回車,出現(xiàn)下圖}我們可以是用下面的命令來編寫hello.chellovi[root@zxthello]#vihello.c3、編寫Makefilehello.c程序能夠運行,我們必須要編寫一個Makefile文件,Makefile文件新編譯等等更為復(fù)雜的命令。使用它帶來的好處就是自動編譯,只需要敲一個“3、編寫Makefilehello.c程序能夠運行,我們必須要編寫一個Makefile文件,Makefile文件新編譯等等更為復(fù)雜的命令。使用它帶來的好處就是自動編譯,只需要敲一個“make”命Makefile的優(yōu)越性,但當(dāng)工程比較大文件比較多時,不使用Makefile幾乎是不可能的。本次實驗用到Makefile文件如下:CC=armv4l-unknown-linux-gccEXEC=helloOBJS=hello.oCFLAGS+=LDFLAGS+=–staticall:$(EXEC)$(EXEC):$(OBJS)$(CC)$(LDFLAGS) –o $@$(OBJS)clean:-rm-f$(EXEC)*.elf*.gdb*.o4、編譯使用程序hello“make”:5、下載調(diào)試1、進入root終端輸入suroot,再輸入密碼即可。2、終端輸入minicom此時才能進行正常的下載。3、ctrl+a,再點擊s,出現(xiàn)下圖選擇第一個zmodem,回車。出現(xiàn)下圖回車,出現(xiàn)下圖輸入絕對路徑,出現(xiàn)下圖回車,出現(xiàn)下圖從上圖可以看出,文件未被下載,原因是mini6410板子已經(jīng)有了hello可執(zhí)行文件(之前下載的,若需要下載,則需要刪除之前的hellormhello刪除之后,繼續(xù)下載,出現(xiàn)下圖下載成功。4、運行程序./hello,或者在mini6410終端輸入hello五、思考題Makefile是如何工作的?其中的宏定義分別是什么意思?Makefilemake即可編譯,輸入makecleanmakefile是樣的最基本的東西。CC:EXECOBJSCFLAGES:編譯參數(shù);LDFLAGES:鏈接參數(shù);All:編譯主入口;clean:清除編譯。實驗一(:多線程使用程序設(shè)計一、實驗?zāi)康牧私舛嗑€程程序設(shè)計的基本原理pthread庫函數(shù)的使用。二、實驗內(nèi)容1、讀懂pthread.c的源代碼,熟悉幾個重要的pthread庫函數(shù)的使用。掌握共享鎖和信號量的使用方法。2makepthreadminicom驗。三、實驗設(shè)備及工具硬件:Mini6410PCPentium500以上,10G軟件:PC機操作系統(tǒng)Fedora9+MINICOM+ARM-LINUX開發(fā)環(huán)境四、實驗步驟vi編輯器或其他編輯器閱讀理解源代碼。makepthread可執(zhí)行文件minicom終端窗口。可能出現(xiàn)拔插USB數(shù)次。pthread,觀察運行結(jié)果的正確性。修改一些參數(shù),再次運行調(diào)試,加深對多線程的理解。實驗二(:A/D接口實驗一、實驗?zāi)康牧私庠趌inux環(huán)境下對S3C6410芯片的8通道10位A/D的操作和控制。二、實驗內(nèi)容學(xué)習(xí)A/DA/D系統(tǒng)對于系統(tǒng)的軟件和硬件要求ARM芯ARMA/DARM系統(tǒng)硬件的A/D利用外部模擬信號編程實現(xiàn)ARM循環(huán)采集AIN0通道,并且在超級終端上顯示。三、實驗步驟1、閱讀理解源碼使用vi編輯器或其他編輯器閱讀理解源代碼。2、編譯使用程序makecleanmakead可執(zhí)行文件3、下載調(diào)試換到minicom終端窗口。我們可以通過調(diào)節(jié)開發(fā)板上的W1可調(diào)電阻,可以看到不斷變化的轉(zhuǎn)換結(jié)果。四、思考題逐次逼近型的A/D轉(zhuǎn)換器原理是什么?答:逐次逼近型的A/D的A/D分型更為廣泛,其原理框圖如圖2.3.1所示,主要由逐次逼近寄存器SARD/A轉(zhuǎn)換器、SARD/A轉(zhuǎn)換后得到電壓Vc和待轉(zhuǎn)換模擬電壓V。進行比較。A/D轉(zhuǎn)換的重要指標包括哪些?答:分辨率、精度(絕對誤差,相對誤差,轉(zhuǎn)換時間,工作溫度范圍)ARMA/DARMA/D相關(guān)寄存器有哪幾個,對應(yīng)的地址是什么?答:寄存器名 地址ADC控制寄存器(ADCCON) 0X58000000ADC觸摸屏控制寄存器0X58000004ADC啟動延時寄存器ADCDAT0 0X580000CADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCCON)0X58000010如何啟動ARM開始轉(zhuǎn)換A/D,有幾種方式?轉(zhuǎn)換開始時ARM道的?如何判斷轉(zhuǎn)換結(jié)束?答:方式一:軟件啟動定義和A/D轉(zhuǎn)換相關(guān)的寄存器;定義和A/D轉(zhuǎn)換相關(guān)的寄存器初始化;RADCCON=0X1方式二:硬件啟動復(fù)位A/D轉(zhuǎn)換器;外接用高電平觸發(fā)ADCCON[0].轉(zhuǎn)換開始時ARM時知道轉(zhuǎn)換哪條通道的方式:通過對ADCCON[5:3]的未賦值來選擇通道。實驗二(:LED驅(qū)動程序以及測試使用程序一、實驗?zāi)康?、學(xué)習(xí)在LINUX下進行驅(qū)動設(shè)計的原理。2、了解LED驅(qū)動程序和使用測試程序的設(shè)計。二、實驗內(nèi)容1、讀懂LED驅(qū)動程序,熟悉驅(qū)動程序中調(diào)用的幾個函數(shù)。四、實驗步驟1、閱讀理解源碼四、實驗步驟1、閱讀理解源碼進入/code/04_leds目錄,使用vi編輯器或其他編輯器閱讀理解源代碼。2、編譯使用程序運行make產(chǎn)生ad可執(zhí)行文件[root@zxt/]#cd/arm6410s/code/04_leds/[root@zxt03_adc]#makeArm-linux-gcc–Wall-02led.c–oled3、下載調(diào)試在測試之前請先關(guān)閉led-player,即打開mini6410開發(fā)板上友善之臂選項stopled-player。換到minicomNFSmount開發(fā)主機的/arm2410s到/host目錄。[root@zxtroot]# minicom[root@zxtroot]# minicom[/mnt/yaffs]mount-tnfs-onolock6:/arm6410s[/mnt/yaffs]cd/host/code/04_leds/[/host/code/04_leds/]./led01[/host/code/04_leds/]./led11[/host/code/04_leds/]./led21[/host/code/04_leds/]./led31[/host/code/04_leds/]./led00/host五、實驗結(jié)果如下圖:六、實驗感想本次實驗讓我進一步學(xué)習(xí)到LINUXLED驅(qū)動程序和使用測試程序的設(shè)計;讀懂LEDLED測試使用程序,控制LED燈的亮或滅;掌握在Linux集成開發(fā)環(huán)境中編寫和調(diào)試程序的基本過程,了解ARM芯片的基本結(jié)構(gòu)和Linux內(nèi)容,加深了對Linux系統(tǒng)和嵌入式課程的興趣。實驗三:I2C-EEPROM編程實驗一、實驗?zāi)康牧私釯2C總線的基本原理理解如何通過I2C總線對EEPROM二、實驗內(nèi)容讀懂eeprog.c的源代碼,熟悉幾個重要的函數(shù)的使用。三、實驗設(shè)備及工具(包括軟件調(diào)試工具)硬件:Mini6410嵌入式實驗平臺、PC機Pentium500以上,硬盤10G以上。軟件:PC機操作系統(tǒng)Fedora9+MINICOM+ARM-LINUX開發(fā)環(huán)境四、實驗步驟1、閱讀理解源代碼使用vi編輯器或其他編輯器閱讀理解源代碼。2、編譯使用程序運行make產(chǎn)生ad可執(zhí)行文件3、下載調(diào)試換到minicom終端窗口,運行:輸入./i2ctest–r則讀。輸入./i2ctest–w則寫?,F(xiàn)象如下圖所示。五、思考題1、I2C總線的優(yōu)點是什么?答:硬件簡單,資源消耗少,只有時鐘和數(shù)據(jù)線。/現(xiàn)。協(xié)議設(shè)計精巧、易用、靈活。數(shù)據(jù),地址,指令都可傳。使用廣泛。2、I2C總線的啟動信號和結(jié)束信號有什么特點、。答:啟動信號。在時鐘線SCL保持高電平期間,數(shù)據(jù)線SDA上的電平被拉低(即負跳變),定義為I2C總線總線的啟動信號,它標志著一次數(shù)據(jù)傳輸?shù)拈_始。啟動信號建立的,在建立該信號之前I2C總線必須處于空閑狀態(tài)。停止信號。在時鐘線SCL保持高電平期間,數(shù)據(jù)線SDA被釋放,使得SDA返回高電平(即正跳變,稱為I2C總線的停止信號,它標志著一次數(shù)據(jù)傳輸?shù)慕K止。停止信號也是一種電平跳I2C總線將返回空閑狀態(tài)。實驗四:串行端口程序設(shè)計一、實驗?zāi)康?、了解在linux 環(huán)境下串行程序設(shè)計的基本方法。2、掌握終端的主要屬性及設(shè)置方法,熟悉終端I/O函數(shù)的使用。3、學(xué)習(xí)使用多線程來完成串口的收發(fā)處理。二、實驗內(nèi)容讀懂程序源代碼,學(xué)習(xí)終端I/O串口的接收和發(fā)送程序設(shè)計中。三、預(yù)備知識1、有C語言基礎(chǔ)。2、掌握在Linux 下常用編輯器的使用。3、掌握Makefile的編寫和使用。4、掌握Linux 下的程序編譯和交叉編譯過程三、實驗原理異步串行I/O方式是將傳輸數(shù)據(jù)的每個字符一位接一位(例如先低位、后高位)I/O可以減首先要分割成位,再按位組成字符。為了恢復(fù)發(fā)送的信息,雙方必須協(xié)調(diào)工作。在微型計算機中大量使用異步串行和結(jié)束(),字符和字符間還可能有長度不定的空閑時間,因此效率較低。圖2.2.1串行通信字符格式圖2.2.1給出異步串行通信中一個字符的傳送格式。開始前,線路處于空閑狀態(tài),送出連續(xù)“1”。傳送開始時首先發(fā)一個“0”作為起始位,然后出現(xiàn)在通信56位或8位,一般采用ASCII編碼。后面是奇偶校驗位,根據(jù)約定,用奇偶校驗位將所傳字符中為“1”的位數(shù)湊成奇數(shù)個或偶數(shù)個。也可以約定不要奇偶校驗,這樣就取消奇偶校驗位。最后是表示停止位的“1”信號,這個停止位可以約定持續(xù)1位、1.5位或2位的時間寬度。至此一個字符傳送完畢,線路又進入空閑,持續(xù)為經(jīng)過一段隨機的時間后,下一個字符開始傳送才又發(fā)出起始位。每為等。接收方按約定的格式接收數(shù)據(jù),并進行檢查,可以查出以下三種錯誤:幀格式錯:一個字符從起始位到停止位的總位數(shù)不對。產(chǎn)生溢出錯??盏腗ODEM連接電纜,其連接方式如下:圖2.2.2實用RS-232C通訊連線四、實驗步驟1、閱讀理解源碼使用vi編輯器或其他編輯器閱讀理解源代碼。2、編譯使用程序?qū)嶒炍澹篞T編程使用一、實驗?zāi)康氖煜T編程的完整步驟,理解信號和槽機制;學(xué)會使用designer實驗五:QT編程使用一、實驗?zāi)康氖煜T編程的完整步驟,理解信號和槽機制;學(xué)會使用designer圖形界面設(shè)計工具。二、實驗內(nèi)容本實驗將介紹如何創(chuàng)建一個簡單的Qtopia2.2.0程序,并將其集成到Qtopia2.2.0Qtopia2.2.0括使用designerarm編寫的計算器只提供加法功能。三、實驗設(shè)備及工具(包括軟件調(diào)試工具)硬件:Mini6410PC機Pentium500以上,10G軟件:PC機操作系統(tǒng)Fedora9+MINICOM+ARM-LINUX開發(fā)環(huán)境四、實驗原理QtQt是一個跨平臺的C++TrollTech公司于1995并于2008617日被NOKIANOKIA公司在跨平臺軟件研發(fā)方面的實力,更名為QtSoftware。3、下載調(diào)試切換到minicom終端窗口,運行term,觀察運行結(jié)果的正確性。由于內(nèi)核已經(jīng)將串口1作為終端控制臺,所以可以看到term發(fā)出的數(shù)據(jù),2試。Qt同XWindow上的MotifOpenwinGTK等圖形界面庫和Windows平臺上的MFC,OWL,VCL,ATL是同類型的東西,但是Qt具有下列優(yōu)點::使用Qt開發(fā)的軟件,相同的代碼可以在任何支持的平臺上編譯和運行,而不需要修改(或修改極少)源代碼。會自動依平臺的不同,表現(xiàn)平臺特有的圖形界面風(fēng)格。Linux/X1XWindowSyste(如SolariAIHP-ULinuBS。支持KDevelop和EclipseIDE集成。MaAppleMacOSCocoaUniversalBinarXcode編輯、編譯和測試。Microsoft。支持VisualStudio集成。Embedded:用于嵌入式Linux通過自己的視窗系統(tǒng),不需依賴XWindow,直接寫入LinuxQVFb,方便在桌面系統(tǒng)上進行嵌入式測試。WindowsCE/Mobile:用于Windows。Symbian:用于Symbian。Meego:用于Meego。面向?qū)ο驫t的良好封裝機制使得Qt的模塊化程度非常高,可重用性較好,對于用戶開發(fā)來說是非常方便的。Qt提供了一種稱為signals/slots的安全類型來替代callback元件之間的協(xié)同工作變得十分簡單。豐富的API不但擁有了完善的C++OpenGLXMLWebKitQtCodeLess;CreateMore;DeployAnywhere五、實驗步驟下面的章節(jié)將一步步演示如何構(gòu)造這個程序,在這開始之前,我們先創(chuàng)建一個qtopia2_apps目錄,用于專門存放我們自已編寫的qtopia2.2.0程序,在Linux終端中鍵入以下命令創(chuàng)建該目錄:#mkdir-p/opt/qtopia2_apps然后在qtopia2_apps目錄下創(chuàng)建mycalc作為本示例的項目目錄,在終端上輸入如下命令:#cd/opt/qtopia2_apps#mkdirmycalc1、使用designer工具設(shè)計圖形界面Qt/Qtopia都帶有designer工具,可以設(shè)計所見即所得的圖形界面,我們現(xiàn)在就使用designer工具來設(shè)計mycalc程序的主界面,主界面將保存成名為main_form_base.ui文件,輸入如下命令啟動designer工具,并以ui文件名作為參數(shù):#cdmycalcs#/opt/FriendlyARM/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/designermain_form_base.ui在彈出的NewFormWidgeO的QDialog或其它:這時,將會顯示窗口的編輯畫面,我們需要修改窗口的大小,使得3.5寸的屏幕也能完整顯示我們的程序,并且需要修改窗口標題。在窗體上放置控件在工具欄上點擊要放置的控件,再在窗口空白處點擊一下即可。根據(jù)我們最初的設(shè)計思路,我們需要在窗口上放置以下控件:二個Button按鈕): 一個是“=,用于點擊時計算結(jié)果,一個是Clos,用于退程序。三個Line單行文本): 兩個用于輸入要執(zhí)行加法運算的數(shù)字另一個用于顯示算結(jié)果。一個Label(請參考下圖放置上面列出的控件,控件的工具欄圖標在下圖中我已經(jīng)以紅色方框標記出來了:放置完控件之后,我們將Label+Label標簽,然后在彈出的編輯框上輸入“+”即可;個=”,Clos動即可。修改控件屬性示修改三個文本編輯控件的屬性,三個文本框的實例名稱分別被修改成m_x,m_y和m_result。為按鈕添加點擊事件的處理slotClose按鈕的點擊事件,新建slot:1)點擊EdiSlotslot編輯對話框。在上面的對話框中,點擊”New Slot“按鈕, 然后在Slot 編輯框中輸“calcButtonClicked()”。Slot“按鈕,并在Slot編輯框中輸入“closeButtonClicked()”,OK保存并退出該對話框。至此,slotslot函數(shù)和按鈕的點擊事件對應(yīng)起來:單擊工具欄上的ConnectSignal/Slots圖然后參照下圖所示進行操作按鈕上按下鼠標左鍵不放然后拖動到窗口的空白處放開鼠標,操作完成后將會彈出 EditConnects對話框:在彈出的EditConnects對話框中,將clicked()事件連接到calcButtonClicked()slot數(shù)。Close按鈕。Close按鈕的clicked()事件連接到closeButtonClicked()slot至此,界面設(shè)計完畢,可以進入寫代碼環(huán)節(jié)了。2、編寫代碼界面設(shè)計完,現(xiàn)在開始為mycalc編寫代碼,我們需要創(chuàng)建三個源代碼文件,一個是頭文件main_form.h,一個是源代碼文件main_form.cpp,一個是main.cpp,分別在以下章節(jié)中創(chuàng)建這些文件:編寫程序入口main.cpp首先用vi編輯器創(chuàng)建并打開main.cpp文件:#vimain.cpp在vi編輯器中輸入如下源代碼內(nèi)容:#include"main_form.h"#include<qtopia/qpeapplication.h>QTOPIA_ADD_APPLICATION("mycalc",TMainForm)QTOPIA_MAINmain.cpp只有4行源代碼,它的實現(xiàn)很簡單,宏展開后會是一個main函數(shù),然后創(chuàng)建QPEApplicationTMainFormmain.cpp所用到的頭文件main_form.h和TMainForm類到目前為止還不存在,我們接下來就要新建它們。編寫主窗口頭文件main_form.h接下來用vi編輯器創(chuàng)建并打開main_form.h文件:#vimain_form.h在vi編輯器中輸入如下源代碼內(nèi)容:#if!defined( MAIN_FORM_H #define MAIN_FORM_H #include"main_form_base.h"#include<qsocketnotifier.h>classTMainForm:publicTMainFormBase{Q_OBJECTpublic:TMainForm(QWidget*parent=0,constchar*name=0,WFlagsf=WType_TopLevel):TMainFormBase(parent,name,f){}virtual~TMainForm(){}publicslots:voidcalcButtonClicked();voidcloseButtonClicked();};#endifmain_form.h文件中包含了main_form_base.h頭文件,這個main_form_base.huic編譯器根據(jù)main_form_base.ui文件自動生成的。在自動生成的main_form_base.h頭文件,是Qt自帶的uic編譯器由main_form_base.ui轉(zhuǎn)換成的C++程序代碼這部分代碼實現(xiàn)了界面的基類TMainFormBase,并定義了相關(guān)slot函數(shù),因此,要使用我們自已用 designer設(shè)計的程序界面,我們只需將主窗口TMainForm從TMainFormBase類繼承即可由于我們接下來要編寫按鈕功能的代碼所我們還需要重載calcButtonClicked()和closeButtonClicked()函數(shù)。編寫主窗口源文件main_form.cpp接下來用vi編輯器創(chuàng)建并打開main_form.cpp文件:#vimain_form.cpp在vi編輯器中輸入如下源代碼內(nèi)容:#include"main_form.h"#include<qlineedit.h>voidTMainForm::calcButtonClicked(){m_result->setText("");if(m_x->text().isEmpty()||m_y->text().isEmpty()){return;}boolok=false;intx=m_x->text().toInt(&ok);if(!ok){m_x->setText("");return;}ok=false;inty=m_y->text().toInt(&ok);if(!ok){m_y->setText("");return;}m_result->setText(QString::number(x+y));}voidTMainForm::closeButtonClicked(){close();}上述源代碼主要實現(xiàn)了 calcButtonClicked()和closeButtonClicked() 這兩個slot函數(shù),closeButtonClicked比較簡單,直接調(diào)用基類的close()函數(shù)關(guān)閉窗口即可退出程序而calcButtonClicked函數(shù)則取m_x和m_y這兩個文本框的值,然后相加將結(jié)果放到m_result文本框中其間進行了一些容錯處理比如如果用戶輸入的不是數(shù)字則拒絕計算結(jié)果并清空該文本框。編寫項目文件源代碼寫完了,在編譯之前,還得再寫一個接下來用vi編輯器創(chuàng)建并打開mycalc.pr

溫馨提示

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

最新文檔

評論

0/150

提交評論