華科操作系統(tǒng)實(shí)驗(yàn)_第1頁(yè)
華科操作系統(tǒng)實(shí)驗(yàn)_第2頁(yè)
華科操作系統(tǒng)實(shí)驗(yàn)_第3頁(yè)
華科操作系統(tǒng)實(shí)驗(yàn)_第4頁(yè)
華科操作系統(tǒng)實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課 程 實(shí) 驗(yàn) 報(bào) 告課程名稱(chēng): 操作系統(tǒng)課程設(shè)計(jì) 專(zhuān)業(yè)班級(jí): 學(xué) 號(hào): 姓 名: 指導(dǎo)教師: 報(bào)告日期: 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院目錄實(shí)驗(yàn)1:進(jìn)程并發(fā)實(shí)驗(yàn)11.1 實(shí)驗(yàn)概述11.2 實(shí)驗(yàn)內(nèi)容11.3 實(shí)驗(yàn)設(shè)計(jì)11.4 實(shí)驗(yàn)過(guò)程21.5實(shí)驗(yàn)結(jié)果61.6實(shí)驗(yàn)小結(jié)7實(shí)驗(yàn)2:添加系統(tǒng)功能調(diào)用82.1 實(shí)驗(yàn)概述82.2 實(shí)驗(yàn)內(nèi)容82.2.1 階段1 添加源代碼82.2.2 階段2 連接新的系統(tǒng)功能調(diào)用92.2.3 階段3 重建內(nèi)核10 階段4 修改grub文件132.3 實(shí)驗(yàn)小結(jié)14實(shí)驗(yàn)3:添加設(shè)備驅(qū)動(dòng)程序153.1 實(shí)驗(yàn)概述153.2 實(shí)驗(yàn)內(nèi)容153.2.1 階段1 編寫(xiě)設(shè)備驅(qū)動(dòng)程序153.2.2 階段

2、2 編譯設(shè)備驅(qū)動(dòng)模塊163.2.3 階段3 加載設(shè)備驅(qū)動(dòng)模塊173.2.4 階段4 生成設(shè)備文件183.2.4 階段5 編寫(xiě)應(yīng)用程序測(cè)試183.3實(shí)驗(yàn)小結(jié)19實(shí)驗(yàn)總結(jié)20實(shí)驗(yàn)1: 進(jìn)程并發(fā)實(shí)驗(yàn) 1.1 實(shí)驗(yàn)概述 通過(guò)本次進(jìn)程并發(fā)實(shí)驗(yàn),讓同學(xué)更加熟悉和理解Linux編程環(huán)境。1.2 實(shí)驗(yàn)內(nèi)容本次實(shí)驗(yàn)的內(nèi)容主要分為兩個(gè)任務(wù):1.編寫(xiě)一個(gè)C程序,用read、write等系統(tǒng)調(diào)用實(shí)現(xiàn)文件拷貝功能。命令形式:copy <源文件名> <目標(biāo)文件名>2. 編寫(xiě)一個(gè)C程序,使用圖形編程庫(kù) (QT/GTK)分窗口顯示三個(gè)并發(fā)進(jìn)程的運(yùn)行(一個(gè)窗口實(shí)時(shí)顯示當(dāng)前系統(tǒng)時(shí)間,一個(gè)窗口循環(huán)顯示0到9

3、,一個(gè)窗口做1到1000的累加求和,刷新周期均為1秒)。1.3 實(shí)驗(yàn)設(shè)計(jì)任務(wù)1:實(shí)驗(yàn)1的第一個(gè)階段需要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的C語(yǔ)言程序,首先需要有一個(gè)復(fù)制的源文件,同時(shí)需要?jiǎng)?chuàng)建一個(gè)存放復(fù)制內(nèi)容的復(fù)制文件,文件復(fù)制傳輸?shù)闹虚g站可以設(shè)置一個(gè)緩沖數(shù)組,此次試驗(yàn)設(shè)計(jì)了一個(gè)大小為10個(gè)字節(jié)的數(shù)組。打開(kāi)復(fù)制源文件,返回一個(gè)INT標(biāo)識(shí),使用readbuf()函數(shù),每次讀取10個(gè)字節(jié)的內(nèi)容,將內(nèi)容存放到緩沖區(qū)數(shù)組,使用writebuf()函數(shù)將緩沖區(qū)的10個(gè)字節(jié)寫(xiě)到復(fù)制文件中,重復(fù)上述過(guò)程直到將整個(gè)復(fù)制過(guò)程完成。任務(wù)2:實(shí)驗(yàn)的第二個(gè)階段是實(shí)現(xiàn)進(jìn)程的同步,實(shí)現(xiàn)的工具是QT。主要實(shí)現(xiàn)3個(gè)進(jìn)程的同步,3個(gè)進(jìn)程分別為:實(shí)時(shí)顯

