嵌入式試驗(yàn)指導(dǎo)使用版_第1頁
嵌入式試驗(yàn)指導(dǎo)使用版_第2頁
嵌入式試驗(yàn)指導(dǎo)使用版_第3頁
嵌入式試驗(yàn)指導(dǎo)使用版_第4頁
嵌入式試驗(yàn)指導(dǎo)使用版_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)一基本接口實(shí)驗(yàn)(一)實(shí)驗(yàn)?zāi)康?. 掌握ARM的串行口工作原理2. 學(xué)習(xí)編程實(shí)現(xiàn)ARM的UART通訊3. 掌握S3C2410寄存器配置方法4. 中斷的作用5. 掌握嵌入式系統(tǒng)中斷的處理流程6. 掌握ARM中斷編程預(yù)備知識(shí)1. 了解ADT集成開發(fā)環(huán)境的基本功能2. 學(xué)習(xí)串口通訊的基本知識(shí)3. 熟悉S3C2410串口有關(guān)的寄存器 試驗(yàn)設(shè)備1. JXARM9-2410教學(xué)實(shí)驗(yàn)箱2. ADT1000仿真器和ADT IDE集成開發(fā)環(huán)境3. 串口連接線 試驗(yàn)內(nèi)容一實(shí)現(xiàn)查詢方式串口的收發(fā)功能。接收來自串口 (通過超級(jí)終端)的字符并將接收到的字符發(fā)送到超級(jí)終端基礎(chǔ)知識(shí)串行通信接口電路組成1. 可編程的串行接

2、口芯片2. 波特率發(fā)生器3. EIA與TTL電平轉(zhuǎn)換器4. 地址譯碼電路 通信協(xié)議:1. 異步協(xié)議2. 同步協(xié)議 異步串行通訊異步串行方式是將傳輸數(shù)據(jù)的每個(gè)字符一位接一位(例如先低位、后高位)地傳送。數(shù)據(jù)的各不同位可以分時(shí)使用同一傳輸通道,因此串行I/O可以減少信號(hào)連線,最少用一對(duì)線即可進(jìn)行。接收方對(duì)于同一根線上一連串的數(shù)字信號(hào),首先要分割成位,再按位組成字符。為了恢復(fù)發(fā)送的信息,雙方必須協(xié)調(diào)工作。在微型計(jì)算機(jī)中大量使用異步串行 I/O方式,雙方使用各自的時(shí)鐘信號(hào), 而且允許時(shí)鐘 頻率有一定誤差,因此實(shí)現(xiàn)較容易。但是由于每個(gè)字符都要獨(dú)立確定起始和結(jié)束(即每個(gè)字符都要重新同步),字符和字符間還可

