導航:首頁 > 編程系統 > linux怎麼自己載入驅動

linux怎麼自己載入驅動

發布時間:2023-05-16 21:29:27

Ⅰ 如何在linux下添加自己的驅動

一.驅動編譯到內核
1.先選擇一個放置驅動代碼的位置,例:drivers/char/xxx.c
2.在drivers/char/Kconfig文件添加以下內容:
menu " xxx support"
config xxx
tristate "xxx support"
---help---
xxx use gpio as ir input .
If you want xxx support, you should say Y here and also to the
specific driver for your bus adapter(s) below.
This xxx support can be built as a mole.
endmenu
3.編寫Makefile,位置與上相同(drivers/char/),內容如下:
obj-$(CONFIG_xxx) += xxx.o //黑色xxx與上面Kconfig中的xxx相同,而紅色xxx應與
驅動xxx.c的命名相同
4.修改上一級Makefile和Kconfig //根據自己驅動的位置做相應的修改,參考上級的Mak_
efile和Kconfig的內容
至此,修改完畢,此時你可以使用make menuconfig,發現已有 xxx support ---> 選項,進入後選擇M,再make moles,到char目錄下,已生成xxx.ko。
最後,再進入make menuconfig ,選擇 xxx support,編譯進內核.

二. 驅動作成模塊載入
一般在開發時採用這種方式比較方便,無需每次都要通過tftp下載內核,nfs去掛載根文件系統,我們只需要把驅動作為模塊,在本地虛擬機中完成操作。
1>.模塊製作
a.驅動編譯
把 xxx.c文件放入drivers/char子目錄下,修改drivers/char/Makefile
obj-m += xxx.o
然後,
make moles,生成模塊都 drivers/char/xxx.ko
再把 xxx.ko 放到單板根文件系統的/lib/moles/2.6.14.1(自己的內核版本)/目錄下
b.驅動測試
編寫測試代碼及Makefile文件,make後,把生成文件放在單板跟文件系統/usr/bin/目錄下
2>.調試
在根文件系統中建立設備文件:
# mknod /dev/buttons c 232 0
載入模塊
# insmod s3c24xx_buttons
卸載模塊
# rmmod s3c24xx_buttons

Ⅱ linux系統怎麼載入raid驅動

光碟啟動進入安裝界面,在boot:後面輸入linux dd按回車

如果驅動不正確則提示專:Failed to mount drive disk
如果驅動正確則提示載入usb-storage ,此時驅動已經完全屬載入

詢問是否要載入驅動選擇yes

選擇sda設備usb設備都是被識別為scsi設備

是否要載入/dev/sda設備選擇ok

進入下圖,點擊ok

選擇你需要的驅動程序按ok

是否要載入額外的驅動選擇no,這樣就可以正常安裝系統了

Ⅲ 如何在嵌入式LINUX中增加自己的設備驅動程序

Linux驅動程序的使用可以按照兩種方式編譯,一種是靜態編譯進內核,另一種是編譯成模塊以供動態載入。由於uClinux不支持模塊動態載入,而且嵌入式LINUX不能夠象桌面LINUX那樣靈活的使用insmod/rmmod載入卸載設備驅動程序,因而這里只介紹將設備驅動程序靜態編譯進uClinux內核的方法。

下面以UCLINUX為例,介紹在一個以模塊方式出現的驅動程序test.c基礎之上,將其編譯進內核的一系列步驟:

(1) 改動test.c源帶代碼
第一步,將原來的:
#include
#include
char kernel_version[]=UTS_RELEASE;
改動為:
#ifdef MODULE
#include
#include
char kernel_version[]=UTS_RELEASE;
#else
#define MOD_INC_USE_COUNT
#define MOD_DEC_USE_COUNT
#endif
第二步,新建函數int init_test(void)
將設備注冊寫在此處:
result=register_chrdev(254,"test",&test_fops);

(2)將test.c復制到/uclinux/linux/drivers/char目錄下,並且在/uclinux/linux/drivers/char目錄下mem.c中,int chr_dev_init( )函數中增加如下代碼:
#ifdef CONFIG_TESTDRIVE
init_test();
#endif

(3)在/uclinux/linux/drivers/char目錄下Makefile中增加如下代碼:
ifeq($(CONFIG_TESTDRIVE),y)
L_OBJS+=test.o
Endif