4、示系統(tǒng)時(shí)間、循環(huán)顯示0-9、顯示1-1000的累加和。以上程序的刷新時(shí)間設(shè)置為1秒鐘。使用的是c+編程語(yǔ)言。為了實(shí)現(xiàn)3個(gè)進(jìn)程。需要為這3個(gè)進(jìn)程分別創(chuàng)建3個(gè)不同的類(lèi),這3個(gè)不用的類(lèi)具有不同的成員函數(shù),使用成員函數(shù)來(lái)實(shí)現(xiàn)進(jìn)程的所代表的具體細(xì)節(jié)。為了實(shí)現(xiàn)進(jìn)程的結(jié)果能實(shí)時(shí)更新,需要調(diào)用connect()函數(shù),該函數(shù)的功能是每當(dāng)其中的timer每次發(fā)生變化時(shí),就回調(diào)用該類(lèi)的成員函數(shù),也就是進(jìn)程的具體實(shí)現(xiàn),從而實(shí)時(shí)顯示進(jìn)程的細(xì)節(jié)內(nèi)容。而3個(gè)進(jìn)程的實(shí)現(xiàn)是在Main中創(chuàng)建3個(gè)類(lèi),對(duì)應(yīng)3個(gè)進(jìn)程,調(diào)用類(lèi)的一些函數(shù)實(shí)現(xiàn)進(jìn)程并發(fā)。1.4 實(shí)驗(yàn)過(guò)程給出實(shí)驗(yàn)過(guò)程的詳細(xì)描述,分步驟說(shuō)明實(shí)驗(yàn)的具體操作過(guò)程任務(wù)1。1.首先需要

5、有復(fù)制源文件和復(fù)制目的文件,具體實(shí)現(xiàn)方式如圖1-1所示。圖 1-1 打開(kāi)文件分別以只讀和只寫(xiě)的方式將文件打開(kāi)。2.創(chuàng)建緩沖區(qū),大小為10個(gè)字節(jié)的數(shù)組。如圖1-2所示。圖 1-2 創(chuàng)建緩存區(qū)3.通過(guò)循環(huán)讀寫(xiě)的方式實(shí)現(xiàn)文件的復(fù)制,如圖1-3所示。圖 1-3 文件復(fù)制4.關(guān)閉文件。5.其中的writebuf和readbuf是自己編寫(xiě)的一個(gè)讀和寫(xiě)的函數(shù),調(diào)用的是read和write函數(shù)。如圖1-4所示。圖 1-4 讀寫(xiě)函數(shù)任務(wù)2。1.首先根據(jù)3個(gè)不同的進(jìn)程創(chuàng)建3個(gè)不同的類(lèi)。如圖1-5,圖1-6,圖1-7所示。圖 1-5 進(jìn)程1圖 1-6 進(jìn)程2圖 1-7 進(jìn)程32.分別為這3個(gè)類(lèi)編寫(xiě)其對(duì)應(yīng)的成員函數(shù),