3、能有長度不定的空閑時(shí)間,因此效率較低。異步串行通信中的字符傳送格式第個(gè)字符6°,d22D-1(J1 II1 /UI/O1/01/(*I/OI/O1/011 10空奇??罩剖紨?shù)據(jù)忖1卜iX位位位位位位開始前,線路處于空閑狀態(tài),送出連續(xù)1”。傳送開始時(shí)首先發(fā)一個(gè)0”作為起始位,然后出現(xiàn)在通信線上的是字符的二進(jìn)制編碼數(shù)據(jù)。每個(gè)字符的數(shù)據(jù)位長可以約定為5位、6位、7位或8位,一般采用 ASCII編碼。后面是奇偶校驗(yàn)位,根據(jù)約定,用奇偶校驗(yàn)位將所傳字符中為T的位數(shù)湊成奇數(shù)個(gè)或偶數(shù)個(gè)。也可以約定不要奇偶校驗(yàn),這樣就取消奇偶校驗(yàn)位。最后是表示停止位的1 ”信號(hào),這個(gè)停止位可以約定持續(xù)1位、1.5位

4、或2位的時(shí)間寬度。至此一個(gè)字符傳送完畢,線路又進(jìn)入空閑,持續(xù)為1”。經(jīng)過一段隨機(jī)的時(shí)間后,下一個(gè)字符開始傳送才又發(fā)出起始位。每一個(gè)數(shù)據(jù)位的寬度等于傳送波特率的倒數(shù)。微機(jī)異步串行通信中,常用的波特率為110, 150, 300, 600, 1200, 2400, 4800, 9600 等。DB-25 DB-9引腳定義1 CD白 DER2 RXD了 TXP4 口 TR g RI5 SGDB-25 DB-9引腳說明引腳名稱全稱說明FGFrame Ground連到機(jī)器的接地線TXDTransmitted Data數(shù)據(jù)輸出線RXDReceived Data數(shù)據(jù)輸入線RTSRequest to Send要

5、求發(fā)送數(shù)據(jù)CTSClcaiL to Send回應(yīng)對(duì)方發(fā)送的RTS的發(fā)送許可,告訴對(duì)方可以發(fā)送DSRData Set Ready告知本機(jī)在待命狀態(tài)DTRData Terminal Ready皆知數(shù)搖終端處于待命狀態(tài)CDCarrier Detect載波檢出,用以確認(rèn)是否收到Modem的載波SGSignal Ground信號(hào)線的接地線(嚴(yán)格的說是信號(hào)線的零標(biāo)準(zhǔn)線)1. EIA電平:雙極性信號(hào)邏輯電平,它是一套負(fù)邏輯定義2. -3V到-25V之間的電平表示邏輯1 ”3. +3V到+25V之間的電平表示邏輯0”4. TTL電平:計(jì)算機(jī)內(nèi)部(S3C2410)使用TTL電平5. 電平轉(zhuǎn)換電路:常用專門的RS

6、-232接口芯片,如 SP3232、SP3220等,在TTL電平和EIA電平之間實(shí)現(xiàn)相互轉(zhuǎn)換。S3C2410異步串行口控制器1. S3C2410自帶三個(gè)異步串行口控制器2. 每個(gè)控制器有16字節(jié)的FIFO (先入先出寄存器)3. 最大波特率115.2K4. 每個(gè)UART有7種狀態(tài):溢出錯(cuò)誤,校驗(yàn)錯(cuò)誤,幀錯(cuò)誤,暫停態(tài),接收緩沖區(qū)準(zhǔn)備好,發(fā)送緩沖區(qū)空,發(fā)送移位緩沖器空,這些狀態(tài)可以由相應(yīng)的UTRSTATn或UERSTATn寄存器表示,并且與發(fā)送接收緩沖區(qū)相對(duì)應(yīng)的有錯(cuò)誤緩沖區(qū)5. 波特率的大小可以通過設(shè)置波特率寄存器( UBRDIVn )控制,計(jì)算公式如下:使用PCLK時(shí)的計(jì)算公式如下:UBRDIV

7、n = (int)PCLK/( 波特率x 16)-使用UCLK時(shí)的計(jì)算公式如下:UBRDIVn = (int)UCLK/( 波特率x 16)-例如:使用PCLK,在40 MHz的情況下,當(dāng)波特率取115 200 bps時(shí),UBRDIVn = (int)40000000/(115200 x 16) - = 20實(shí)驗(yàn)步驟1、串口初始化/*配置系統(tǒng)時(shí)鐘 */Cha ngeClockDivider(1,1);/ 1:2:4Cha ngeMPIIValue(0xa1,0x3,0x1);/ FCLK=202.8MHz/*初始化端口 */Port_I ni t();/*初始化串口 */Uart_I nit(

8、0,115200);Uart_Select(O);2、發(fā)送數(shù)據(jù)un sig ned char ch = 'a'ch = Uart_Getch();3、接收數(shù)據(jù)Uart_Se ndByte(ch)試驗(yàn)內(nèi)容二編寫中斷處理程序,處理外部中斷基礎(chǔ)知識(shí)CPU與外設(shè)之間傳輸數(shù)據(jù)的控制方式1查詢方式查詢方式的優(yōu)點(diǎn)是硬件開銷小,使用起來比較簡單,但在此方式下,CPU要不斷地查詢外設(shè)的狀態(tài),當(dāng)外設(shè)未準(zhǔn)備好時(shí),CPU就只能循環(huán)等待,不能執(zhí)行其它程序,這樣就浪費(fèi)了 CPU的大量時(shí)間,降低了 CPU的利用率2、中斷方式當(dāng)CPU進(jìn)行主程序操作時(shí),外設(shè)的數(shù)據(jù)已存入輸入端口的數(shù)據(jù)寄存器;或端口的數(shù)據(jù) 輸出寄

9、存器已空,由外設(shè)通過接口電路向CPU發(fā)出中斷請(qǐng)求信號(hào),CPU在滿足一定的條件下,暫停執(zhí)行當(dāng)前正在執(zhí)行的主程序,轉(zhuǎn)入執(zhí)行相應(yīng)能夠進(jìn)行輸入/輸出操作的子程序,待輸入/輸出操作執(zhí)行完畢之后CPU再返回并繼續(xù)執(zhí)行原來被中斷的主程序。這樣CPU就避免了把大量時(shí)間耗費(fèi)在等待、查詢狀態(tài)信號(hào)的操作上,使其工作效率得以大大地提高3、DMA方式當(dāng)高速外設(shè)要與系統(tǒng)內(nèi)存或者要在系統(tǒng)內(nèi)存的不同區(qū)域之間,進(jìn)行大量數(shù)據(jù)的快速傳送 時(shí),查詢方式和中斷方式可能不能滿足要求,直接存儲(chǔ)器存取(DMA)就是為解決這個(gè)問題提出的采用DMA方式,在一定時(shí)間段內(nèi),由DMA控制器取代CPU,獲得總線控制權(quán),來實(shí)現(xiàn)內(nèi)存與外設(shè)或者內(nèi)存的不同區(qū)域

10、之間大量數(shù)據(jù)的快速傳送 中斷處理示意圖斷點(diǎn)中斷服務(wù)子程序向CPU發(fā)出中斷請(qǐng)求的設(shè)備或事件稱為中斷源,斷點(diǎn)處產(chǎn)生中斷請(qǐng)求, CPU執(zhí)行中斷流程,響應(yīng)中斷,并執(zhí)行用戶定義的中斷服務(wù)子程序處理完畢,執(zhí)行中斷返回動(dòng)作,主程序 繼續(xù)運(yùn)行 中斷響應(yīng)中斷源向CPU發(fā)出中斷請(qǐng)求,若優(yōu)先級(jí)別最高, CPU在滿足一定的條件下,可以中斷 當(dāng)前程序的運(yùn)行,保護(hù)好被中斷的主程序的斷點(diǎn)及現(xiàn)場信息。 然后,根據(jù)中斷源提供的信息, 找到中斷服務(wù)子程序的入口地址,轉(zhuǎn)去執(zhí)行新的程序段,這就是中斷響應(yīng)。中斷服務(wù)子程序S3C2410的中斷控制器:1、中斷源狀態(tài)寄存器該寄存器的32位中每一位對(duì)應(yīng)一個(gè)中斷源。如果相應(yīng)中斷源產(chǎn)生中斷請(qǐng)求則

11、其對(duì)應(yīng)位 被置為1。該寄存器中的位將自動(dòng)由中斷請(qǐng)求置位,而不管INTMASK寄存器中的掩碼位是否有效。另外,該寄存器不受中斷控制器的優(yōu)先級(jí)邏輯影響。在中斷服務(wù)程序中,該寄存器的相應(yīng)位必須進(jìn)行清零處理,清零的方法是將該位寫入 1。奇存器名稱.地址,讀寫狀態(tài)描述復(fù)也值SRCPNDOz4AOOOOOOp指示中斷請(qǐng)求狀東" 0:沒有中斯請(qǐng)求中斷卩1:有中斷諸求"0x02、寄存器中斷模式寄存器名稱,地址十讀寫狀蕊描述復(fù)位值0z4M00004R/Wr中斷模式奇存器”0: IRQ模式21: FIQ模式J0x0*-3、中斷屏蔽寄存器寄存器名稱"地址讀寫狀彗描譴復(fù)位ilIMTMSK

12、"Ox4AOOOOOS確宦哪一個(gè)中斷源 被屛蔽*屏蔽的中 醋源將不引發(fā)中蚪0:中斷炭務(wù)有效亠1:中斷冊(cè)務(wù)屏蔽.OxFFFFFFFF4、優(yōu)先級(jí)寄存器寄存器名稱地址讀寫狀態(tài)描述.復(fù)隹值,PRIORITY-OxiAOOOOOCIRQ優(yōu)先級(jí)控制寄存器5、中斷狀態(tài)寄存器寄存器容稱"地址*讀寫狀費(fèi)描述復(fù)位值即IKTFHDflOzdAODOOia楷示屮斷諸朮狀態(tài)”0:沒有中斷請(qǐng)求中斷”1:有中斷請(qǐng)求"0x06、中斷偏移寄存器寄存器容稱"地址"讀寫狀杏描址復(fù) ® If.IKTOFFSETOx4AOOOO!4指示IRQ中斷請(qǐng)求源匸實(shí)驗(yàn)步驟1建立一個(gè)中斷

13、工程。2、 編寫外部中斷處理程序的中斷服務(wù)函數(shù),并保存為main.c文件,將該文件加入到工程中。3、在中斷服務(wù)函數(shù)中添加代碼實(shí)現(xiàn)如下功能:每觸發(fā)一次中斷,跑馬燈閃爍一次。4、編譯、下載運(yùn)行程序查看程序是否正常。實(shí)驗(yàn)報(bào)告要求1. 中斷處理的主要步驟有哪些?試說明每一步的主要工作2. 說明S3C2410非矢量中斷與矢量中斷的區(qū)別3. 簡述S3C2410非矢量中斷的處理步驟。4. 簡述串行接口的工作原理以及串行接口的優(yōu)缺點(diǎn)5. RS-232C的最基本數(shù)據(jù)傳送引腳是哪幾根?畫出雙機(jī)通訊的基本接線圖6. 簡述串行接口通訊程序設(shè)計(jì)的基本步驟實(shí)驗(yàn)二 基本接口實(shí)驗(yàn)(二)實(shí)驗(yàn)?zāi)康?、了解實(shí)時(shí)時(shí)鐘在嵌入式系統(tǒng)中的

