![嵌入式應(yīng)用程序設(shè)計(jì)設(shè)備驅(qū)動(dòng)_第1頁(yè)](http://file4.renrendoc.com/view8/M03/39/2C/wKhkGWcP5JWAY64RAABU4zeVrp0607.jpg)
![嵌入式應(yīng)用程序設(shè)計(jì)設(shè)備驅(qū)動(dòng)_第2頁(yè)](http://file4.renrendoc.com/view8/M03/39/2C/wKhkGWcP5JWAY64RAABU4zeVrp06072.jpg)
![嵌入式應(yīng)用程序設(shè)計(jì)設(shè)備驅(qū)動(dòng)_第3頁(yè)](http://file4.renrendoc.com/view8/M03/39/2C/wKhkGWcP5JWAY64RAABU4zeVrp06073.jpg)
![嵌入式應(yīng)用程序設(shè)計(jì)設(shè)備驅(qū)動(dòng)_第4頁(yè)](http://file4.renrendoc.com/view8/M03/39/2C/wKhkGWcP5JWAY64RAABU4zeVrp06074.jpg)
![嵌入式應(yīng)用程序設(shè)計(jì)設(shè)備驅(qū)動(dòng)_第5頁(yè)](http://file4.renrendoc.com/view8/M03/39/2C/wKhkGWcP5JWAY64RAABU4zeVrp06075.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式應(yīng)用程序設(shè)計(jì)設(shè)備驅(qū)動(dòng)知識(shí)點(diǎn)回顧TCP/IP模型套接字TCP套接字編程UDP套接字編程
設(shè)備驅(qū)動(dòng)得基本概念Linux內(nèi)核與驅(qū)動(dòng)得關(guān)系Linux內(nèi)核模塊結(jié)構(gòu)內(nèi)核模塊命令本次課內(nèi)容3
1、設(shè)備驅(qū)動(dòng)概念就是處理和操作硬件控制器得軟件。驅(qū)動(dòng)程序就是內(nèi)核得一部分,就是操作系統(tǒng)內(nèi)核與硬件設(shè)備得直接接口,驅(qū)動(dòng)程序屏蔽了硬件得細(xì)節(jié),完成以下功能:對(duì)設(shè)備初始化和釋放;對(duì)設(shè)備進(jìn)行管理,包括實(shí)時(shí)參數(shù)設(shè)置,以及提供對(duì)設(shè)備得操作接口;讀取應(yīng)用程序傳送給設(shè)備文件得數(shù)據(jù)或者回送應(yīng)用程序請(qǐng)求得數(shù)據(jù);檢測(cè)和處理設(shè)備出現(xiàn)得錯(cuò)誤。8、1設(shè)備驅(qū)動(dòng)編程基礎(chǔ)—設(shè)備驅(qū)動(dòng)4
2、Linux系統(tǒng)得設(shè)備分類字符設(shè)備通常指以字節(jié)為單位順序讀寫(xiě)得設(shè)備,如并口設(shè)備、虛擬控制臺(tái)等。塊設(shè)備通常指以塊為單位隨機(jī)讀寫(xiě)得設(shè)備,如IDE硬盤、SCSI硬盤、光驅(qū)等。網(wǎng)絡(luò)設(shè)備通常就是指通過(guò)網(wǎng)絡(luò)能夠與其她主機(jī)進(jìn)行數(shù)據(jù)通信得設(shè)備,如網(wǎng)卡等。8、1設(shè)備驅(qū)動(dòng)編程基礎(chǔ)—設(shè)備驅(qū)動(dòng)5舉例:linux設(shè)備識(shí)別在linux中任何設(shè)備都就是文件。所有設(shè)備得設(shè)備文件節(jié)點(diǎn)都在/dev目錄下。
#:ls–al/dev
3、設(shè)備驅(qū)動(dòng)程序得特點(diǎn)內(nèi)核代碼內(nèi)核接口內(nèi)核機(jī)制和服務(wù)可裝載可設(shè)置動(dòng)態(tài)性8、1設(shè)備驅(qū)動(dòng)編程基礎(chǔ)—設(shè)備驅(qū)動(dòng)7
4、設(shè)備驅(qū)動(dòng)程序與整個(gè)軟硬件系統(tǒng)得關(guān)系8、1設(shè)備驅(qū)動(dòng)編程基礎(chǔ)—設(shè)備驅(qū)動(dòng)8大家有疑問(wèn)的,可以詢問(wèn)和交流可以互相討論下,但要小聲點(diǎn)
1、Linux得內(nèi)核模塊Linux內(nèi)核采用可加載內(nèi)核模塊化設(shè)計(jì)(LoadableKernelModule,LKM)內(nèi)核模塊:就是一些可以讓操作系統(tǒng)內(nèi)核在需要時(shí)載入和執(zhí)行得代碼。就是一種目標(biāo)對(duì)象文件,通常由一組函數(shù)和數(shù)據(jù)結(jié)構(gòu)組成。內(nèi)核得一個(gè)模塊可以以兩種方式被編譯和加載。直接編譯進(jìn)Linux內(nèi)核,隨同Linux啟動(dòng)時(shí)加載;編譯成一個(gè)可加載和刪除得模塊。8、1設(shè)備驅(qū)動(dòng)編程基礎(chǔ)—內(nèi)核模塊編程108、1設(shè)備驅(qū)動(dòng)編程基礎(chǔ)—內(nèi)核模塊編程C語(yǔ)言程序Linux內(nèi)核模塊運(yùn)行用戶空間內(nèi)核空間入口main()module_init()指定;出口main() module_exit()指定;
編譯gcc–cMakefile連接ldinsmod運(yùn)行直接運(yùn)行insmod調(diào)試gdbkdbug,kdb,kgdb等2、Linux內(nèi)核模塊與應(yīng)用程序得區(qū)別8、1設(shè)備驅(qū)動(dòng)編程基礎(chǔ)—內(nèi)核模塊編程3、內(nèi)核模塊相關(guān)命令insmodmodule、oLoadthemodule注意,只有超級(jí)用戶才能使用這個(gè)命令rmmod
moduleUnloadthemodulelsmodListallmodulesloadedintothekernel這個(gè)命令和cat/proc/modules等價(jià)modprobe[-r]<modulename>–Loadthemodulespecifiedandmodulesitdepends舉例:模塊相關(guān)命令lsmodinsmodhello、ormmodhellomodprobe
/lib/modules/linux版本號(hào)/modules、dep
/etc/modprobe、confmodeproble–rhello最簡(jiǎn)單得內(nèi)核模塊例子#include<linux/module、h>#include<linux/init、h>#include<linux/kernel>MODULE_LICENSE("GPL");staticint__inithello_init(void){
printk(“Hellokernel…、\n");
return0;}staticvoid__exithello_exit(void){
printk(“byebye…、\n");}module_init(hello_init);module_exit(hello_exit);生成makefile文件Makefile文件obj-m:=hello、oall:
make-C/usr/src/linux-2、4、20/M=$(shellpwd)modulesclean:make-C/usr/src/linux-2、4、20/M=$(shellpwd)modulesclean編譯裝載過(guò)程$ls
hello、c
Makefile
$make
make-C/usr/src/linux-2、4、20/M=/wu/char_8modules
$ls
hello、c
hello、mod、c
hello、mode、ohello、o
make、log
Makefile
modules、order
$sudoinsmodhello、o
$dmesg|tail-1
Hellokernel…$lsmod|grephello
hello
1216
0
$sudormmodhello
$dmesg|tail-1
byebye…、
不需要編寫(xiě)Makefile得方法gcc編譯后加上-DMODULE-DLINUX參數(shù)例如:gcc-DMODULE-DLINUX-I/usr/src/linux-2、4、20/include-c-ohello、ohello、c注意:-I選項(xiàng)跟著Linux內(nèi)核源代碼中Include目錄得路徑。
4、內(nèi)核模塊得程序結(jié)構(gòu)一個(gè)Linux內(nèi)核模塊主要由以下幾個(gè)部分組成。模塊加載函數(shù)(必須)模塊卸載函數(shù)(必須)模塊許可證聲明(必須)模塊參數(shù)(可選)模塊導(dǎo)出符號(hào)(可選)模塊作者等信息聲明(可選)8、1設(shè)備驅(qū)動(dòng)編程基礎(chǔ)—內(nèi)核模塊編程18
staticint__initinitialization_function(void){ /*初始化代碼*/}module_init(initialization_function);模塊加載函數(shù)19
staticvoid__exitcleanup_function(void){ /*釋放代碼*/}module_exit(cleanup_function);模塊卸載函數(shù)20
module_param(參數(shù)名,參數(shù)類型,參數(shù)讀/寫(xiě)權(quán)限訪問(wèn)許可掩碼)宏為模塊聲明一個(gè)參數(shù)支持得參數(shù)類型byte,short,ushort,int,uint,long,ulong,bool,charp,invboolarray(module_param_array(name,type,nump,perm))例如:staticchar*str_param="LinuxModuleProgram";staticintnum_param=4000;module_param(num_param,int,S_IRUGO);module_param(str_param,charp,S_IRUGO);參數(shù)在模塊加載時(shí)傳遞
#insmodhello、otest=2模塊參數(shù)21
導(dǎo)出符號(hào)EXPORT_SYMBOL(符號(hào)名);EXPORT_SYMBOL_GPL(符號(hào)名);模塊聲明與描述MODULE_AUTHOR(author);MODULE_DESCRIPTION(description);MODULE_VERSION(version_string);MODULE_DEVICE_TABLE(table_info);MODULE_ALIAS(alternate_name);導(dǎo)出符號(hào)與模塊聲明與描述22#include<linux/module、h>#include<linux/init、h>#include<linux/moduleparam、h>staticchar*whom="world";staticinthowmany=1;module_param(howmany,int,0444);module_param(whom,charp,S_IRUGO);staticint__inithello_init(void){
inti;for(i=0;i<howmany;i++)printk(“(%d)Hello,%s\n”,i,whom);
return0;}staticvoid__exithello_exit(void){
prin
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇科版數(shù)學(xué)九年級(jí)上冊(cè)《根的判別式》聽(tīng)評(píng)課記錄2
- 生物技術(shù)數(shù)據(jù)共享合同(2篇)
- 理發(fā)協(xié)議書(shū)(2篇)
- 統(tǒng)編版初中語(yǔ)文七年級(jí)下冊(cè)第十六課《最苦與最樂(lè)》聽(tīng)評(píng)課記錄
- 五年級(jí)下冊(cè)數(shù)學(xué)聽(tīng)評(píng)課記錄《6體積和體積單位》人教新課標(biāo)
- 吉林省七年級(jí)數(shù)學(xué)下冊(cè)第8章一元一次不等式8.2解一元一次不等式8.2.1不等式的解集聽(tīng)評(píng)課記錄新版華東師大版
- 人教版數(shù)學(xué)七年級(jí)上冊(cè)1.4《有理數(shù)的除法》(第1課時(shí))聽(tīng)評(píng)課記錄
- 2022年新課標(biāo)八年級(jí)上冊(cè)道德與法治《9.2 維護(hù)國(guó)家安全 》聽(tīng)課評(píng)課記錄
- 人教版數(shù)學(xué)八年級(jí)上冊(cè)《探究分式的基本性質(zhì)》聽(tīng)評(píng)課記錄2
- 小學(xué)數(shù)學(xué)蘇教版六年級(jí)上冊(cè)《分?jǐn)?shù)四則混合運(yùn)算》聽(tīng)評(píng)課記錄
- 福建省泉州市晉江市2024-2025學(xué)年七年級(jí)上學(xué)期期末生物學(xué)試題(含答案)
- 醫(yī)美注射類知識(shí)培訓(xùn)課件
- 2025年春新人教版物理八年級(jí)下冊(cè)課件 第十章 浮力 第4節(jié) 跨學(xué)科實(shí)踐:制作微型密度計(jì)
- 2025年廣電網(wǎng)絡(luò)公司工作計(jì)劃(3篇)
- 貨運(yùn)車輛駕駛員服務(wù)標(biāo)準(zhǔn)化培訓(xùn)考核試卷
- 財(cái)務(wù)BP經(jīng)營(yíng)分析報(bào)告
- 三年級(jí)上冊(cè)體育課教案
- 2024高考物理二輪復(fù)習(xí)電學(xué)實(shí)驗(yàn)專項(xiàng)訓(xùn)練含解析
- 暴發(fā)性心肌炎的診斷與治療
- 2024年全國(guó)統(tǒng)一高考英語(yǔ)試卷(新課標(biāo)Ⅰ卷)含答案
- 2022屆“一本、二本臨界生”動(dòng)員大會(huì)(2023.5)
評(píng)論
0/150
提交評(píng)論