6、實(shí)現(xiàn)進(jìn)行的具體功能。具體實(shí)現(xiàn)如圖1-8,圖1-9,圖1-10所示。圖 1-8 進(jìn)程顯示時(shí)間圖 1-9 進(jìn)程循環(huán)顯示0-9圖 1-10 進(jìn)程顯示1-1000求和3.在一個(gè)入口函數(shù)中創(chuàng)建3個(gè)不同的子進(jìn)程,在進(jìn)程中分別創(chuàng)建對(duì)應(yīng)的類(lèi),使用類(lèi)的方法來(lái)實(shí)現(xiàn)進(jìn)程的功能。具體實(shí)現(xiàn)如圖1-11.圖 1.11 入口函數(shù)4.分別為這3個(gè)進(jìn)程設(shè)計(jì)器對(duì)應(yīng)的顯示菜單,其中部分變量可以通過(guò)設(shè)置參數(shù)的方式進(jìn)行調(diào)控。并將進(jìn)程輸出結(jié)果與Forms中的UI綁定,在進(jìn)程結(jié)果顯示在界面中。1.5實(shí)驗(yàn)結(jié)果任務(wù)1.任務(wù)1的內(nèi)容比較簡(jiǎn)單,主要使用C語(yǔ)言完成程序的編寫(xiě),其對(duì)應(yīng)的結(jié)果有兩種情況,復(fù)制成功或者復(fù)制失敗,從實(shí)驗(yàn)1的第一階段的代碼可以

7、看出,失敗階段主要是是因?yàn)閺?fù)制源文件打開(kāi)失敗造成的。下面主要演示完成正確賦值的情況。如圖1-12所示。圖 1-12 運(yùn)行結(jié)果圖將infile與outfile進(jìn)行對(duì)比如圖1-13,圖1-14所示。圖 1-13 復(fù)制原文件infile圖 1-14 任務(wù)1復(fù)制輸出文件進(jìn)過(guò)對(duì)比可以看出,程序運(yùn)行的結(jié)果正確。任務(wù)2.任務(wù)2需要并發(fā)執(zhí)行3個(gè)進(jìn)程,3個(gè)進(jìn)程分別顯示系統(tǒng)當(dāng)前的時(shí)間, 1-1000的求和以及循環(huán)顯示0-9,刷新時(shí)間為1秒(1000ms),程序的運(yùn)行結(jié)果如下圖 1-15所示。圖 1-15 任務(wù)2進(jìn)程運(yùn)行結(jié)果圖1.6實(shí)驗(yàn)小結(jié)本次實(shí)驗(yàn)分為2個(gè)任務(wù),第一個(gè)任務(wù)完成文件的賦值拷貝。只要是運(yùn)用write函數(shù)

8、和read函數(shù)對(duì)文件進(jìn)行讀寫(xiě)操作。操作簡(jiǎn)單沒(méi)有什么難度,通過(guò)寫(xiě)readbuf函數(shù)和writebuf函數(shù)使得讀寫(xiě)函數(shù)使用起來(lái)更加的方便。運(yùn)行結(jié)果達(dá)到了預(yù)期要求。第2個(gè)任務(wù)需要實(shí)現(xiàn)進(jìn)程的并行以及運(yùn)行結(jié)果的刷新顯示,編寫(xiě)的語(yǔ)言是采用c+語(yǔ)言,需要為3個(gè)進(jìn)程創(chuàng)建3個(gè)不同的類(lèi),在同一個(gè)函數(shù)入口中對(duì)3個(gè)并發(fā)進(jìn)行進(jìn)行操作,并顯示其對(duì)應(yīng)的結(jié)果。其中遇到的問(wèn)題主要集中在兩個(gè)方便。一是怎樣將輸出結(jié)果與顯示窗口進(jìn)行綁定,綁定時(shí)需要注意什么以及如何調(diào)整。需要去網(wǎng)上查閱資料對(duì)對(duì)應(yīng)的參數(shù)進(jìn)行調(diào)整,由于QT的環(huán)境搭建的很好,學(xué)起來(lái)還是很輕松的。將菜單對(duì)應(yīng)的標(biāo)簽與輸出結(jié)果綁定即可。第二個(gè)問(wèn)題是怎樣實(shí)現(xiàn)1秒鐘刷新一次輸出結(jié)果呢