14、作用2、掌握實(shí)時(shí)時(shí)鐘的使用3、了解觸摸屏基本概念與原理4、編程實(shí)現(xiàn)并掌握對(duì)觸摸屏的控制試驗(yàn)內(nèi)容一編程實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘功能,每秒顯示實(shí)時(shí)時(shí)鐘、編程實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘告警功能預(yù)備知識(shí)1、了解ADT集成開發(fā)環(huán)境的基本功能2、學(xué)習(xí)S3C2410的實(shí)時(shí)時(shí)鐘模塊的使用實(shí)驗(yàn)設(shè)備1. JXARM9-2410教學(xué)實(shí)驗(yàn)箱2. ADT1000仿真器和ADT IDE集成開發(fā)環(huán)境基礎(chǔ)知識(shí)1實(shí)時(shí)時(shí)鐘在嵌入式系統(tǒng)中的作用包括時(shí)分秒和年月日;即,它的外圍也不需要在一個(gè)嵌入式系統(tǒng)中, 實(shí)時(shí)時(shí)鐘單元可以其提供可靠的時(shí)鐘, 使在系統(tǒng)處于關(guān)機(jī)狀態(tài)下它也能夠正常工作(通常采用后備電池供電) 太多的輔助電路,典型的就是只需要一個(gè)高精度的晶振。S3

15、C2410的實(shí)時(shí)時(shí)鐘單元XTALEXTALRTCCONPWDNRTCALMPM7JKIJPALMINT時(shí)鐘數(shù)據(jù)采用BCD編碼能夠?qū)﹂c年的年月日進(jìn)行自動(dòng)處理具有告警功能,當(dāng)系統(tǒng)處于關(guān)機(jī)狀態(tài)時(shí),能產(chǎn)生告警中斷;具有獨(dú)立的電源輸入提供毫秒級(jí)時(shí)鐘中斷,該中斷可用于作為嵌入式操作系統(tǒng)的內(nèi)核時(shí)鐘2、S3C2410的實(shí)時(shí)時(shí)鐘寄存器控制寄存器寄存器P地址讀/寫狀態(tài)描謹(jǐn)卩復(fù)位值ETCCOK0x57000040*實(shí)時(shí)時(shí)鐘控制寄存器口表5-18實(shí)時(shí)時(shí)鐘控制寄存器RTCCON各位的定女KTCCON位P描述P復(fù)位值CLKRST心實(shí)時(shí)時(shí)鐘計(jì)數(shù)器復(fù)位40-不復(fù)位1-復(fù)位QCHTSEL+5心BCD計(jì)數(shù)選擇 > 將計(jì)數(shù)器

16、設(shè)置為肚D檯式門 0-選擇兀D模式1-保留心CLKSEL12KT時(shí)鐘選擇卩將輸入時(shí)鐘進(jìn)Ul/2分頻i保留門gKTCEJPORRTC讀寫使能卩0-禁止1-使能門0P告警控制寄存器寄存器地址*讀f寫狀態(tài)描述廠復(fù)位值3HTCALM+JOx57COOOSOWtQ告髻控制寄存盟0x00表5-20實(shí)時(shí)時(shí)鐘告譽(yù)控制寄存器RTCAI11各位的定義*KTCALM描述a復(fù)垃值,ReserTed-1保留門ALME 腫l時(shí)時(shí)種告警總使能/禁止彳D-禁止便能“27EARENJ1年時(shí)鐘吿警使能/禁止* Q-荼止1-使能心HOHKEM+-'【小月時(shí)鐘告警便能/禁止a 一禁止1-使能心ODAIEH日時(shí)鐘告警使能/禁止

