![試驗(yàn)七-設(shè)備驅(qū)動(dòng)程序_第1頁(yè)](http://file4.renrendoc.com/view/b2f80308d561935c5740a1232f80ed7f/b2f80308d561935c5740a1232f80ed7f1.gif)
![試驗(yàn)七-設(shè)備驅(qū)動(dòng)程序_第2頁(yè)](http://file4.renrendoc.com/view/b2f80308d561935c5740a1232f80ed7f/b2f80308d561935c5740a1232f80ed7f2.gif)
![試驗(yàn)七-設(shè)備驅(qū)動(dòng)程序_第3頁(yè)](http://file4.renrendoc.com/view/b2f80308d561935c5740a1232f80ed7f/b2f80308d561935c5740a1232f80ed7f3.gif)
![試驗(yàn)七-設(shè)備驅(qū)動(dòng)程序_第4頁(yè)](http://file4.renrendoc.com/view/b2f80308d561935c5740a1232f80ed7f/b2f80308d561935c5740a1232f80ed7f4.gif)
![試驗(yàn)七-設(shè)備驅(qū)動(dòng)程序_第5頁(yè)](http://file4.renrendoc.com/view/b2f80308d561935c5740a1232f80ed7f/b2f80308d561935c5740a1232f80ed7f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
上海應(yīng)用技術(shù)學(xué)院程序設(shè)計(jì)語(yǔ)言實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱設(shè)備驅(qū)動(dòng)程序?qū)嶒?yàn)序號(hào)實(shí)驗(yàn)七實(shí)驗(yàn)日期姓名學(xué)號(hào)指導(dǎo)教師專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班級(jí)成績(jī)一、實(shí)驗(yàn)?zāi)康募耙笳{(diào)試EOS串口驅(qū)動(dòng)程序向串口發(fā)送數(shù)據(jù)的功能,了解設(shè)備驅(qū)動(dòng)程序工作原理。為EOS串口驅(qū)動(dòng)程序添加從串口接收數(shù)據(jù)的功能,進(jìn)一步加深對(duì)設(shè)備驅(qū)動(dòng)程序工作原理的理解。二、實(shí)驗(yàn)環(huán)境WindowsXP;TevationOSLab。三、實(shí)驗(yàn)內(nèi)容1準(zhǔn)備實(shí)驗(yàn)按照下面的步驟準(zhǔn)備實(shí)驗(yàn):.啟動(dòng)OSLab。.新建一個(gè)EOSKernel項(xiàng)目如圖1。圖1.在“項(xiàng)目管理器”窗口中雙擊Floppy.img文件,使用FloppylmageEditor工具打開此
軟盤鏡像。.將本實(shí)驗(yàn)文件夾中的serial.exe文件添加到軟盤鏡像的根目錄中,如圖2。.點(diǎn)擊FloppylmageEditor工具欄上的保存按鈕,關(guān)閉該工具。4Floppy.i>g*-FloppylaageEditor |.||□X圖AUTORUW.TXTHELLO.EXE
畫圖AUTORUW.TXTHELLO.EXE
畫LOADER.BIN
fKERBEL.DLL
22]SERIAL.EXE
二1FWRITE.EXE
圖A.TXTMULTI.EXE口字節(jié)9976字節(jié)1566字節(jié)££93的字節(jié)IDE5g字節(jié)10651字節(jié)口字節(jié)1口4口。字節(jié)文本文檔應(yīng)用程序BIN文件應(yīng)用程序獷展應(yīng)用程序應(yīng)用程序文本文檔應(yīng)用程序2009-2-2421:412009-2-913:212009-2-2421:282009-2-2421:282014-6-58:542009-2-2412:362009-2-2412:372009-2-2421:0空閑...圖22練習(xí)使用EOS空閑...圖22練習(xí)使用EOS應(yīng)用程序向串口發(fā)送數(shù)據(jù)1.按F7生成EOS內(nèi)核項(xiàng)目如圖3。起始頁(yè)start.[ ▼x303132333435訴系統(tǒng)的入口點(diǎn),及仃口曰1.dll被LiziadBr加載到內(nèi)存后從這里開始執(zhí)行。 三參數(shù): .LoaderBlock-Lmder傳遞的加載參數(shù)塊結(jié)構(gòu)體指針,內(nèi)存管理器要使用。返回值:分「校小前利永沅不登板回). 蘭輸出制制制成復(fù)復(fù)復(fù)生己己己-統(tǒng)計(jì)到文文文
個(gè)個(gè)個(gè)■:'口口一件件件制制制成復(fù)復(fù)復(fù)生己己己-統(tǒng)計(jì)到文文文
個(gè)個(gè)個(gè)■:'口口一件件件1垃13金I毒0個(gè)警告:成功=======文件?編輯?查看?幫助㈤新建打開保存?制 刪除hi添加I、查看名稱 大小 類型 修改日期2.按F5啟動(dòng)調(diào)試如圖4。COSLabPC-MicrosoftVirtualPC2007 .XActionEilitCDFloppyHelpCOMSOLE-l(PressCtrl+F1~F8toswitchconsoleuindou...)LJeleonetoEOSshel1圖43.EOS啟動(dòng)成功后,在控制臺(tái)中輸入命令"serial”接回車,啟動(dòng)串口測(cè)試程序serial.exe。程序啟動(dòng)后會(huì)顯示提示信息和準(zhǔn)備向COM2發(fā)送數(shù)據(jù)的提示符“>>”,如圖5。.OSLabPC-MicrosoftVirtualPC2007 ■XIActionEditCDFloppyHelpCONSOLE-1(PressCtrl+F1~F8toswitchconsoleuindou...)Ue1cometoEOSshell>serialThisprogramisusedtotestserialport,anditfsuseduithterminsureterminal.exeisrunningonUindous.?區(qū) _ — I J圖5由于虛擬機(jī)上的COM2和主機(jī)上的COM7已經(jīng)建立了連接,所以在向虛擬機(jī)的COM2發(fā)送數(shù)據(jù)之前,要先啟動(dòng)主機(jī)上的“Terminal”工具,準(zhǔn)備從COM7接收數(shù)據(jù):.在OSLab的“工具”菜單中選擇“Terminal”,啟動(dòng)“Terminal”工具。.在“連接到”對(duì)話框中選擇COM7,點(diǎn)擊“確定”按鈕,如圖7。連接到區(qū)連接時(shí)使用(由:(COM7 3確定I取消I圖7.在“屬性”對(duì)話框中點(diǎn)擊“確定”按鈕,使用默認(rèn)設(shè)置。接下來就會(huì)顯示Terminal的輸入輸出窗口,用于顯示從COM7接收到的數(shù)據(jù)和向COM7發(fā)送的數(shù)據(jù)。.此時(shí)激活虛擬機(jī)窗口,在EOS控制臺(tái)中輸入任意字符串并按回車后,Terminal會(huì)接收到由serial.exe發(fā)送到串口COM2的內(nèi)容。例如在serial中輸入"?110”后按回車,Terminal會(huì)接收到并顯示“hello”如圖8-9。圖8喧COIT-EOSTer>inalhello圖9.Serial.exe將輸入內(nèi)容發(fā)送到COM2后,會(huì)立刻調(diào)用API函數(shù)ReadFile從COM2讀取數(shù)據(jù)。由于當(dāng)前EOS的串口驅(qū)動(dòng)程序尚未實(shí)現(xiàn)從串口讀取數(shù)據(jù)的功能,所以ReadFile返回了錯(cuò)誤,serial.exe就退出了。6.結(jié)束此次調(diào)試。關(guān)閉Terminal工具。3調(diào)試EOS串口驅(qū)動(dòng)程序向串口發(fā)送數(shù)據(jù)的功能按照下面的步驟進(jìn)行調(diào)試:.在OSLab“項(xiàng)目管理器”窗口中打開串口驅(qū)動(dòng)程序源文件io/driver/serial.c。在函數(shù)SrlWrite的第一行(310行)和最后一行(341行)分別添加一個(gè)斷點(diǎn);在函數(shù)SrlIsr的第一行(352行)添加一個(gè)斷點(diǎn);在函數(shù)SrlRead唯一的一條返回語(yǔ)句所在行(295行)添加一個(gè)斷點(diǎn),如圖10-11。.Q.1.2.w4?后:?:K.Q.1.2.w4?后:?:K:s.q:a:r:2?3.nOOOOOOOOOO11111133333333333333332.按F5啟動(dòng)調(diào)試,如圖12。ActionEditCDFloppyHelp起皚頁(yè)mt.匚serialxSTA77S;rIHr+'IN:DEVICE_OBJECTD=v£uI.J-.t,INPFILBOBJECTFileObject,INPVOIDBuffer.INI.N:-:UTPULONGResultOPTIONAL)(二HAS.二:jLh,\Lj\GCount-Q:DK/I[K_KX1K\:;H:nK>-=(PMVI(:-_K<-I^;IO\' :dl-M「.「心葉「-4-PsResetEven1(6BKt->CcmipleticnEYenl)//復(fù)位發(fā)送完成事件.V>ir圖10起蛤頁(yè)start.cserial.c333334//335//阻塞等待直到數(shù)據(jù)發(fā)送完成。336//337PsWaitForEvent(&Ext->CoinpletionEventjINFINITE);338)339340*Result=Count;0341returnSTATUS_SUCCESS;342)343344//345//串口的中斷服務(wù)程序。346//347VOIDWStITmt(<圖11CONSOLE-1(PressCtrl+F1~F8tosuitchconsoleuindou...)Ue1cometoEOSshell■圖123.在內(nèi)核初始化過程中,初始化8250控制器時(shí)會(huì)觸發(fā)一個(gè)8250中斷,并命中Srllsr中設(shè)置的斷點(diǎn),按F5讓EOS繼續(xù)執(zhí)行忽略此次中斷。4.激活虛擬機(jī)窗口,在EOS控制臺(tái)中輸入命令飛?腐21”接回車如圖13。/OSLabPC-licrosoftVirtualPC2007ActionEditCDFloppyHelpmakeCOMSOLE-l(PressCtrl+F1~F8toswitchconsoleuindou...)UeleonetoEOSshell>serialmakeThisprogramisusedtotestserialport,andit'suseduithterminal.exejsureterminal.exeisrunningonUindows.?
圖13.在OSLab的“工具”菜單中選擇“Terminal”工具,并按3.2節(jié)中的方法打開串口COM7并進(jìn)入工具的輸入輸出窗口,如圖14。圖14.在EOS控制臺(tái)中輸入“12345”共5個(gè)字符后按回車,如圖15。圖15.在向串口發(fā)送數(shù)據(jù)時(shí),serial應(yīng)用程序調(diào)用了EOS的API函數(shù)WriteFile,而WriteFile最終調(diào)用了串口驅(qū)動(dòng)程序的SrlWrite函數(shù),所以會(huì)命中設(shè)置在SrlWrite函數(shù)第一行的斷點(diǎn)。打開“調(diào)用堆?!贝翱隍?yàn)證函數(shù)調(diào)用的層次。.將鼠標(biāo)指針移動(dòng)到SrlWrite函數(shù)參數(shù)Request上,可以查看其值為6。.說明要發(fā)送包括“12345”和字符串結(jié)束符“\0”在內(nèi)的6個(gè)字符。如圖16。圖16
.對(duì)照SrlWrite的流程圖,按F10單步跟蹤該函數(shù)的執(zhí)行過程。當(dāng)變量Data被賦值后,查看變量的值為0x31(字符“1”的ASCII代碼)。當(dāng)執(zhí)行語(yǔ)句(第332行):WRITE_PORT_UCHAR(REG_PORT(DeviceObject,THR),Data);后,將會(huì)命中設(shè)置在SrlIsr中的斷點(diǎn),開始調(diào)試中斷處理程序。激活Terminal工具窗口,可以看到已經(jīng)接收到字符“1"。如圖17-18。起始頁(yè)|start,serialc ▼x55:71111111112222222222333"——3333333333333333-33333PsResetEvtnt(ftEnt->CoinplatlonEvent);//復(fù)位發(fā)迸完成事件為無效狀態(tài)。while(Count<Request){//記錄要發(fā)送的第一個(gè)字節(jié),將其余要卷送的內(nèi)容寫入發(fā)送緩沖區(qū),//注意,箋沖區(qū)的大小可能不足以一次保存所有要發(fā)送的數(shù)據(jù),iTWriteRingBuffer//將返回實(shí)際寫入緩沖區(qū)的字節(jié)數(shù).//Data-((FCHAR)Buffer)[Count++];Count+=lopWriteRingBufferCExt->SendBuffer,Buffer+Count,Request-Count),////啟動(dòng)發(fā)送過程,//啟動(dòng)發(fā)送過程僅需將第一個(gè)字節(jié)數(shù)陽(yáng)寫入THE,THR中的數(shù)據(jù)祓送出后含觸發(fā)一個(gè)“THR空中斷,中面顯理程程序?qū)⒗^蝮發(fā)達(dá)緩沖區(qū)中的數(shù)據(jù)。翳中區(qū)中數(shù)據(jù)被發(fā)送//完后,中斷處理程序會(huì)設(shè)置Coi^leti口nEvent事件為有效。//WRITEPORTUCHARCREG_PORT(Device0bject.THR).Data),圖17空C0M7-EOSTerkinaL11圖184為EOS串口驅(qū)動(dòng)程序添加從串口接收數(shù)據(jù)的功能.EOS內(nèi)核項(xiàng)目代碼修改完畢后,按F7生成項(xiàng)目。.按F5啟動(dòng)調(diào)試。.按照之前練習(xí)的方法啟動(dòng)serial.exe和Terminal工具。.在EOS控制臺(tái)輸入字符串并發(fā)送到Terminal工具后,從Terminal工具輸入字符串應(yīng)該可以再發(fā)送到EOS控制臺(tái),并可以交替的進(jìn)行輸入輸出。如圖19-20:Ue1cometoEOSshell>serialThisprogramisusedtotestserialportjandit*susedusureterminal.exeisrunningonUindous.>>hello<<hello>>howareuou?圖19hellohellohowareyou?圖20四、實(shí)驗(yàn)結(jié)果與分析.實(shí)驗(yàn)中遇到的問題:在練習(xí)使用EOS應(yīng)用程序向串口發(fā)送數(shù)據(jù)時(shí)錯(cuò)誤的以為是在Terminal窗口中鍵入“hello”,導(dǎo)致與實(shí)驗(yàn)內(nèi)容不否的結(jié)果.解決方案:重啟Terminal工具,再次實(shí)驗(yàn)。最終在serial中輸入“卜?110”后按回車,Terminal會(huì)接收到并顯示“hello”如圖21-22。COSLabPC-MicrosoftVirtualPC2007 j,XActionEditCDFloppyHelpCOMSOLE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年臨時(shí)電梯使用協(xié)議范本
- 2025年施工合同修改協(xié)議
- 2025年創(chuàng)業(yè)園區(qū)租賃協(xié)議
- 2025年交通工程安全事故補(bǔ)償協(xié)議
- 2025年三人合資企業(yè)合同范本
- 2025年離異家庭撫養(yǎng)權(quán)策劃安排合同
- 2025年住房及其周邊設(shè)施購(gòu)買合同
- 2025年代理服務(wù)合同范文協(xié)議書
- 2025年策劃社團(tuán)聯(lián)合共創(chuàng)協(xié)議書
- 2025年交通項(xiàng)目合作實(shí)施協(xié)議書模板
- TSG07-2019鍋爐安裝工藝+焊接專用工藝卡+施工記錄表
- 2024-2025學(xué)年陜西省西安市浐灞區(qū)數(shù)學(xué)三年級(jí)第一學(xué)期期末統(tǒng)考試題含解析
- 《鈉離子電池用電解液編制說明》
- 全球醫(yī)療旅游經(jīng)濟(jì)的現(xiàn)狀與未來趨勢(shì)
- 2024年度儲(chǔ)能電站在建項(xiàng)目收購(gòu)合作協(xié)議范本3篇
- 新建冷卻塔布水器項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
- 廣東省梅州市梅縣區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 護(hù)理人員的職業(yè)安全防護(hù)
- 2024數(shù)據(jù)中心綜合布線工程設(shè)計(jì)
- 胸外科講課全套
- 2024年下半年中煤科工集團(tuán)北京華宇工程限公司中層干部公開招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
評(píng)論
0/150
提交評(píng)論