tiny6410上第一个hello module驱动程序

买了tiny6410的开发板很久了,一直没有开始弄,现在想学了又没有了时间,只有利用周末的时间来学习,也打算开始用博客记录自己的学习过程,要不然就都忘了。这个是最简单的hello的驱动程序,自己按照友善之臂的例子一点点来的,写一点遇到的问题。

1.首先在驱动目录下建立模块的源文件,这里命名为 my_mini6410_hello_module.c

假设linux目录为linux-2.6.38 则文件存放在linux-2.6.38/drivers/char/

按照例子中的程序照着写了个代码 分别是 模块的加载和卸载。

/* file begin my_mini6410_hello_module.c */

static int __init my_hello_module_init(void) /* init 前面有两个下划线 装载时调用的函数*/

{

printk("hello ! \n");

return 0;

}

static void __exit my_hello_module_cleanup(void) /* 卸载时调用的函数 */

{

printk("bye !\n");

}

module_init(my_hello_module_init); /* 这里应该是挂接函数 */

module_exit(my_hello_module_cleanup);

MODULE_LICENSE("GPL");

/* file end */

2 将新的module加入编译的内核代码树,

在char目录下打开Kconfig配置文件 vi Kconfig

看到有类似 config XXXX

XXXX 的地方按照同样的方式为自己的module添加一个配置。

代码如下 :

config MY_MINI6410_HELLO_MODULE /* 这个名字会在下面的makefile中使用到,和具体的代码文件关联 */

tristate “my mini6410 hello module” /* 这个名字是在使用 make menuconfig配置时显示的模块的名字 */

depends on CPU_S3C6410

help

this is my hello module

保存退出,在linux-2.6.38 目录下 使用make menuconfig命令打开图形菜单,在Device Drivers -> Character Drivers菜单中看到刚刚添加的项了,

使用空格键切换到M模式,选择编译为模块方式, “*”是编译为内核中。确定保存。

3.修改makefile文件

在上面修改后添加了编译选项,但是还需要修改makefile文件,使得真正的将my_mini6410_hello_module.c这个文件编译进去。使得内核的编译选项和真正的源文件真正联系起来。

在char目录下打开Makefile文件 : vi Makefile

按照同样的格式 添加:

obj -$(CONFIG_MY_MINI6410_HELLO_MODULE) += my_mini6410_hello_module.o /* 这里可以看出括号里的大写部分是kconfig中的配置项名,=后面则为文件名 相同的.o文件名*/

4 。执行make ,在执行make modules。

这时my_mini6410_hello_module.ko就应该出现在 char目录下了。通过ftp下载到开发板上,放在开发板 /lib/modules/ 'uname -r' / 下。

uname -r 根据单板使用的内核不同而不同,必须使用这个目录,没有的话新建这样的目录。我的是2.6.38-FriendlyARM

5 按照说明书上的指示,我直接使用下面命令

modprobe my_mini6410_hello_module 并没有出现意料中的打新hello,呵呵 而是出现了错误信息: modprobe: module './my_mini6410_hello_module' not found,

通过在网上搜索知道在编译并准备好一个内核模块后,使用modprobe装载之前需要更新依赖关系:

depmod

这个命令会重新生成 modules.dep 这个依赖文件

这时再运行 modprobe my_mini6410_hello_module 即出现了期待的打印信息。

使用 rmmod my_mini6410_hello_module 出现了卸载模块的打印信息。

至此我的第一个hello的驱动就这样结束了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值