17、"U-親止1-使能門czk吋時(shí)鐘告警使能/禁止a 0-親止 】-便能盧呼HINERS分時(shí)鐘告雪使能/葉止亠D-禁止使能小SECEN*3OH秒時(shí)鐘告警使能/禁止+ 。-荼止 1-使能匸2實(shí)時(shí)時(shí)鐘計(jì)數(shù)器告警時(shí)間寄存器LZU寄存器,地址Q讀/寫伏態(tài)描述復(fù)位值A(chǔ)LMSECP0x57000054R/ffP秒時(shí)鐘告警值PxOOPALM肛肝0x57000058+21R/肘分時(shí)鐘告警值P0x00ALHKOUR*Ox5700005CPR/tfP時(shí)時(shí)鐘告警值心0x00*ALMDkT0x57000060R/NP日時(shí)鐘告警值卩0x00*ALHNION0x57000054K/IfP月時(shí)誓告警值Q0x00ALM

18、YEAR20x57000068R/ffP年時(shí)鐘告警值相OxOOP寄存器3地址門讀寫復(fù)位值,TICWT0x57000044*實(shí)時(shí)時(shí)鐘計(jì)數(shù)器儀0x00000000恚5-22實(shí)時(shí)時(shí)鐘計(jì)數(shù)器TICWT各位的定義心THCNT描述門復(fù)位值心TICK IWT ENABLE*1TM中斷使能/禁止銳0-止1 -使能車0*3TICK TIME COUNT詛6:0實(shí)時(shí)時(shí)鐘計(jì)數(shù)器八0000000實(shí)時(shí)時(shí)鐘寄存器寄存器廠地址讀/寫狀態(tài)描述權(quán)復(fù)位值'BCBSEC*0x57000010R/WP秒時(shí)鐘當(dāng)前值“不定30x570000Y4R/WP分時(shí)鐘當(dāng)前值心不定卩BCIDDUBPOxSTOOOOT8PR/M時(shí)時(shí)鐘當(dāng)前值心

19、不定4BCUDAY0x570000YCR/忖日時(shí)鐘當(dāng)前值心不定卩BCDDATE0x57000080S/fP星期值當(dāng)前值*-不定20x57000084B/WP月時(shí)鐘當(dāng)前值口不定心BCDYEAR0x57000088PR/M年時(shí)鐘當(dāng)前值存不定4實(shí)驗(yàn)步驟1、 建立RTC工程,添加相應(yīng)文件并修改PWM的工程設(shè)置。2、 創(chuàng)建main.c編寫程序,并將該文件加入到工程RTC中。3、 時(shí)鐘滴答功能測試,通過LED顯示TIME TICK4、時(shí)間告警功能測試。試驗(yàn)內(nèi)容二1. 編程實(shí)現(xiàn)觸摸屏坐標(biāo)到 LCD坐標(biāo)的校準(zhǔn)2. 編程實(shí)現(xiàn)觸摸屏坐標(biāo)采集以及LCD坐標(biāo)的計(jì)算預(yù)備知識(shí)1. 了解ADT集成開發(fā)環(huán)境的基本功能2. 學(xué)

20、習(xí)觸摸屏的原理3. 了解觸摸屏與顯示屏的坐標(biāo)轉(zhuǎn)換基礎(chǔ)知識(shí)觸摸屏的基本原理觸摸屏按其工作原理的不同分為:電阻技術(shù)觸摸屏電阻觸摸屏是與顯示器表面非常配合的電阻薄膜屏,這是一種多層復(fù)合薄膜,它以一層玻璃或硬塑料平板作為基層,表面涂有一層透明氧化金屬(ITO氧化銦,透明的導(dǎo)電電阻)導(dǎo)電層,上面再蓋有一層外表面硬化處理、光滑防擦的塑料層、內(nèi)表面也涂有一層ITO涂層、在他們之間有許多細(xì)小的(小于 1/1000英寸)的透明隔離點(diǎn)把兩層導(dǎo)電層隔開絕緣。當(dāng)手指觸摸屏幕時(shí),兩層導(dǎo)電層在觸摸點(diǎn)位置就有了接觸,控制器偵測到這一接觸并計(jì)算出(X,Y )的位置,再根據(jù)模擬鼠標(biāo)的方式運(yùn)作。主要特點(diǎn):1. 高解析度,高速傳輸

21、反應(yīng)2. 表面硬度處理,減少擦傷、刮傷及防化學(xué)處理3. 具有光面及霧面處理4. 一次校正,穩(wěn)定性高,永不漂移表面聲波技術(shù)觸摸屏表面聲波技術(shù)是利用聲波在物體的表面進(jìn)行傳輸,當(dāng)有物體觸摸到表面時(shí),阻礙聲波的 傳輸,換能器偵測到這個(gè)變化,反映給計(jì)算機(jī),進(jìn)而進(jìn)行鼠標(biāo)的模擬。主要特點(diǎn):1. 清晰度較高,透光率好2. 高度耐久,抗刮傷性良好3. 一次校正不漂移4. 反應(yīng)靈敏缺點(diǎn):易污損,需要經(jīng)常維護(hù)電容技術(shù)觸摸屏利用人體的電流感應(yīng)進(jìn)行工作。用戶觸摸屏幕時(shí),由于人體電場,用戶和觸摸屏表面形成以一個(gè)耦合電容,對(duì)于高頻電流來說,電容是直接導(dǎo)體,于是手指從接觸點(diǎn)吸走一個(gè)很小的電流。這個(gè)電流分從觸摸屏的四角上的電極

22、中流出,并且流經(jīng)這四個(gè)電極的電流與手指到四角的距離成正比,控制器通過對(duì)這四個(gè)電流比例的精確計(jì)算,得出觸摸點(diǎn)的位置。主要特點(diǎn):1. 對(duì)大多數(shù)的環(huán)境污染物有抗力2. 人體成為線路的一部分,因而漂移現(xiàn)象比較嚴(yán)重3. 帶手套不起作用4. 需經(jīng)常校準(zhǔn)5. 不適用于金屬機(jī)柜6. 當(dāng)外界有電感和磁感的時(shí)候,會(huì)使觸摸屏失靈JXARM9-2410的觸摸屏控制電路觸摸屏處理流程1. 觸摸屏控制初始化,選擇Separate X/Y位置轉(zhuǎn)換模式或者 Auto X/Y位置轉(zhuǎn)換模式;2. 設(shè)置觸摸屏接口到等待中斷模式;3. 如果中斷產(chǎn)生,相應(yīng)的轉(zhuǎn)換(Separate X/Y位置轉(zhuǎn)換模式或者 Auto X/Y位置轉(zhuǎn)換模式)