9、?查閱資料發(fā)現(xiàn)可以使用connect(timer, SIGNAL(timeout(), this, SLOT(MainWindowtm();每當(dāng)timer發(fā)生變化時(shí)就會(huì)調(diào)用SLOT中對(duì)應(yīng)的函數(shù),該函數(shù)就是對(duì)應(yīng)的進(jìn)程。每一秒調(diào)用一次從而實(shí)現(xiàn)刷新。通過(guò)上述方法成功實(shí)現(xiàn)了進(jìn)程并行與輸出結(jié)果的刷新。實(shí)驗(yàn)2: 添加系統(tǒng)功能調(diào)用 2.1 實(shí)驗(yàn)概述 通過(guò)添加系統(tǒng)功能調(diào)用,掌握添加系統(tǒng)功能調(diào)用的方法。2.2 實(shí)驗(yàn)內(nèi)容采用編譯內(nèi)核的方法,添加一個(gè)新的系統(tǒng)調(diào)用,實(shí)現(xiàn)文件拷貝功能編寫(xiě)一個(gè)應(yīng)用程序,測(cè)試新加的系統(tǒng)調(diào)用。2.2.1 階段1 添加源代碼1.任務(wù)描述:添加的系統(tǒng)功能調(diào)用需要實(shí)現(xiàn)一個(gè)文件拷貝的系統(tǒng)功能。2.實(shí)

10、驗(yàn)設(shè)計(jì):本次實(shí)驗(yàn)需要添加的系統(tǒng)功能調(diào)用時(shí)文件的復(fù)制拷貝功能,由于實(shí)驗(yàn)1的任務(wù)1已經(jīng)使用c語(yǔ)言實(shí)現(xiàn)了該功能則可以借用實(shí)驗(yàn)1任務(wù)1的思想,只是需要將函數(shù)做一些修改,包括函數(shù)名格式,入口參數(shù),以及其中調(diào)用的其他函數(shù)。3.實(shí)驗(yàn)過(guò)程:將調(diào)用函數(shù)名修改為以sys_開(kāi)頭的函數(shù),命名為sys_mysyscall。文件的打開(kāi)函數(shù)以及輸出結(jié)果函數(shù)也需要使用內(nèi)核函數(shù),避免內(nèi)存檢查時(shí)出現(xiàn)錯(cuò)誤。源代碼如圖2-1所示。圖 2-1 編寫(xiě)系統(tǒng)調(diào)用源代碼4.實(shí)驗(yàn)結(jié)果:完成系統(tǒng)功能調(diào)用源代碼的設(shè)計(jì)。2.2.2 階段2 連接新的系統(tǒng)功能調(diào)用1.任務(wù)描述:該階段的任務(wù)主要是使得內(nèi)核的其余部分知道該系統(tǒng)功能調(diào)用的存在。在該階段需要編輯

11、兩個(gè)文件,include/linux/syscalls.h以及arch/x86/syscalls/syscall_32.tbl。2.實(shí)驗(yàn)設(shè)計(jì):該階段需要修改include/linux/syscalls.h的代碼添加新的系統(tǒng)調(diào)用的函數(shù)定義。asmlinkage long sys_mysyscall(int number);接著需要修改arch/x86/syscalls/syscall_32.tbl(系統(tǒng)調(diào)用表)在系統(tǒng)調(diào)用表中為新增的系統(tǒng)調(diào)用分配調(diào)用號(hào)和系統(tǒng)調(diào)用名。3.實(shí)驗(yàn)過(guò)程:在系統(tǒng)調(diào)用定義中添加新的系統(tǒng)條用定義。操作如圖2-2所示。圖 2-2 添加系統(tǒng)調(diào)用定義接著需要在系統(tǒng)調(diào)用表中為該系統(tǒng)調(diào)用

12、分配一個(gè)系統(tǒng)調(diào)用名和一個(gè)系統(tǒng)調(diào)用號(hào)。系統(tǒng)調(diào)用號(hào)為359,系統(tǒng)調(diào)用名為mysyscall如圖2-3所示。圖2-3 分配系統(tǒng)調(diào)用號(hào)和調(diào)用名4.實(shí)驗(yàn)結(jié)果:完成第二階段添加系統(tǒng)定義以及為系統(tǒng)調(diào)用分配系統(tǒng)調(diào)用名和系統(tǒng)調(diào)用號(hào)。 階段3 重建內(nèi)核1.任務(wù)描述: 在第三階段主要完成系統(tǒng)內(nèi)核的重建。2.實(shí)驗(yàn)設(shè)計(jì):,其完成的步驟為:1.生成內(nèi)核配置文件,2.編譯內(nèi)核映像,3.生成并安裝模塊,4.安裝新的系統(tǒng)。其中如果報(bào)錯(cuò)說(shuō)沒(méi)有對(duì)應(yīng)的軟件包則需要下載軟件包。3.實(shí)驗(yàn)過(guò)程:a.首先根據(jù)自己的內(nèi)核版本下載對(duì)應(yīng)的內(nèi)核源碼,生成內(nèi)核配置文件,接著編譯內(nèi)核映像,實(shí)現(xiàn)的操作為:make menuconfig。運(yùn)行成功回出現(xiàn)一個(gè)

13、彈出框,可以直接退出,如圖2-4所示。圖 2-4 生成內(nèi)核配置文件1退出后顯示如下結(jié)果如圖 2-5 所示。圖 2-5 生成內(nèi)核配置文件2b.當(dāng)完成內(nèi)核文件的配置下面需要完成內(nèi)核配置映像。操作為指令為make bzImage。如圖2-6所示。圖 2-6 編譯內(nèi)核映像由于在撰寫(xiě)實(shí)驗(yàn)報(bào)告時(shí)已經(jīng)完成了編譯,編譯結(jié)果如圖2-7所示。圖 2-7 編譯內(nèi)核映像結(jié)果c.接下來(lái)需要編譯內(nèi)核模塊。操作指令如圖2-8所示。圖 2-8 編譯內(nèi)核模塊編譯結(jié)果如圖2-9所示。圖 2-9 編譯內(nèi)核模塊結(jié)果d.生成并安裝模塊。操作指令為:make modules_install,如圖2-10所示。圖 2-10 生成并安裝內(nèi)核

14、模塊d.安裝新的系統(tǒng)。操作指令如圖2-11所示。圖 2-12 安裝新的系統(tǒng)安裝結(jié)果如圖2-12所示。圖 2-13 安裝新的系統(tǒng)2.2.4 階段4 修改grub文件將/etc/default目錄下的grub文件注釋掉 GRUB_HIDDEN_TIMEOUT=0,然后運(yùn)行update-grub命令。如圖2-14所示。圖 2-14 注釋掉GRUB_HIDDEN_TIMEOUT=0 重啟 選擇新的修改內(nèi)核 選擇新的修改內(nèi)核如圖 2-15所示。圖 2-15 選擇新的修改內(nèi)核 編寫(xiě)程序測(cè)試編寫(xiě)的檢測(cè)程序通過(guò)系統(tǒng)調(diào)用的返回值判斷是否賦值成功,如圖2-16所示。圖 2-17 測(cè)試程序4.實(shí)驗(yàn)結(jié)果 測(cè)試結(jié)果如圖

15、2-18,圖2-19所示。圖 2-18 系統(tǒng)調(diào)用測(cè)試圖 2-19 系統(tǒng)調(diào)用測(cè)試結(jié)果2.3 實(shí)驗(yàn)小結(jié)對(duì)本次實(shí)驗(yàn)使用的理論、技術(shù)、方法和結(jié)果進(jìn)行總結(jié)。描述一下通過(guò)實(shí)驗(yàn)?zāi)阌心男┦斋@。本次實(shí)驗(yàn)的工程量還是相當(dāng)大的,其中需要是實(shí)驗(yàn)步驟很繁多,并且必須一步一步全部正確,不然后面的步驟無(wú)法完成。實(shí)驗(yàn)課程的PPT教學(xué)做的還是很完善的,只要根據(jù)要求來(lái),每步做正確,還是很容易的。實(shí)驗(yàn)完成了系統(tǒng)功能調(diào)用的添加。從最開(kāi)始的編寫(xiě)系統(tǒng)調(diào)用源代碼的編寫(xiě)到最后的系統(tǒng)功能調(diào)用的測(cè)試還是遇到了很多的問(wèn)題。其中的內(nèi)核版本的下載一定要和自己的版本很好的兼容,不然可能或多或少出現(xiàn)一些不必要的麻煩。添加的系統(tǒng)功能調(diào)用的源代碼一定要使用內(nèi)

16、核提供的函數(shù)進(jìn)行編寫(xiě),因?yàn)橛脩?hù)態(tài)的內(nèi)存訪問(wèn)受到限制,可能會(huì)引起內(nèi)存檢測(cè)時(shí)出現(xiàn)錯(cuò)誤。在編譯內(nèi)核模塊和安裝內(nèi)核模塊時(shí)需要很長(zhǎng)的時(shí)間,需要確保在這段時(shí)間里電腦能正常的運(yùn)行。不然要浪費(fèi)掉很長(zhǎng)的時(shí)間做一些重復(fù)的事情。在修改/etc/default/grub文件時(shí)可能不能直接修改,需要進(jìn)行一些特殊的操作,類(lèi)似獲得權(quán)限。本次實(shí)驗(yàn)的收獲良多,了解并實(shí)踐了添加系統(tǒng)功能調(diào)用的整個(gè)過(guò)程,知道了系統(tǒng)功能調(diào)用的編寫(xiě)添加的機(jī)制,學(xué)會(huì)了怎樣去添加一個(gè)新的系統(tǒng)功能調(diào)用。實(shí)驗(yàn)3: 添加設(shè)備驅(qū)動(dòng)程序 3.1 實(shí)驗(yàn)概述 通過(guò)添加設(shè)備驅(qū)動(dòng)程序掌握添加設(shè)備驅(qū)動(dòng)程序的方法。3.2 實(shí)驗(yàn)內(nèi)容采用模塊方法,添加一個(gè)新的字符設(shè)備驅(qū)動(dòng)程序,實(shí)現(xiàn)