(4)在/uclinux/linux/arch/m68knommu目錄下config.in中字元設備段里增加如下代碼:
bool 'support for testdrive' CONFIG_TESTDRIVE y

(5) 運行make menuconfig(在menuconfig的字元設備選項里你可以看見我們剛剛添加的'support for testdrive'選項,並且已經被選中);make dep;make linux;make linux.text;make linux.data;cat linux.text linux.data > linux.bin。

(6) 在 /uclinux/romdisk/romdisk/dev/目錄下創建設備:
mknod test c 254 0
並且在/uclinux/appsrc/下運行make,生成新的Romdisk.s19文件。
到這里,在UCLINUX中增加設備驅動程序的工作可以說是完成了,只要將新的linux.bin與Romdisk

Ⅳ linux系統中哪個命令可以用來載入驅動程序

在2.4內核中,載入驅動命令為:insmod ,刪除模塊為:rmmod;
在2.6以上內核中,除了insmod與rmmod外,回載入命令還有modprobe;答
insmod與modprobe不同之處:
insmod 絕對路徑/××.o,而modprobe ××即可,不用加.ko或.o後綴,也不用加路徑;最重要的一點是:modprobe同時會載入當前模塊所依賴的其它模塊;
lsmod查看當前載入到內核中的所有驅動模塊,同時提供其它一些信息,比如其它模塊是否在使用另一個模塊。

Ⅳ linux如何安裝驅動

在Intel網站直接下載的Linux驅動是e1000-5.2.52.tar.gz(版本可能會有改變),這個壓縮包裡面沒有編譯好的.o的文件,需要在Linux系統下編譯之後才能使用,
因為網卡需要編譯,所以要先確認將內核源文件安裝好,下面是關於內核源文件的安裝
● Linux下添加內核源文件
1. 用rpm –qa|grep kernel-source查看是否安裝了這個包;
如果返回結果中有kernel-source-xxx(其中xxx為當前redhat的內核版本,如rhel3為2.4.21-4EL), 即已經 安裝。如無返回結果則需要安裝kernel-source包。到安裝光碟中找到kernel-source-xxx.i386.rpm,用下面命令安裝此rpm包:
2.如果安裝了用rpm -V kernel-source校驗是否有文件丟失,如果沒有輸出,表示文件完整;
3.如果有丟失用rpm -ivh --force kernel-source-xxxx...把包重新安裝一下;
這個kernel-source包,在您的RH安裝光碟中,在Redhat/RPMS中,如果以前沒有安裝過這個包,那麼用rpm -ivh kernel-source-xxxx...來安裝,如果安裝過,需要覆蓋安裝,使用rpm -ivh --force kernel-source-xxxx...這個命令強制安裝。
註:AS 4 開始,沒有kernel-source這個包了,取而代之的是kernel-dev這個包,檢查這個包有沒有安裝的方法同上
● 驅動安裝步驟:
1. 把這個tar文件拷貝到用戶自己定義的目錄中,例如:
/home/username/e1000 or /usr/local/src/e1000
2. 用tar命令解這個壓縮包:
tar zxf e1000-5.2.52.tar.gz
3. 切換到驅動的src目錄下:
cd e1000-5.2.52/src/
4. 編譯這個驅動模塊:
make
然後安裝這個模塊
make install
這個二進制元將被安裝到如下位置:
/lib/moles//kernel/drivers/net/e1000.o
以上的路徑是默認的安裝位置,在某些linux版本中可能是其他位置,具體信息可以查看在驅動的 tar壓縮包中的ldistrib.txt文件.
5. 安裝模塊:
insmod e1000 (2.6以上的版本最好使用全路徑安裝 P insmod /lib/moles//kernel/drivers/net/e1000/e1000.ko)
6. 設定網卡IP地址:
ifconfig ethx <IP_address> x是網卡介面的號
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
若多個網卡的晶元相同可以cp ifcfg-eth0 ifcfg-eth1~~~~~~
修改下裡面的drive名稱就OK
!!!!!!!!!!!!!!!!!!!
在網卡的編譯中很可能不能進行下去~這個原因除了kernel的開發包沒有安裝外還可能是由於開發環境不完全所引起的!
這時就需要你講開發環境安裝完成,最簡單的辦法就是通過 sysconfig-config-packet 安裝gcc
安裝完成後繼續執行 make ;make install

了解更多開源相關,去LUPA社區看看吧

Ⅵ linux系統怎麼載入raid驅動

一般情況想常用的伺服器,ibm hp dell等,linux系統都會內置raid卡允動的,不需要自己安裝驅動,至少我是很少碰見要裝驅動的情況。如果發現安裝時認不到硬碟。可以按照以下官方說明來安裝驅動。有問題可以在上班時間HI我。都在線。

RHEL5, unlike previous RHEL version, requires additional steps for installing the OS onto an Intel(R) Embedded Server RAID Technology volume.
1) Create a RAID array using the Intel Embedded Server RAID Technology II RAID BIOS Configuration Utility.
2) Boot your system using RHEL disc one.
3) At boot prompt type 「linux nostorage」
4) Proceed with the installation and you will see a screen which provides you with ?Add device? button.
5) Click 「Add Device」, a list of all drivers will appear
6) Press F2 to select driver from floppy
7) Insert the floppy with the Installer DUD image
8 ) Select device that corresponds to the floppy drive (sda in case of USB floppy)
9) After the driver is loaded the list of all drivers will appear again
10) Scroll down the driver list and select. Update megaide driver? in the list
11) Click OK
12) The driver will be loaded and the list of detected devices will appear
13) Click Done
14) Complete installation with RHEL CD