23、 被激活;4. 在獲取X/Y坐標(biāo)值后,返回到等待中斷模式。實(shí)驗(yàn)步驟1. 建立一個(gè)touch工程。2. 創(chuàng)建一個(gè)touch.c并加入到工程 touch中。3. 編寫程序分別校正 LCD左上角和右下角坐標(biāo)4. 編寫程序采集觸摸屏坐標(biāo)屏將其轉(zhuǎn)換到LCD坐標(biāo)并通過串口打印出來。5. 編譯程序、下載運(yùn)行并觀察輸出結(jié)果。實(shí)驗(yàn)報(bào)告要求1. 常見的觸摸屏有哪幾種,說明各自的優(yōu)缺點(diǎn)2. 以四線電阻式觸摸屏為例,說明電阻式觸摸屏的工作原理3. 舉例說明觸摸屏坐標(biāo)與屏幕坐標(biāo)之間的轉(zhuǎn)換4. 簡述RTC的作用5. 畫出在串口顯示時(shí)鐘的流程圖實(shí)驗(yàn)三 BootLoader及Linux內(nèi)核移植實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?、了解BootLo

24、ader在嵌入式系統(tǒng)中的作用2、掌握u-boot的基本功能。3、熟悉交叉編譯環(huán)境的建立和使用。4、 熟悉Linux開發(fā)環(huán)境,掌握Linux內(nèi)核的配置和裁剪。5、了解Linux的啟動(dòng)過程試驗(yàn)內(nèi)容一學(xué)習(xí)u-boot的基礎(chǔ)知識(shí)和常用命令,并按照實(shí)驗(yàn)步驟實(shí)際操作。預(yù)備知識(shí) 掌握嵌入式系統(tǒng)軟件開發(fā)基礎(chǔ)知識(shí)。試驗(yàn)設(shè)備1、 硬件:JXARM9-2410嵌入式試驗(yàn)箱,PC機(jī)Pentium500以上,硬盤10G以上。2、 軟件:PC機(jī)操作系統(tǒng) Redhat Linux9.0, Linux開發(fā)環(huán)境?;A(chǔ)知識(shí)1、BootLoader基本概念2、u-boot基本程序結(jié)構(gòu)3、Linux文件系統(tǒng)實(shí)驗(yàn)步驟1、啟動(dòng) uboo

25、t將串口線連接到計(jì)算機(jī)的串口和實(shí)驗(yàn)箱的UART0 ;在計(jì)算機(jī)中打開 dnw串口超級(jí)終端工具,如下圖所示:然后點(diǎn)擊"Serial Port ”的"Connect”菜單項(xiàng),在標(biāo)題欄將提示如下圖所示:將實(shí)驗(yàn)箱上電,在 dnw中將可以看到如下圖所示界面,此界面即為uboot命令行操作界面。SDH vQ- bQl C011, LlbaOObps USK:iSerial Pert USE Port CcntigLiTa-ticai HmlpI*1U-Boot 2 1 1 (Apr 30 2G65 - 1 >1:45:05)U-Boot codoi 33FS0QOe 33FA362

26、8 S: -> 33FD8954RAM Configuration:Bank ttC: 3DGO0O6O EH MBFlash: 32 MBIn:serialOut:"廠 i石 1Err:serialJX241G tt*后續(xù)各個(gè)步驟的操作系統(tǒng)引導(dǎo)都需要在uboot界面下進(jìn)行。5.1. Uboot基本命令實(shí)驗(yàn)1)分別在u-boot中輸入如下命令,并觀察實(shí)驗(yàn)結(jié)果JX2410 # helpJX2410 # flinfoJX2410 # help flinfoJX2410 # bdi nfo2) uboot內(nèi)存操作實(shí)驗(yàn)在uboot中輸入如下命令,以實(shí)現(xiàn)將0x3000000開始的0x10

27、0字節(jié)數(shù)據(jù)復(fù)制到 0x3100000處。JX2410 # md 30000000 100JX2410 # md 31000000 100JX2410 # cmp.b 30000000 31000000 100JX2410 #cp.b 30000000 31000000 100JX2410 # cmp.b 30000000 31000000 100觀察在輸入cp.b命令前后的cmp.b命令執(zhí)行結(jié)果。在uboot中輸入如下命令,以實(shí)現(xiàn)內(nèi)存修改JX2410 # md.b 30000000 10JX2410 # mm 300000000JX2410 # mw.b 30000000 ff 10JX241

28、0 # md.b 30000000 10觀察每次md.b命令的結(jié)果。在uboot中輸入如下命令,以實(shí)現(xiàn)對(duì)0x30000000起始地址1M內(nèi)存區(qū)域的自動(dòng)測試JX2410 # mtest 300000000 301000003) tftp程序下載和引導(dǎo)操作實(shí)驗(yàn)在uboot中輸入如下命令,實(shí)現(xiàn)如下功能:將主機(jī)上的diag.bin程序通過 tftp下載到0x30000000地址,并從該地址處運(yùn)行diag.bin程序。JX2410 # tftp 30000000 diag.bi nJX2410 # go 300000004) uboot環(huán)境變量操作實(shí)驗(yàn)在uboot中輸入如下命令,創(chuàng)建一個(gè)環(huán)境變量,并運(yùn)行

