❶ 如何将linux驱动程序添加到内核中
工具/原料
Ubuntu12.04操作系统和测试驱动程序(beep_arv.c)
方法/步骤
在介绍2种方法前,必须知道的知识点:
1.关联文件Makefile:
Makefile:分布在Linux内核源代码中的Makefile用于定义Linux内核的编译规则;
2.管理文件Kconfig:
给用户提供配置选择的功能;
配置工具:
1)包括配置命令解析器;
2)配置用户界面;menuconfig || xconfig;
3)通过脚本语言编写的;
3.
---tristate 代表三种状态:1.[ ]不选择,2.[*]选择直接编译进内核,加载驱动到内核里,3.[m]动态加载驱动;
---bool 代表两种状态,1.[ ]不选择,2.[*]选择;
---"Mini2440 mole sample"这个是在make menuconfig时刷出的提示字符;
---depends on MACH_MINI2440 这个配置选项出现在make menuconfig菜单栏下,在内核配置中必须选中、MACH_MINI2440;
---default m if MACH_MINI2440 这个如果选中了MACH_MINI2440,默认是手
动加载这个驱动;
help:提示帮助信息;
在了解了基本的知识点,便开始进行第一种添加驱动的方法,本次交流是以beep_arv.c蜂鸣驱动程序为基础的
方法一:
1)进入内核的驱动目录;
#cp beep_arv.c /XXX/.../linux-XXXl/drivers/char
2)进入Kconfig添加驱动信息;
#cd /XXX/linux-XXX/.../drivers/char
#vim Kconfig
添加基本信息:
config BEEP_MINI2440
tristate "---HAH--- BEEP"
default
help
this is test makefile!
3)进入Makefile添加驱动编译信息;
#vim Makefile
添加基本信息:
obj-$(CONFIG-BEEP_MINI2440) +=beep_drv.o
方法一结果:
在--Character devices下就能看到配置信息了;
方法二:
1)进入驱动目录,创建BEED目录;
#cd /XXX/.../linux-XXX/drivers/char
#mkdir beep
2)将beep_arv.c驱动程序复制到新建目录下;
#cp beep_arv.c /XXX/.../linux-XXXl/drivers/char/beep
3)创建Makefile和Kconfig文件
#cd char/beep
#mkdir Makefile Kconfig
#chmod 755 Makefile
#chmod 755 Kconfig
4)进入Kconfig添加驱动信息;
#vim Kconfig
添加基本信息:
config BEEP_MINI2440
tristate "---HAH--- BEEP"
default
help
this is test makefile!
5)进入Makefile添加驱动编译信息;
#vim Makefile
添加基本信息:
obj-$(CONFIG_BEEP_MINI2440) +=beep_drv.o
6)并且要到上一级目录的Makefile和Kconfig添加驱动信息;
#cd ../
#vim Makefile
#vim Kconfig
❷ 三星如何在 Linux 操作系统下安装驱动程序
如果您目前采用 Linux 操作系统,可按照下列安装步骤操作。 [方法或答案] Unified Linux Driver 安装指南 确保已经打印机连接到计算机。 打开计算机及打印机。 当管理员登录窗口出现时,在登录字段中键入 root 并输入系统密码。 下载驱动程序并进行解压缩 [root@localhost root]#tar xzf [Downloaded File Name(XXXX.tar.gz)] 驱动程序将被解压缩为当前路径下的“cdroot”文件夹。 执行安装程序。 在Ubuntu 操作系统下 下载驱动程序并进行解压缩。 打开“Root 终端” 执行安装程序。 $ sudo cdroot/autorun安装后,PPD 路径会被重新设置。 $ sudo ln -s /usr/share/cups/model/samsung /usr/share/ppd/custom/samsung执行配置程序,并通过“添加打印机”将打印机的型号名称添加进来。 Smart Panel 安装指南 当管理员登录窗口出现时,在登录字段中键入 root 并输入系统密码。 下载Smart Panel 并进行解压缩。 [root@localhost root]#tar xzf [Downloaded File Name(XXXX.tar.gz)] Smart Panel 将被解压缩为当前路径下的“cdroot”文件夹。 执行安装程序。 [root@localhost root]#./cdroot/Linux/smartpanel/install.sh Smart Panel 将自动进行安装,并在终端上显示成功信息。 Smart Panel 将在安装完成后自动启动 Printer Setting Utility 安装指南 当管理员登录窗口出现时,在登录字段中键入 root 并输入系统密码。 下载Printer Setting Utility 并进行解压缩。 [root@localhost root]#tar xzf [Downloaded File Name(XXXX.tar.gz)] Printer Setting Utility 将被解压缩为当前路径下的“cdroot”文件夹。 执行安装程序。
❸ 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中增加自己的设备驱动程序
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下添加自己的驱动
一.驱动编译到内核
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 安装usb无线网卡驱动怎么安装
linux 安装usb无线网卡驱动的具体步骤如下:
1、将USB无线网卡插入电脑,双击打开“计算机”,双击光驱;
2、双击之后弹出一个页面,选择“安装驱动程序”,选择购买型号网卡的驱动,先选定,再点安装;
3、在无线上网卡官网下载相对应型号无线网卡进行安装驱动,下载完成后进行解压;
4、打开解压出来的文件找到“Setup.exe”,双击完成安装后,重启电脑即可完成。
5、温馨提醒:USB无线网卡要连接到笔记本或者台式机上 ;安装驱动完成后建议重启一下电脑。
❼ linux如何加载驱动
linux操作系统下,加载驱动的方式有二:
静态加载驱动;
动态加载驱动;
作为前者,静态加载驱动是通过将驱动程序编译到内核而进行的一系列配置操作;对于后者而言则是向内核注册设备信息,从而在kernel启动后,再通过insmod指令,关联好主、次设备号,从而以模块的形式进行加载的;
二者各有优点,所以应用的场合也是不一样的;
❽ 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驱动程序添加到内核中 / 蓝讯
1.进入你的内核源码文档,创建一个DoneLin_Driver文件夹来存放你的驱动,于是文件夹路径:drivers/DoneLin_Driver/:
2.复制你的范例驱动到刚刚建立的DoneLin_Driver文件夹中,我的范例名字叫global_mem_two.c:
3.在DoneLin_Driver文件夹中建立两个新文本文件:Kconfig 和 Makefile
4.修改DoneLin_Driver文件夹下的Kconfig文件,输入以下内容:
menu "DoneLin-driver "
comment "global_mem_two-driver "
config GLOBAL_MEM_TWO tristate "global_mem_two DriTst" help this is global mem 2 test programming
endmenu
5.接着修改DoneLin_Driver的另一个文件Makefile,输入以下内容:
obj-$(CONFIG_GLOBAL_MEM_TWO) += global_mem_two.o
6.修改上一层目录(Driver目录)中的Kconfig文件,声明自己的源代码:在"menu "Device drivers""下面加入如下内容:
source "drivers/DoneLin_Driver/Kconfig"##...add my tst driver mole
7.修改arch/arm/Kconfig
同样,跟在driver/Kconfig一样,在"menu device drivers"下面加入同样的语句:
source "drivers/DoneLin_Driver/Kconfig"
就是说:在arch/arm/Kconfig menu "Device Drivers" endmenu之间添加source "drivers/DoneLin_Driver/Kconfig"
在drivers/Kconfig menu "Device Drivers" endmenu之间添加source "drivers/hello/Kconfig"(不知为什么arch/arm/Kconfig中竟然含有Drivers里Kconfig内容的一个复本,实验证明只对drivers/Kconfig中修改内容无效。)
8.修改Drivers目录下的Makefile,在如图位置,加入:
obj-$(CONFIG_GLOBAL_MEM_TWO) += DoneLin_Driver/#ADD FOR TEST add_for_test add for test测试的驱动
8.都修改好,保存好之后,回到linux内核根目录,make menuconfig,奇迹出现了,我自己的linux驱动程序出现在内核的device drivers选项里面了:
选择global_mem_tow_DriTst为m,表示编译成模块,编译成ko文件
然后,保存退出,make, make zImage, make moles即可生成新的内核和新的moles,
完成了,