嵌入式應用程序設計設備驅動_第1頁
嵌入式應用程序設計設備驅動_第2頁
嵌入式應用程序設計設備驅動_第3頁
嵌入式應用程序設計設備驅動_第4頁
嵌入式應用程序設計設備驅動_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論