29、該環(huán)境變量。JX2410 # printenvJX2410 # setenv tent echo this is test'JX2410 # printenvJX2410 # saveenvJX2410 # run test在u-boot中輸入如下命令,創(chuàng)建一個(gè)環(huán)境變量,實(shí)驗(yàn)C的tftp下載功能。JX2410 # printenvJX2410 # setenv text tftp 30000000 diag.bin; go 300000000;JX2410 # printenvJX2410 # saveenvJX2410 # run test在uboot中輸入如下命令,實(shí)現(xiàn)自主引導(dǎo),u

30、boot啟動(dòng)后自動(dòng)執(zhí)行上一步中創(chuàng)建的test環(huán)境變量。JX2410 # setenv bootcmd rbn test'JX2410 # saveenvJX2410 # reset5.2 uboot文件系統(tǒng)實(shí)驗(yàn)1)uboot文件系統(tǒng)支持通過修改配置文件 /home/cvtech/jx2410/u-boot-1.1.1/include/configs/smdk2410.h 中的宏定 義進(jìn)行文件系統(tǒng)配置支持。#defi ne CFG_JFFS2_FIRST_BANK0#defi ne CFG_JFFS2_FIRST_SECT0R 2#defi ne CFG_JFFS2_NUM_BANK12

31、)制作JFFS2/CRAMFS文件系統(tǒng)A、制作JFFS2文件系統(tǒng)在 PC中制作 JFFS2文件系統(tǒng)使用 mkfs.jffs2 工具,下面示例將 /home/cvtech/jx2410/root/jffs2 目錄下的內(nèi)容制作成 JFFS2文件系統(tǒng),并保存為 prog.jffs2文 件。$ cd /home/cvtech/jx2410/root$ /home/cvtech/jx2410/root/mkfs.jffs2-d jffs2 - o prog.jffs2$ ls prog.jffs2 - l-rw-r-r- 1 root root 557465611 月 1809:50 prog.jffs

32、2$ cp /home/cvtech/jx2410/root/prog.jffs2 /tftpbootB、制作 CRAMFS文件系統(tǒng)在 PC中制作 CRAMFS 文件系統(tǒng)使用 mkfs.cramfs 工具,下面示例將 /home/cvtech/jx2410/root/cramfs 目錄下的內(nèi)容制作成 CRAMFS 文件系統(tǒng),并保存為 prog. cramfs 文件。$ cd /home/cvtech/jx2410/root$ /home/cvtech/jx2410/root/mkfs. cramfs cramfs/prog.cramfs$ ls prog. cramfs - l-rw-r-r-

33、 1 root root 557465611 月 1809:58 prog. cramfs$ cp /home/cvtech/jx2410/root/prog. cramfs /tftpboot3)燒寫JFFS2/CRAMFS文件系統(tǒng)文件系統(tǒng)映象文件制作完成后就可以通過uboot的FLASH燒寫功能將其燒寫到FLASH中,制作完成后的文件系統(tǒng)映像文件分別為:prog. Cramfs和prog.jffs2,它們都保存在主機(jī)的/tftpboot目錄下,通過tftp將這兩個(gè)文件下載到目標(biāo)機(jī),然后燒寫到FLASH的第66到95扇區(qū),具體操作過程如下:A、燒寫JFFS2文件系統(tǒng)jx2410 # eras

34、e 1: 66-95o o o o ojx2410 # tftp 30000000 prog.jffs2o o o o o o ojx2410 # cp.b 30000000 1080000551000B、燒寫CRAMFS文件系統(tǒng)jx2410 # erase 1: 66-95o o o o ojx2410 # tftp 30000000 prog.cramfso o o o o o ojx2410 # cp.b 30000000 10800005510004)加載JFFS2/CRAMFS文件系統(tǒng)不管Flash中燒寫的是JFFS2還是CRAMFS,啟動(dòng)后都可以使用ls命令查看文件系統(tǒng) 內(nèi)容,如下

35、所列,如果看到如下信息表示文件系統(tǒng)加載正確。JX2410 # lsScanning JFFS FS: done-r-r-r 204 Wed Aug 29 10:56:35 2020 mou nts試驗(yàn)內(nèi)容二1、 了解Linux基礎(chǔ)知識(shí)以及Linux的開發(fā)環(huán)境。2、 根據(jù)教學(xué)實(shí)驗(yàn)系統(tǒng)的硬件資源,配置并編譯Linux核心。3、下載并運(yùn)行Linux核心,檢查運(yùn)行結(jié)果。預(yù)備知識(shí)1、 了解Linux的一些基本操作命令以及Linux系統(tǒng)下用戶環(huán)境的設(shè)置。2、掌握Linux下的程序編譯與交叉編譯過程。試驗(yàn)設(shè)備1. 硬件:JXARM9-2410嵌入式試驗(yàn)箱,PC機(jī)Pentium500以上,硬盤10G以上。2.

36、 軟件:PC機(jī)操作系統(tǒng) Redhat Linux9.0, Linux開發(fā)環(huán)境?;A(chǔ)知識(shí)1) 編譯 Linux配置內(nèi)核:Serfinux啟動(dòng)菜單配置工具后,選擇"Load Alternate Con figuration File ”選項(xiàng),然后確認(rèn)。該選項(xiàng)載入jx2410的標(biāo)準(zhǔn)配置文件 config-jx2410,該文件保存在/home/cvtech/jx2410/linux 目錄 下,請(qǐng)不要修改這個(gè)文件。在提示框中鍵入config-jx2410配置文件名,然后選擇"OK”確認(rèn),將退回到主菜單。然后按“Esc”鍵退出,并將提示是否保存,請(qǐng)選擇“Yes”保存。建立依賴關(guān)系:Sm

37、sAe d&p編譯:$耐A占袒耐網(wǎng)2) 加載Linux內(nèi)核映像將/tftpboot/ramdisk.gz 下載到 SDRAM 運(yùn)行內(nèi)核。先將生成的ZImage拷貝到/tptpbootSep /home/cvt0ch/Jx4W/arch/9rm/bc0t/z/tftpbaat然后啟動(dòng)uboot,并在uboot中使用tftp下載到ramdisk.gz和zImage。1編譯Linux核心。2. 下載Linux核心并運(yùn)行。3重新配置Linux,刪除網(wǎng)絡(luò)、顯示器、觸摸屏等硬件,編譯、下載并運(yùn)行。實(shí)驗(yàn)報(bào)告要求實(shí)驗(yàn)報(bào)告要求1 BootLoader在嵌入式系統(tǒng)中的作用是什么?它有哪些基本功能進(jìn)行如下實(shí)