17、打開(kāi)/關(guān)閉、讀/寫(xiě)等基本操作編寫(xiě)一個(gè)應(yīng)用程序,測(cè)試添加的驅(qū)動(dòng)程序3.2.1 階段1 編寫(xiě)設(shè)備驅(qū)動(dòng)程序1.任務(wù)描述:階段1的任務(wù)主要是編寫(xiě)設(shè)備驅(qū)動(dòng)程序,模塊的初始化、設(shè)備的功能、以及模塊卸載等。2.實(shí)驗(yàn)設(shè)計(jì):編寫(xiě)設(shè)備驅(qū)動(dòng)程序涉及的內(nèi)容主要有:1.完成函數(shù)關(guān)系綁定,2.模塊的初始化、需要實(shí)現(xiàn)哪些功能、模塊的卸載以及釋放內(nèi)存。3.實(shí)驗(yàn)過(guò)程:a.完成函數(shù)入口綁定。此處實(shí)驗(yàn)只選擇實(shí)現(xiàn)了部分功能。如圖3-1所示。圖 3-1 入口點(diǎn)綁定b.實(shí)現(xiàn)模塊的初始化以及模塊的卸載如圖3-2所示。圖 3-2 模塊初始化和卸載c.實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)程序的相關(guān)功能。如圖3-3所示。圖 3-4 實(shí)現(xiàn)驅(qū)動(dòng)設(shè)備功能4.實(shí)驗(yàn)結(jié)果:完成設(shè)

