driverlinux
❶ linux設備驅動好學么需要什麼基礎
需要一定的努力才可以學好:
Linux設備驅動是linux內核的一部分,是用來屏蔽硬體細節,為上層提供標准介面的一種技術手段。為了能夠編寫出質量比較高的驅動程序,要求工程師必須具備以下幾個方面的知識:
1、 熟悉處理器的性能
如:處理器的體系結構、匯編語言、工作模式、異常處理等。對於初學者來說,在還不熟悉驅動編寫方法的情況下,可以先不把重心放在這一項上,因為可能因為它的枯燥、抽象而影響到你對設備驅動的興趣。隨著你不斷地熟悉驅動的編寫,你會很自然的意識到此項的重要性。
2、掌握驅動目標的硬體工作原理及通訊協議
如:串口控制器、顯卡控制器、硬體編解碼、存儲卡控制器、I2C通訊、SPI通訊、USB通訊、SDIO通訊、I2S通訊、PCI通訊等。編寫設備驅動的前提就是需要了解設備的操作方法,所以這些內容的重要程度不言而喻。但不是說要把所有設備的操作方法都熟悉了以後才可以寫驅動,你只需要了解你要驅動的硬體就可以了。
一、掌握硬體的控制方法
如:中斷、輪詢、DMA 等,通常一個硬體控制器會有多種控制方法,你需要根據系統性能的需要合理的選擇操作方法。初學階段以實現功能為目的,掌握的順序應該是,輪詢->中斷->DMA。隨著學習的深入,需要綜合考慮系統的性能需求,採取合適的方法。
二、良好的GNU C語言編程基礎
如:C語言的指針、結構體、內存操作、鏈表、隊列、棧、C和匯編混合編程等。這些編程語法是編寫設備驅動的基礎,無論對於初學者還是有經驗者都非常重要。
三、 良好的linux操作系統概念
如:多進程、多線程、進程調度、進程搶占、進程上下文、虛擬內存、原子操作、阻塞、睡眠、同步等概念及它們之間的關系。這些概念及方法在設備驅動里的使用是linux設備驅動區別單片機編程的最大特點,只有理解了它們才會編寫出高質量的驅動。
四、掌握linux內核中設備驅動的編寫介面
如:字元設備的cdev、塊設備的gendisk、網路設備的net_device,以及基於這些基本介面的framebuffer設備的fb_info、mtd設備的mtd_info、tty設備的tty_driver、usb設備的usb_driver、mmc設備的mmc_host等。
❷ Linux中如何安裝音效卡驅動程序
裝了幾次Linux OS,當然也裝了幾次音效卡驅動,一般來說都是安裝ALSA(Adcance Linux Sound Architecture)驅動,多裝幾次以後就會發現非常的簡單的。
首先,先決條件,也就是依賴關系,我記得需要安裝kernal-source(我用過的幾個Linux OS都默認不安裝這個,在你的OS 的軟體包管理程序那裡可以搜索這個關鍵詞,選上進行安裝,記得要插入系統光碟。),gcc我不記得要不要裝,好像沒有其他的了。
要安裝驅動,你得先去下載alsa驅動,網址是:www.alsa-project.org,個人認為為了保證最大的兼容性,最好去下載最新版本。一般來說,只需要下載安裝以下三個包就可以了,
driver
lib
utils
當然最好是要同一個版本的,我上傳了一個所有需要的包,1.0.16 版的,有需要的用戶請到這里來下載
URL : http://www.box.net/shared/0t5z8nao8c 不知道是否長久有效!
為了保證能完全安裝成功,建議切換到root用戶下執行安裝。
我是在X Window 下執行的安裝,解壓上述下載有的壓縮包是用滑鼠右鍵單擊解壓的,我想能熟練用shell命令來解壓文檔的Linux User是不需要來我這里看音效卡驅動的安裝的
先安裝下載回來的driver那個包,解壓,然後在終端中轉到解壓後的那個文件夾,按照順序執行以下命令。
1 ./configure
2 make
3 make install
4 ./snddevices
一般來說都能順利執行完上述命令的,如果不能的話,請查看返回的信息,這里需要特別說明一下,這幾個過程都比較耗時,無論你的硬體配置如何,這個我沒有辦法解釋原因,經驗之談。
安裝到了這里,就需要配置系統文件了,怎麼配置,手動的我也不知道,但是我知道有一個工具可以幫我們高效且幾乎不出錯的完成這個任務,那就是alsaconf工具了,這個工具在utils文件包裡面。
解壓下載回來的utils文件包,同樣需要在終端中執行命令,在終端中轉到解壓後的目錄,然後執行如下命令。
./alsaconf
然後就會出現一個比較像GUI的界面,會讓你選擇幾次OK鍵之後,開始搜索音效卡類型,搜索完了以後,就列出音效卡列表,選擇你的實際晶元組,然後再敲幾次OK鍵,最後問你是否讓他幫你寫入配置文件,當然要拉。至此,如果幸運的話,重啟之後就能你的音效卡就能工作了。
如果重啟之後還不能工作的話則繼續往下看。
還不能工作的話,一般需要安裝剩下的那兩個包了,但是,有順序的,先安裝lib再安裝utils
方法都差不多,都要在終端中執行安裝,命令都一樣。
1 ./configure
2 make
3 make install
安裝完最後的utils時再運行。
./alsaconf
再配置一次音效卡,個別的系統還要在X Window下的系統管理工具那裡設置一下音效卡,不過都簡單了。
重啟系統,你的音效卡應該能工作了,祝賀你。
❸ linux驅動開發要有哪些基礎
需要一定的努力才可以學好:
Linux設備驅動是linux內核的一部分,是用來屏蔽硬體細節,為上層提供標准介面的一種技術手段。為了能夠編寫出質量比較高的驅動程序,要求工程師必須具備以下幾個方面的知識:
1、 熟悉處理器的性能
如:處理器的體系結構、匯編語言、工作模式、異常處理等。對於初學者來說,在還不熟悉驅動編寫方法的情況下,可以先不把重心放在這一項上,因為可能因為它的枯燥、抽象而影響到你對設備驅動的興趣。隨著你不斷地熟悉驅動的編寫,你會很自然的意識到此項的重要性。
2、掌握驅動目標的硬體工作原理及通訊協議
如:串口控制器、顯卡控制器、硬體編解碼、存儲卡控制器、I2C通訊、SPI通訊、USB通訊、SDIO通訊、I2S通訊、PCI通訊等。編寫設備驅動的前提就是需要了解設備的操作方法,所以這些內容的重要程度不言而喻。但不是說要把所有設備的操作方法都熟悉了以後才可以寫驅動,你只需要了解你要驅動的硬體就可以了。
一、掌握硬體的控制方法
如:中斷、輪詢、DMA 等,通常一個硬體控制器會有多種控制方法,你需要根據系統性能的需要合理的選擇操作方法。初學階段以實現功能為目的,掌握的順序應該是,輪詢->中斷->DMA。隨著學習的深入,需要綜合考慮系統的性能需求,採取合適的方法。
二、良好的GNU C語言編程基礎
如:C語言的指針、結構體、內存操作、鏈表、隊列、棧、C和匯編混合編程等。這些編程語法是編寫設備驅動的基礎,無論對於初學者還是有經驗者都非常重要。
三、 良好的linux操作系統概念
如:多進程、多線程、進程調度、進程搶占、進程上下文、虛擬內存、原子操作、阻塞、睡眠、同步等概念及它們之間的關系。這些概念及方法在設備驅動里的使用是linux設備驅動區別單片機編程的最大特點,只有理解了它們才會編寫出高質量的驅動。
四、掌握linux內核中設備驅動的編寫介面
如:字元設備的cdev、塊設備的gendisk、網路設備的net_device,以及基於這些基本介面的framebuffer設備的fb_info、mtd設備的mtd_info、tty設備的tty_driver、usb設備的usb_driver、mmc設備的mmc_host等。
❹ linux如何載入驅動
linux操作系統下,載入驅動的方式有二:
靜態載入驅動;
動態載入驅動;
作為前者,靜態載入驅動是通過將驅動程序編譯到內核而進行的一系列配置操作;對於後者而言則是向內核注冊設備信息,從而在kernel啟動後,再通過insmod指令,關聯好主、次設備號,從而以模塊的形式進行載入的;
二者各有優點,所以應用的場合也是不一樣的;
❺ linux驅動是用什麼語法編寫的呢
大部分的硬體驅動都是內核kernel里帶的,kernel由C語言編寫。
❻ linux驅動有哪些
1、將驅動程序文件bcm5700src.rpm復制到一個臨時目錄中,並在此目錄中運行以下命令;
2、運行以下命令切換到驅動目錄中;
3、此目錄中會生成一個名字為bcm5700.spec的文件,運行以下命令對驅動程序進行編譯;
4、運行以下命令切換到RPM目錄中;
5、運行以下命令安裝驅動程序;
6、運行以下命令載入驅動模塊;
7、運行kudzu命令,系統會自動搜索到硬體,進行配置即可。
linux是文件型系統,在linux中,一切皆文件,所有硬體都會在對應的目錄(/dev)下面用相應的文件表示。 文件系統的linux下面,都有對於文件與這些設備關聯的,訪問這些文件就可以訪問實際硬體。 通過訪問文件去操作硬體設備,一切都會簡單很多,不需要再調用各種復雜的介面。 直接讀文件,寫文件就可以向設備發送、接收數據。 按照讀寫存儲數據方式,我們可以把設備分為以下幾種:字元設備(character device)、塊設備(Block device)和網路設備( network interface)。
字元設備(character device):指應用程序採用字元流方式訪問的設備。這些設備節點通常為傳真、虛擬終端和串口數據機、鍵盤之類設備提供流通信服務, 它通常只支持順序訪問。字元設備在實現時,大多不使用緩存器。系統直接從設備讀取/寫入每一個字元。
塊設備(Block device):通常支持隨機存取和定址,並使用緩存器,支持mount文件系統。典型的塊設備有硬碟、SD卡、快閃記憶體等,但此類設備一般不需要自己開發,linux對此提過了大部分的驅動。
網路設備(network interface):是一種特殊設備,它並不存在於/dev下面,主要用於網路數據的收發。網路驅動同塊驅動最大的不同在於網路驅動非同步接受外界數據,而塊驅動只對內核的請求作出響應。
上述設備中,字元設備驅動程序適合於大多數簡單的硬體設備,算是各類驅動程序中最簡單的一類,一般也是從這類驅動開始學習,然後再開始學習採用IIC、SPI等通訊介面的一些設備驅動。可以基於此類驅動調試LKT和LCS系列加密晶元。注意7位IIC地址是0x28。
❼ thinkpad安裝linux,驅動如何解決
電腦安裝linux系統後,進行驅動安裝步驟:
1、檢測新硬體,使用kudzu,檢測配置硬體。
$:kudzu
$:less/etc/sysconfig/hwconf
##hwconf中,會有檢測到的所有硬體名字(在driver一欄還有所用驅動名字,驅動存放在/lib/moles/`uname-r`/kernel/drivers目錄下)。使用dmesg|grepxx也可以在啟動自檢日誌中發現硬體信息。
2、使用modprobe/lsmod,查看驅動安裝情況。
$:modprobe-l
##或者lsmod
3、使用modinfo,查看模塊信息。
$:modinfoxxx
##比如查看音效卡模塊信息,modinfopcspkr
4、網上下載並安裝驅動
$:tar-xvfxxxx
$:makeclean
$:makemoles
$:makeinstall
$:depmod-a
$:modprobexxx(或是insmodxxx)
##註:使用depmod-a自動生成模塊依賴關系,再使用modprobe/insmod安裝模塊。