38、驗(yàn):將一個(gè)可以運(yùn)行的二進(jìn)制文件制作到 JFFS2文件系統(tǒng)中,并在uboot中從文 件系統(tǒng)加載該文件并運(yùn)行(可以以提供的Linux內(nèi)核映像文件 ZImage為例,請(qǐng)將ZImage加載到內(nèi)存 0x30008000位置處)3. 交叉編譯環(huán)境包括哪些工具?它們的作用是什么?4. 簡述Linux的啟動(dòng)過程。實(shí)驗(yàn)四Linux程序編寫實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?、熟悉JXARM9-2410教學(xué)系統(tǒng)中的LINUX開發(fā)環(huán)境2、掌握簡單的LINUX應(yīng)用程序HELLOWORLD 的編譯3、掌握LINUX驅(qū)動(dòng)程序編程4、掌握LINUX應(yīng)用程序加載驅(qū)動(dòng)程序的方法和動(dòng)態(tài)加載驅(qū)動(dòng)程序模塊的方法。 試驗(yàn)內(nèi)容一1、編寫 HELLOWORLD

39、程序2、編寫Makefile文件3、編譯 HELLOWORLD應(yīng)用程序4、下載并調(diào)試HELLOWORLD應(yīng)用程序預(yù)備知識(shí)1、C語言的基礎(chǔ)知識(shí)2、程序調(diào)試的基礎(chǔ)知識(shí)和方法3、LINUX的基本操作實(shí)驗(yàn)步驟1、建立工作目錄$ cd /home/cvtech/jx2410/example$ mkdir helloworld$ cd helloworld2、編寫程序源代碼在LINUX下的文本編輯器有許多,最常用的是vim,Xwindow 界面下的gedit等,在開發(fā)過程中推薦使用vi,用戶需要學(xué)習(xí)vi的操作方法。實(shí)際的源代碼如下:#in clude <stdio.h>int main()Pr

40、intf( Hello ,World!n ”);3、 在主機(jī)端編譯并運(yùn)行helloworld程序$ gcc helloworld helloworld.c$ ./helloworld請(qǐng)大家寫出正確的顯示結(jié)果。4、下載/tftpboot/程序到JXARM9-2410中調(diào)試JXARM9-2410通過NFS將主機(jī)的/tftpboot/目錄掛載到目標(biāo)機(jī)的/mnt/nfs目錄中。本實(shí) 驗(yàn)將實(shí)驗(yàn)例程放置到/tftpboot/examples目錄下。$ cp helloworld /tftpboot/examples/在目標(biāo)機(jī)端輸入如下命令將主機(jī)端/tftpboot/目錄掛載到/mnt/nfs目錄下:# m

41、ou nt 80: /tftpboot/ /mnt/nfs運(yùn)行helloworld程序#cd mnt/n fs/examples#./helloworld請(qǐng)大家寫出正確的顯示結(jié)果。5、編寫Makefile文件使用vi編輯工具編輯 Makefile,請(qǐng)注意文件名的 M必須大寫,其余為小寫。其中每 行前面的空格位置必須使用Tab鍵CC=/usr/local/arm/2.95.3/bi n/arm-li nu x-gccLD=/usr/local/arm/2.95.3/bi n/arm-li nu x-ldEXEC= helloworldOBJS= helloworld.OCF

42、LAGS+=LDFLAGS+=all: $(EXEC)$(EXEC): $(OBJS)$(CC) $(LDFLAGS) - $ $(OBJS) $(LDLIBS $(LDLIBS_$)Clea n:-rm -f $(EXEC) *.elf *.gdb *.o請(qǐng)大家使用make進(jìn)行編譯并寫出試驗(yàn)結(jié)果。試驗(yàn)內(nèi)容二1、掌握drv驅(qū)動(dòng)程序2、編寫Makefile文件3、編寫并編譯drvtest應(yīng)用程序4、下載并調(diào)試drvtest應(yīng)用程序?qū)嶒?yàn)步驟1、建立工作目錄$ cd /home/cvtech/jx2410/examples$ mkdir drvtest$ cd drvtest2、編寫drv驅(qū)動(dòng)程序源

43、代碼在系統(tǒng)安裝目錄的 examples下的drvtest目錄下復(fù)制 drv.c、drv.h、drvtest.c和 Makefile 四個(gè)文件到drvtest目錄下,drv.c為驅(qū)動(dòng)程序源代碼,drvtest.c為應(yīng)用程序源代碼。3、編譯Leddrv驅(qū)動(dòng)程序$ make clea n$ make$ cp drv.o /tftpboot/example4、編譯ledtest應(yīng)用程序$ /usr/local/arm/2.95.3/b in/arm-l inu x-gcc drvtest drvtest.c$ cp drvtest /tftpboot/examples5、 請(qǐng)大家使用運(yùn)行l(wèi)edtest

44、并寫出實(shí)驗(yàn)結(jié)果。6、 請(qǐng)使用mknod命令注冊(cè)設(shè)備文件,設(shè)備名為Led,字符設(shè)備,主設(shè)備號(hào)為100,從設(shè)備號(hào)可以隨意選取并寫出實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)報(bào)告要求1、簡述Makefile文件的作用與基本組成2、 JXARM9-2410中怎樣將編寫的應(yīng)用程序下載到Linux中?怎樣在Linux中運(yùn)行該程 序。3、簡述Linux設(shè)備驅(qū)動(dòng)的基本概念和編寫方法。4、簡述Linux應(yīng)用程序怎樣訪問設(shè)備驅(qū)動(dòng)程序。實(shí)驗(yàn)五:Linux下串口及中斷處理實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?. 了解Linux下串行端口程序設(shè)計(jì)的基本原理。2. 掌握終端的主要屬性及設(shè)置方法,熟悉終端I/O函數(shù)的使用。3. 了解Linux下中斷編程的基本方法。4. 掌握