Ⅶ linux中動態載入驅動的過程是怎麼樣的,能給個詳細的嗎

介紹個動態載入模塊的過程

在該驅動中,我們假設對鍵盤的獲取是以0.2s為周期執行。源代碼如下

static struct timer_list timer;///////我們定義的定時器,也許你會問timer_list是什麼來的,其實一看名稱就應該就知道了,而為什麼要用到list那麼多定時器呢?其實在linux中還有很多相同的定義,比如說信號,我們定義的也是信號集,你可以定義該list是一個元素的,也可以是多個的。所以對於 timer_list就可以這樣描述:在未來某一個特定時刻執行某一系列特定任務的功能。下面我們還會給出內核中timer_list的具體描述,^_^ 好像我的話又說多了

static int Keypad_starttimer(void)
{
init_timer(&timer);//初始化定時器結構
timer.function=Keypad_timer;//超時服務程序
timer.expires=jiffies+20;//當前時刻加0.2s
add_timer(&timer);
return 0;
}
///超時服務程序
static void Keypad_timer(unsigned long data)
{
read_xy();
}

/////////接下來說下timer-list這個數據結構,如果你不感興趣的話可以跳過,該結構在include\linux\timer.h中定義
struct timer_list
{
struct list_head entry;
unsigned long expries;
spinlock_t lock;
unsigned long magic;
void (*function)(unsigned long);
unsigner long data;
struct tvec_t_base_s *base;
}

七.利用等待隊列實現阻塞型I\O

在用戶程序執行讀操作的時候有可能尚且沒有數據可以讀取,為此需要讓read操作等待,直到有數據可以讀取,這就是阻塞型i\o,阻塞型io可以通過使用進程休眠方法實現。在無數據可以讀取的時候,採用等待隊列讓進程休眠,直到有數據到達的時候才喚醒進程完成數據的讀操作。

在本驅動中的read,若循環隊列緩沖區中沒有數據,則進程進入休眠態,定時器函數每隔0.2s讀取鍵值一次,將按鍵狀態放入緩沖並且適時喚醒進程讀取數據。

等待隊列的使用流程如下:

1.聲明一個等待隊列

2.把當前進程加入到等待隊列中

3.把進程的狀態設置為TASK_INTERRUPTIBLE或TASK_UNINTERRUPTIBLE;

4.調用schele,以讓出cpu

5.檢測所需要的資源是否可用,若是,把當前進程從等待隊列中刪除,否則轉3循環

接下來我們在對read中有關等待隊列阻塞實現做具體的解釋