18、備驅(qū)動(dòng)程序的編寫(xiě)。3.2.2 階段2 編譯設(shè)備驅(qū)動(dòng)模塊1.任務(wù)描述:該階段主要完成設(shè)備驅(qū)動(dòng)模塊的編譯。 2.實(shí)驗(yàn)設(shè)計(jì):通過(guò)修改通用的Makefile文件完成編譯操作。3.實(shí)驗(yàn)過(guò)程:修改課程提供的Makefile文件,在其中添加生成的模塊名mydev.o。如圖3-5所示。圖 3-5 修改Makefile文件這個(gè)運(yùn)行Makefile文件。操作指令:make.4.實(shí)驗(yàn)結(jié)果:完成設(shè)備驅(qū)動(dòng)模塊的編譯。如圖3-6所示。圖 3-6 設(shè)備驅(qū)動(dòng)模塊的編譯 階段3 加載設(shè)備驅(qū)動(dòng)模塊1.任務(wù)描述:該階段主要完成設(shè)備驅(qū)動(dòng)模塊的加載。 2.實(shí)驗(yàn)設(shè)計(jì):使用設(shè)備驅(qū)動(dòng)模塊的加載指令,完成加載。3.實(shí)驗(yàn)過(guò)程:設(shè)備驅(qū)動(dòng)模塊的加載