45、JXARM9-2410下的外部中斷的編程方法。試驗(yàn)內(nèi)容一1、編寫serial應(yīng)用程序。2、編寫Makefile文件。3、下載并調(diào)試serial應(yīng)用程序。預(yù)備知識(shí)1. C語言的基礎(chǔ)知識(shí)。2. 程序調(diào)試的基礎(chǔ)知識(shí)和方法。3. Linux的基本操作。4. 掌握Linux下的程序編譯與交叉編譯過程?;A(chǔ)知識(shí)Linux操作系統(tǒng)從一開始就對(duì)串行口提供了很好的支持,為進(jìn)行串行通信提供了大量的函數(shù),本試驗(yàn)主要是為掌握在Linux中進(jìn)行串行通信編程的基本方法。5、串口編程相關(guān)頭文件#in clude <stdio.h>#in clude <stdlib.h>#in clude <u

46、ni std.h>#in clude <sys/types.h>#in clude <sys/stat.h>#in clude <fcn tl.h>#in clude <termios.h>#in clude <err no .h>#i nclude <pthread.h>6、打開串口在Linux下,串口文件位于/*標(biāo)準(zhǔn)輸入輸出定義*/ *便準(zhǔn)函數(shù)庫定義*/*Linux標(biāo)準(zhǔn)函數(shù)定義*/*文件控制定義*/*PPSIX終端控制定義*/*錯(cuò)誤號(hào)定義*/*線程庫定義*/dev 下,串口 1 為/dev/ttySO,串口 2

47、為/dev/ttyS1,打開串口是通過使用標(biāo)準(zhǔn)的文件打開函數(shù)操作:Intfd ;/*以讀/寫方式打開串口 */fd=open ( ”dev/ttyS0”0_RDWR)if(-1=fd) perror( error )'7、設(shè)置串口最基本的設(shè)置串口包括波特率設(shè)置,效驗(yàn)位和停止位設(shè)置。串口的設(shè)置 結(jié)構(gòu)體的成員值。struct termiosstruct termioun sig ned short c_iflag; un sig ned short c_oflag;un sig ned short c_cflag; un sig ned short c_lflag;un sig ned c

48、har c_li ne; un sig ned char c_ccNCC;(1) 波特率設(shè)置 下面是修改波特率的代碼: struct termios Opt;tcgetattr(fd, &Opt); cfsetispeed(&Opt,B192OO); cfsetospeed(&Opt,B192OO); tcsetattr(fd,TCANOW,&Opt);(2) 校驗(yàn)位的設(shè)置 無效驗(yàn)8位:/*輸入模式標(biāo)志*/ /*輸出模式標(biāo)志/ /*控制模式標(biāo)志*/*local mode flags*/ /*li ne discipli ne*/ /*c on trol char

49、acters*/* 設(shè)置為 192 000 bps*/Optio n.c_cflag &=PARENB; Opti on .c_cflag &=CSTOPB Opti on .c_cflag &=CSIZE;Optio n. c_cflag |=CS8; 奇效驗(yàn)(Odd)7位:Optio n.c_cflag |=PARENB; Optio n.c_cflag &=PARODD; Opti on .c_cflag &=CSTOPB Opti on .c_cflag &=CSIZE; Optio n. c_cflag |=CS7; 偶效驗(yàn)(Even)

50、7位:Optio n.c_cflag &=PARENB; Optio n.c_cflag |=PARODD; Opti on .c_cflag &=CSTOPB Opti on .c_cflag &=CSIZE;Optio n. c_cflag |=CS7;Space效驗(yàn)7位:Optio n.c_cflag &=PARENB; Opti on .c_cflag &=CSTOPB Opti on .c_cflag &=& CSIZE;Optio n. c_cflag |=CS8;(3)設(shè)置停止位1位:Optio ns.c_cflag &am

51、p;=CSTOPB; 2位:Optio ns.c_cflag |=CSTOPB;需要注意的是,如果不是開發(fā)終端之類,只是串口傳輸數(shù)據(jù),從而不需要串口來處理, 那么使用原始模式(Raw Mode )方式來通信,設(shè)置方式如下:Optio ns.c_cflag &=(ICANON|ECHO|ECHOE|ISIG);/*ln put*/Optio ns.c_oflag &= OPOST;/*Output*/(4) 讀/寫串口設(shè)置好串口之后,讀/寫串口變得很容易,就可以把串口當(dāng)作文件讀 /寫了。發(fā)送數(shù)據(jù):char buffer1024;in t Len gth=1024;int n By

52、te;n Byte=write(fd,buffer,Le ngth);讀取串口數(shù)據(jù)使用文件操作read函數(shù)讀取,如果設(shè)置為原始模式(Raw Mode )傳輸數(shù)據(jù),那么read函數(shù)返回的字符數(shù)是實(shí)際串口收到的字符數(shù)。可以使用操作文件的函數(shù)來實(shí) 現(xiàn)異步讀取,如fcntl或者select等來操作。char buffer1024;int Len=1024;int readByte=read(fd,buffer,Le n);(5) 關(guān)閉串口關(guān)閉產(chǎn)口就是關(guān)閉文件。4、實(shí)驗(yàn)程序流程圖實(shí)驗(yàn)程序流程圖如圖7-2所示。圖7-2 JXARM9-2410 Linux 串口通信程序流程圖實(shí)驗(yàn)步驟1、建立工作目錄。$cd /home/cvtech/jx2410/examples$mkdir serial$cd serial2、編寫serial程序源代碼。參照程序流程圖編寫串口通信程序,從串口接受數(shù)據(jù),并將接收到的數(shù)據(jù)打印出來。3、編寫Makefile文件。4、編譯serial程序。$make clea n$make$cp serial /tftpboot/examples正確的話,將生成 serial程序。5、下載serial程序到JXARM9-2410中調(diào)試。#mou nt 80:/t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論