static ssize_t Keypad_read(struct file *filp,char *buf,ssize_t count,loff_t *l)
{
DECLEARE_WAITQUEUE(wait,current);//聲明等待隊列,將當前進程加入到等待隊列中
KEY_EVENT t;
ulong out_buf[2];
if(head==tail)//當前循環隊列中沒有數據可以讀取
{
if(filp->f_flags & O_NONBLOCK)//假如用戶採用的是非堵塞方式讀取
return _EAGAIN;
add_wait_queue(&queue,&wait);//將當前進程加入等待隊列
current->state=TASK_INTERRUPTIBLE;//設置當前進程的狀態
while((head==tail)&&!signal_pending(current))//假若還沒有數據到循環隊列並且當前進程沒有受到信號(該類信號具體來說是未決的休眠)
{
shele();//進程調度
current->state=TASK_INTERRUPTIBLE;
}
current->state=TASK_RUNNING;//該進程恢復執行
remove_wait_queue(&queue,&wait);//移出等待隊列
if(head==tail)
return count;
t=get_data();//調用get_data()函數,得到緩沖區中的數據,下面將給予詳細的 介紹
out_buf[0]=t.status;
out_buf[1]=t.click;
_to_user(buf,&out_buf,sizeof(out_buf));//將得到的鍵值拷貝到用戶數據區
return count;
}
}

Ⅷ 在LINUX中如何載入驅動網卡

顯卡安裝:
一、下載驅動程序
首先要找到顯卡for
Linux的驅動程序。現在絕大多數的3D顯卡都已有了for
Linux的驅動程序,可到各顯卡廠商的主頁或Linux的相關站點上去尋找。在安裝顯卡時,伺服器根據顯卡的情況來載入不同的顯示模塊,如果顯示模塊載入不正確,顯卡就不能正常顯示。
二、裝載磁碟驅動器
Linux需要裝載磁碟驅動器才能讀取文件。啟動Linux後,在字元界面下輸入「mount
-t
vfat
/dev/hda1
/mnt/winc」命令,將C盤裝載到Linux下。需要注意的是,如果下載的是壓縮文件,選擇的是在Linux下解壓,就得先進行裝載磁碟驅動器這一步,再進行文件的解壓縮。
三、拷貝文件
將XF86_SVGA文件拷貝到/usr/X11R6/bin目錄下。注意,這是針對Red
Hat版本來說,其它版本的路徑不一定相同。「cp
/mnt/winc/win98/TEMP/XF86_SVGA
/usr/X11R6/bin」(根據自己的情況靈活掌握,關鍵是路徑一定要正確,還要分清字母的大小寫)。如果系統提示有同名文件,問是否覆蓋,一定要選擇「y」。這些舊文件可能是以前安裝顯卡時載入的,沒有實際用處。在輸入文件名的時候,輸完XF86後按一下Tab鍵,再接著輸SVGA,下劃線_就可以出來了,按鍵盤上的下劃線鍵是沒用的,切記。
四、配置顯卡
文件拷貝完成後,輸入Xconfigurator,啟動顯卡配置程序。我在顯卡列表中仍然沒有找到Trident
Blade
3D,於是選最後一個選項「Unlist」,然後選擇載入的顯示模塊為SVGA,再選擇顯示器型號、顯存大小、刷新頻率
總結:在Linux下安裝顯卡驅動程序,首先要下載顯卡支持Linux的驅動程序,再將其拷貝到/usr/X11R6/bin目錄下,然後啟動顯卡配置程序進行配置即可。
網卡、音效卡等驅動安裝可以依此類推

Ⅸ linux 驅動怎麼載入

modprobe xxxxxxxxx

硬體信息的獲取是驅動自己識別的事情。

閱讀全文

與linux怎麼自己載入驅動相關的資料

熱點內容
手錶怎麼設置蜂窩網路 瀏覽:51
舊愛勾搭app還有嗎 瀏覽:141
日外語言編程軟體哪個好 瀏覽:950
小論文發表了但是數據錯誤怎麼辦 瀏覽:952
注冊表禁止啟動程序運行 瀏覽:705
網路優化總體流程圖 瀏覽:735
前端程序員簡歷模板 瀏覽:706
蜂巢積木編程機器人怎麼樣 瀏覽:561
微信小程序tips 瀏覽:117
油印文件有哪些 瀏覽:854
java線程買票案例 瀏覽:672
java架構培訓 瀏覽:857
price是什麼文件 瀏覽:258
手機游戲編程哪個好學 瀏覽:259
qq郵箱怎麼發語音文件 瀏覽:494
php刪除資料庫記錄 瀏覽:905
文件校驗工具有哪些 瀏覽:158
蘋果app被亂扣費怎麼投訴 瀏覽:269
數據通信工程師要負責多少設備 瀏覽:904
excel有沒有多個文件數據鏈接 瀏覽:842

友情鏈接