Chinaunix首页 | 论坛 | 博客
  • 博客访问: 919558
  • 博文数量: 96
  • 博客积分: 10071
  • 博客等级: 上将
  • 技术积分: 1118
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-20 17:54
文章分类

全部博文(96)

文章存档

2011年(3)

2010年(3)

2009年(29)

2008年(54)

2007年(7)

分类: LINUX

2007-10-10 08:50:26

      utu2440-之helloworld驱动
2007-10-09 20:25
creator

1.昨天搞了一晚上,愣是没有编译过去linux2.6.13的驱动,怎么看了几本书都没有特别详细的介绍。
今天去扬创论坛上也看到有人也问这个问题,版主很热心,详细的解答了。今天测试一下,确实ok。
于是把它记录下来。让后来者也可以轻松开发。
现在假定我的2440的linux程序路径在/home/s3c2440/linux-2.6.13_for_s3c2440/
在这个目录下的drivers/char/下面建立hello文件夹。在文件夹下建立hello.c
编写代码:
#include
#include
#include
static int hello_init(void)
{
 printk(KERN_ERR "Hello creator!\n");
 return 0;
}
static void hello_exit(void)
{
    printk(KERN_ERR "Modules exit!\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("CREATOR");
同时再建立Makefile
编写代码:
obj-m := hello.o
KERNEL_DIR=/home/work/utu-linux_for_2440_V1.5.1/
PWD=$(shell pwd)
all:
 make -C $(KERNEL_DIR) M=/home$(PWD) modules
编译之后在hello下面就有hello.ko,可以用命令insmod
注:如果编译不通过的话,就把KERNEL_DIR和PWD替换掉,不用变量的形式。
这个是我后来写的,没有编译测试。但是不用变量的形式我已经测试。
阅读(3275) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-06-29 14:30:39

说错了,应该是前者吧,那后者是什么?

chinaunix网友2009-06-29 14:28:09

请问你的/home/work/utu-linux_for_2440_V1.5.1/和/home/s3c2440/linux-2.6.13_for_s3c2440/分别是什么?那个是内核源代码?后者吧,那前者是什么?

chinaunix网友2008-01-04 09:22:41

make的 -C -M参数分别表示内核树路径和模块源程序的路径。 你进入/lib/modules/2.6.15-1.2054_FC5smp/目录 用ll命令打开看看,其中有两个文件(其中一个是build)是符号链接的,他可能连接到/usr/src/kernels/linux...等目录,你可以把源代码考到这个目录下面,或者直接改模块代码的Makefile里面的 KERNELDIR变量就可以。