当前位置: 技术问答>linux和unix
如何添加驱动程序到系统
来源: 互联网 发布时间:2016-09-20
本文导语: 问一下 如果 自己编写了 一个helloworld的 小驱动程序,想加到正在使用的系统中试一下。 这样的话 需要重新编译内核吗? 我在系统 /usr/src/kernels 中的内核文件里, 所有的.c文件已经没有了。 如果我...
问一下 如果 自己编写了 一个helloworld的 小驱动程序,想加到正在使用的系统中试一下。 这样的话 需要重新编译内核吗?
我在系统 /usr/src/kernels 中的内核文件里, 所有的.c文件已经没有了。 如果我想试下这个驱动 是否要重新下载一个内核源码 到系统中呢 ?
请大侠们 给我讲一下 增加驱动到系统的流程 谢谢
我在系统 /usr/src/kernels 中的内核文件里, 所有的.c文件已经没有了。 如果我想试下这个驱动 是否要重新下载一个内核源码 到系统中呢 ?
请大侠们 给我讲一下 增加驱动到系统的流程 谢谢
|
为你的驱动写Makefile,
添加例如obj-$(CONFIG__HELLO_WORLD) += hello_world.o
make modules编译出.ko文件,
insmod helloworld.ko //装载,可为相对/绝对路径
rmmod helloworld //卸载,注意不带.ko
添加例如obj-$(CONFIG__HELLO_WORLD) += hello_world.o
make modules编译出.ko文件,
insmod helloworld.ko //装载,可为相对/绝对路径
rmmod helloworld //卸载,注意不带.ko
|
驱动的经典教材《Linux设备驱动程序》(Linux Device Drivers)
楼主自己找来看看吧,有很详细的步骤。
加载模块不需要重新编译内核,也不需要内核源代码。
楼主自己找来看看吧,有很详细的步骤。
加载模块不需要重新编译内核,也不需要内核源代码。
|
不建议编进内核。还是编成.ko模块,然后再用insmod命令加载该模块吧,这样如果该驱动有问题的话,还可以手动把它给卸载掉,而不至于影响内核。
|
都知道如何编写helloworld了,却不知道如何将它编译成模块,说明你的准备工作很没到位,看书没看仔细就匆忙上位了。
|
这是我原来看的别人的些的文章 你可以照着写写 不知道对你有用不
C/C++ code1.在drivers/char/目录下建立一个first_driver_hello.c文件
文件的内容如下/*************************************
NAME:first_driver_hello.c
COPYRIGHT:328977974@qq.com
**************************************/
#include
#include
MODULE_LICENSE("GPL");staticint hello_init(void)
{
printk("This is the first char driver!n");return0;
}staticvoid hello_exit(void)
{
printk("GoodBye,good luck!n");
}
module_init(hello_init);
module_exit(hello_exit);2.在内核源码处添加对first_driver_hello.c驱动的支持
修改drivers/char 目录下的Kconfig文件,添加如下内容
config FIRST_DRIVER_HELLO
tristate"FIRST DRIVER HELLO"
depends on ARCH_S3C2440
help
BY328977974@qq.com3.修改drivers/char 目录下的Makefile文件
添加如下内容
obj-$(CONFIG_FIRST_DRIVER_HELLO)+= first_drivers_hello.o4.进入内核根目录下配置内核,输入make menuconfig
Device Drivers->
Character devices-> FIRST DRIVERS HELLO
保存后使用命令 make SUBDIR=drivers/char/ modules5.在drivers/char/ 目录下面会生成一个first_drivers_hello.ko的文件
将它复制到开发板下,用命令insmod first_drivers_hello.ko挂载驱动
就可以看到结果。
简单的说就是写好驱动,编译,挂载
C/C++ code1.在drivers/char/目录下建立一个first_driver_hello.c文件
文件的内容如下/*************************************
NAME:first_driver_hello.c
COPYRIGHT:328977974@qq.com
**************************************/
#include
#include
MODULE_LICENSE("GPL");staticint hello_init(void)
{
printk("This is the first char driver!n");return0;
}staticvoid hello_exit(void)
{
printk("GoodBye,good luck!n");
}
module_init(hello_init);
module_exit(hello_exit);2.在内核源码处添加对first_driver_hello.c驱动的支持
修改drivers/char 目录下的Kconfig文件,添加如下内容
config FIRST_DRIVER_HELLO
tristate"FIRST DRIVER HELLO"
depends on ARCH_S3C2440
help
BY328977974@qq.com3.修改drivers/char 目录下的Makefile文件
添加如下内容
obj-$(CONFIG_FIRST_DRIVER_HELLO)+= first_drivers_hello.o4.进入内核根目录下配置内核,输入make menuconfig
Device Drivers->
Character devices-> FIRST DRIVERS HELLO
保存后使用命令 make SUBDIR=drivers/char/ modules5.在drivers/char/ 目录下面会生成一个first_drivers_hello.ko的文件
将它复制到开发板下,用命令insmod first_drivers_hello.ko挂载驱动
就可以看到结果。
简单的说就是写好驱动,编译,挂载
|
8楼的 make SUBDIR=drivers/char/ modules5
这个modules5 在这里是什么意识啊 起什么作用啊
这个modules5 在这里是什么意识啊 起什么作用啊
|
敲错了吧。
|
做成内核模块,用insmod your_kernel_module.ko 加载到linux里。