![實驗一 內(nèi)存讀寫驅(qū)動_第1頁](http://file4.renrendoc.com/view/d33e71ba81c99cbdcefe640eecbe3c8d/d33e71ba81c99cbdcefe640eecbe3c8d1.gif)
![實驗一 內(nèi)存讀寫驅(qū)動_第2頁](http://file4.renrendoc.com/view/d33e71ba81c99cbdcefe640eecbe3c8d/d33e71ba81c99cbdcefe640eecbe3c8d2.gif)
![實驗一 內(nèi)存讀寫驅(qū)動_第3頁](http://file4.renrendoc.com/view/d33e71ba81c99cbdcefe640eecbe3c8d/d33e71ba81c99cbdcefe640eecbe3c8d3.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗"=內(nèi)存讀寫實”驗一、實驗?zāi)康模?、熟練掌握驅(qū)動程序的框架結(jié)構(gòu)及對應(yīng)函數(shù)實現(xiàn)。2、掌握各系統(tǒng)調(diào)用函數(shù)的典型用法。3、明確內(nèi)核空間與用戶空間數(shù)據(jù)的交換方法。4、可以根據(jù)需求靈活更改驅(qū)動程序及驗證應(yīng)用程序。二、實驗設(shè)備:FS2410開發(fā)板、學(xué)生自帶筆記本、USB轉(zhuǎn)串口線、電源、網(wǎng)線。三、實驗地點及時間地點:A2-303a時間:教學(xué)周第三周四、實驗內(nèi)容:1、在PC機上面,編寫模塊框架驅(qū)動程序Helloworld并加載成功。2、編寫操控一塊內(nèi)存區(qū)域的字符框架程序,在通用PC上面調(diào)試成功,并移植到開發(fā)板上。五、實驗原理:1、模塊驅(qū)動原理Linux內(nèi)核的整體結(jié)構(gòu)非常龐大,其包含的組件也非常多,如何使用需要的組件呢:方法一:把所有的組件都編譯進內(nèi)核文件,即:zImage或bzImage,但這樣會導(dǎo)致兩個問題:一是生成的內(nèi)核文件過大;二是如果要添加或刪除某個組件,需要重新編譯整個內(nèi)核。有沒有一種機制能讓內(nèi)核文件(zImage或bzImage)本身并不包含某組件,而是在該組件需要被使用的時候,動態(tài)地添加到正在運行的內(nèi)核中呢?Linux提供了一種叫做“內(nèi)核模塊”的機制,就可以實現(xiàn)以上效果。以下是helloworlc的實例:module.init(hello_init);module.exit(hello.exit);#inc1ude<1inux/init.h>#inc1ude<1inux/module.h>staticinthello_init(void)printk(KERN-WARNING"He1lo,world!\n")return0;staticvoidhello_exit(void)printk(KERN一INFO"Goodbye,world\n");modu1e_init(hello_init);modu1e_exit(he1lo_exit);安裝模塊時被系統(tǒng)自動調(diào)用的函數(shù),通過module_init宏來指定,卸載模塊時被系統(tǒng)自動調(diào)用的函數(shù),通過module_exit宏來指定,此外還有一些宏定義;比如所有模塊代碼都應(yīng)該指定所使用的許可證:MODULE_LICENSE("DualBSD/GPL");其他描述性定義:MODULE_AUTHOR("");MODULE_DESCRIPTION("");MODULE_VERSION("");MODULE_ALIAS("");MODULE_DEVICE_TABLE("");等等。2、簡單字符模塊、主設(shè)備號和次設(shè)備號主設(shè)備號表示設(shè)備對應(yīng)的驅(qū)動程序;次設(shè)備號由內(nèi)核使用,用于確定設(shè)備文件所指的設(shè)備。主設(shè)備號相同的設(shè)備使用相同的驅(qū)動程序,次設(shè)備號用于區(qū)分具體設(shè)備的實例。2.6內(nèi)核用dev_t類型變量(<linux/types.h>)來保存設(shè)備編號,dev_t是一個32位的數(shù),12位表示主設(shè)備號,20位表示次設(shè)備號。、一些重要的數(shù)據(jù)結(jié)構(gòu)大部分基本的驅(qū)動程序操作涉及及到三個重要的內(nèi)核數(shù)據(jù)結(jié)構(gòu),分另file_operations、file和inode,它們的定義都在<linux/fs.h>0、字符設(shè)備的注冊內(nèi)核內(nèi)部使用structcdev結(jié)構(gòu)來表示字符設(shè)備。在內(nèi)核調(diào)用設(shè)備的操作之前,必須分配并注冊一個或多個structcdev。代碼應(yīng)包#<linux/cdev.h>,它定義了structcdev以及與其相關(guān)的一些輔助函數(shù)。注冊一個獨立的cdev設(shè)備的基本過程如下:為自己的設(shè)備結(jié)構(gòu)體分配空間?初始化structcdevcdev設(shè)置完成,通知內(nèi)核structcdev的信息從系統(tǒng)中移除一個字符設(shè)備:voidcdev_del(structcdev*p)、內(nèi)存申請函數(shù)驅(qū)動程序引入了兩個Linux內(nèi)核中用于內(nèi)存管理的核心函數(shù),它們的定義都在<linux/slab.h>:void*kmalloc(size_tsize,intflags);voidkfree(void*ptr);flags的參數(shù)GFP_KERNEL請求動態(tài)內(nèi)存總是分配成功,如無則等待。故不能用在中斷中。GFP_ATOMIC無條件分配內(nèi)存,沒有立即釋放,進程不睡眠。、open和releaseopen方法提供給驅(qū)動程序以初始化的能力,為以后的操作作準備。release方法提供釋放內(nèi)存,關(guān)閉設(shè)備的功能。、read和writeread和write方法的主要作用就是實現(xiàn)內(nèi)核與用戶空間之間的數(shù)據(jù)拷貝。unsignedlongcopy_to_user(void__user*to,constvoid*from,unsignedlongcount);unsignedlongcopy_from_user(void*to,constvoid__user*from,unsignedlongcount);2、驅(qū)動中常用的系統(tǒng)調(diào)用Open?WriteReadTOC\o"1-5"\h\zCloseloctlPoll具體詳見教材、《LinuxC程序設(shè)計》或《UNIX環(huán)境高級編程》。六、實驗步驟編寫helloworld模塊及相應(yīng)makefile文件,編譯
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技發(fā)展與學(xué)科教育的互促關(guān)系研究
- 科技教育編程教育的普及與推廣
- DB4453T 30-2025廣藿香組培苗生產(chǎn)技術(shù)規(guī)程
- DB35T 2232-2024海峽兩岸共通 火龍果生產(chǎn)技術(shù)規(guī)程
- 東莞企業(yè)勞動合同范本
- 個人貸款房屋抵押合同模板大全
- 業(yè)務(wù)經(jīng)營權(quán)轉(zhuǎn)讓合同
- 個人車位共有權(quán)買賣合同
- 臨時倉儲合同范本
- 兩人股權(quán)轉(zhuǎn)讓合同范本
- 音樂教學(xué)集訓(xùn)課程設(shè)計
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期期末 地理試題(含答案)
- 肺切除手術(shù)的術(shù)前評估課件
- 招聘專職人員報名表
- 《大學(xué)生創(chuàng)新與創(chuàng)業(yè)》課件
- 護士的護理職業(yè)生涯規(guī)劃
- 2024年高考語文復(fù)習:古詩文閱讀強化練習題匯編(含答案解析)
- 不良反應(yīng)事件及嚴重不良事件處理的標準操作規(guī)程藥物臨床試驗機構(gòu)GCP SOP
- 勞動合同(模版)4篇
- 義務(wù)教育數(shù)學(xué)課程標準(2022年版)重點
- 2021上海春考作文題解析及范文(怎樣做與成為什么樣人)
評論
0/150
提交評論