19、指令為:insmod mydev.ko。如圖3-7所示。圖 3-7 加載設(shè)備驅(qū)動(dòng)模塊4.實(shí)驗(yàn)結(jié)果:設(shè)備驅(qū)動(dòng)模塊加載成功??梢酝ㄟ^(guò)在文件/proc/devices中能看到新增加的設(shè)備,包括設(shè)備名mydev和主設(shè)備號(hào)。如圖3-8,圖3-9所示。圖 3-8 模塊加載成功圖 3-9 模塊加載成功 階段4 生成設(shè)備文件1.任務(wù)描述:該階段主要完成生成對(duì)應(yīng)的設(shè)備文件。2.實(shí)驗(yàn)設(shè)計(jì):使用生成設(shè)備文件指令使其生成對(duì)應(yīng)的設(shè)備文件名,設(shè)備文件名設(shè)置為test.3.實(shí)驗(yàn)過(guò)程:使用設(shè)備文件指令為:insmod mydev.ko。如圖3-10所示。圖 3-10 生成設(shè)備文件4.實(shí)驗(yàn)結(jié)果:如果生成設(shè)備文件成功,可以看見(jiàn)在dev目錄下有一個(gè)mydev2文件,如圖3-11所示。圖 3-11 參看設(shè)備文件 階段5 編寫(xiě)應(yīng)用程序測(cè)試1.任務(wù)描述:編寫(xiě)應(yīng)用程序測(cè)試。2.實(shí)驗(yàn)設(shè)計(jì):編寫(xiě)應(yīng)用程序測(cè)試,將其視為文件進(jìn)行操作。3.實(shí)驗(yàn)過(guò)程:編寫(xiě)應(yīng)用程序,代碼如圖3-12所示圖 3-12 生成設(shè)備文件4.實(shí)驗(yàn)結(jié)果:測(cè)試結(jié)果正確,如圖3-13所示。圖 3-13 測(cè)試結(jié)果3.3實(shí)驗(yàn)小結(jié)本次實(shí)驗(yàn)主要完成添加設(shè)備驅(qū)動(dòng)程序,熟悉添加設(shè)備驅(qū)動(dòng)程序的過(guò)程,主要過(guò)程有便攜設(shè)備驅(qū)動(dòng)程序、編譯、加載、生成設(shè)備文件、測(cè)試等過(guò)程。在這期間也遇到很多問(wèn)題,其中主要集中在編寫(xiě)設(shè)備驅(qū)動(dòng)程序中

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論