![嵌入式應用程序設計設備驅動_第1頁](http://file4.renrendoc.com/view8/M03/39/2C/wKhkGWcP5JWAY64RAABU4zeVrp0607.jpg)
![嵌入式應用程序設計設備驅動_第2頁](http://file4.renrendoc.com/view8/M03/39/2C/wKhkGWcP5JWAY64RAABU4zeVrp06072.jpg)
![嵌入式應用程序設計設備驅動_第3頁](http://file4.renrendoc.com/view8/M03/39/2C/wKhkGWcP5JWAY64RAABU4zeVrp06073.jpg)
![嵌入式應用程序設計設備驅動_第4頁](http://file4.renrendoc.com/view8/M03/39/2C/wKhkGWcP5JWAY64RAABU4zeVrp06074.jpg)
![嵌入式應用程序設計設備驅動_第5頁](http://file4.renrendoc.com/view8/M03/39/2C/wKhkGWcP5JWAY64RAABU4zeVrp06075.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
嵌入式應用程序設計設備驅動知識點回顧TCP/IP模型套接字TCP套接字編程UDP套接字編程
設備驅動得基本概念Linux內(nèi)核與驅動得關系Linux內(nèi)核模塊結構內(nèi)核模塊命令本次課內(nèi)容3
1、設備驅動概念就是處理和操作硬件控制器得軟件。驅動程序就是內(nèi)核得一部分,就是操作系統(tǒng)內(nèi)核與硬件設備得直接接口,驅動程序屏蔽了硬件得細節(jié),完成以下功能:對設備初始化和釋放;對設備進行管理,包括實時參數(shù)設置,以及提供對設備得操作接口;讀取應用程序傳送給設備文件得數(shù)據(jù)或者回送應用程序請求得數(shù)據(jù);檢測和處理設備出現(xiàn)得錯誤。8、1設備驅動編程基礎—設備驅動4
2、Linux系統(tǒng)得設備分類字符設備通常指以字節(jié)為單位順序讀寫得設備,如并口設備、虛擬控制臺等。塊設備通常指以塊為單位隨機讀寫得設備,如IDE硬盤、SCSI硬盤、光驅等。網(wǎng)絡設備通常就是指通過網(wǎng)絡能夠與其她主機進行數(shù)據(jù)通信得設備,如網(wǎng)卡等。8、1設備驅動編程基礎—設備驅動5舉例:linux設備識別在linux中任何設備都就是文件。所有設備得設備文件節(jié)點都在/dev目錄下。
#:ls–al/dev
3、設備驅動程序得特點內(nèi)核代碼內(nèi)核接口內(nèi)核機制和服務可裝載可設置動態(tài)性8、1設備驅動編程基礎—設備驅動7
4、設備驅動程序與整個軟硬件系統(tǒng)得關系8、1設備驅動編程基礎—設備驅動8大家有疑問的,可以詢問和交流可以互相討論下,但要小聲點
1、Linux得內(nèi)核模塊Linux內(nèi)核采用可加載內(nèi)核模塊化設計(LoadableKernelModule,LKM)內(nèi)核模塊:就是一些可以讓操作系統(tǒng)內(nèi)核在需要時載入和執(zhí)行得代碼。就是一種目標對象文件,通常由一組函數(shù)和數(shù)據(jù)結構組成。內(nèi)核得一個模塊可以以兩種方式被編譯和加載。直接編譯進Linux內(nèi)核,隨同Linux啟動時加載;編譯成一個可加載和刪除得模塊。8、1設備驅動編程基礎—內(nèi)核模塊編程108、1設備驅動編程基礎—內(nèi)核模塊編程C語言程序Linux內(nèi)核模塊運行用戶空間內(nèi)核空間入口main()module_init()指定;出口main() module_exit()指定;
編譯gcc–cMakefile連接ldinsmod運行直接運行insmod調(diào)試gdbkdbug,kdb,kgdb等2、Linux內(nèi)核模塊與應用程序得區(qū)別8、1設備驅動編程基礎—內(nèi)核模塊編程3、內(nèi)核模塊相關命令insmodmodule、oLoadthemodule注意,只有超級用戶才能使用這個命令rmmod
moduleUnloadthemodulelsmodListallmodulesloadedintothekernel這個命令和cat/proc/modules等價modprobe[-r]<modulename>–Loadthemodulespecifiedandmodulesitdepends舉例:模塊相關命令lsmodinsmodhello、ormmodhellomodprobe
/lib/modules/linux版本號/modules、dep
/etc/modprobe、confmodeproble–rhello最簡單得內(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編譯裝載過程$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…、
不需要編寫Makefile得方法gcc編譯后加上-DMODULE-DLINUX參數(shù)例如:gcc-DMODULE-DLINUX-I/usr/src/linux-2、4、20/include-c-ohello、ohello、c注意:-I選項跟著Linux內(nèi)核源代碼中Include目錄得路徑。
4、內(nèi)核模塊得程序結構一個Linux內(nèi)核模塊主要由以下幾個部分組成。模塊加載函數(shù)(必須)模塊卸載函數(shù)(必須)模塊許可證聲明(必須)模塊參數(shù)(可選)模塊導出符號(可選)模塊作者等信息聲明(可選)8、1設備驅動編程基礎—內(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ù)讀/寫權限訪問許可掩碼)宏為模塊聲明一個參數(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ù)在模塊加載時傳遞
#insmodhello、otest=2模塊參數(shù)21
導出符號EXPORT_SYMBOL(符號名);EXPORT_SYMBOL_GPL(符號名);模塊聲明與描述MODULE_AUTHOR(author);MODULE_DESCRIPTION(description);MODULE_VERSION(version_string);MODULE_DEVICE_TABLE(table_info);MODULE_ALIAS(alternate_name);導出符號與模塊聲明與描述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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冷撥鋼筋項目可行性研究報告
- 臨床路徑管理規(guī)范
- 買平房合同范本
- 2025年度特種貨物運輸合同
- 專利許可合同范例 baidu
- 2025年度影視制作劇務助理場記聘用合同范本-@-1
- 制作裝備柜合同范例
- 2025年度跨境電子商務合作合同范本
- 工商管理復習測試卷附答案
- 企業(yè)合作生產(chǎn)合同范本
- 醫(yī)美注射類知識培訓課件
- 2025年廣電網(wǎng)絡公司工作計劃(3篇)
- 貨運車輛駕駛員服務標準化培訓考核試卷
- 銀行行長2024年個人年終總結
- 財務BP經(jīng)營分析報告
- 設備基礎預埋件施工方案
- 中華人民共和國保守國家秘密法實施條例培訓課件
- 2024年全國統(tǒng)一高考英語試卷(新課標Ⅰ卷)含答案
- 2024年認證行業(yè)法律法規(guī)及認證基礎知識 CCAA年度確認 試題與答案
- 2022屆“一本、二本臨界生”動員大會(2023.5)
- 數(shù)學八年級上浙教版3.2直棱柱的表面展開圖同步練習
評論
0/150
提交評論