Linux 下的驱动程序与内核的编译

编译环境的搭建


1.安装虚拟机,新建一个虚拟机,并在上面安装Ubuntu 8.04(内核版本号2.6.24)。
2.安装必要的开发工具
(1)系统升级
    #sudo apt-get update
(2) 安装gcc
    #sudo apt-get install gcc   //安装成功,版本号4.2.3。
(3)用相似的命令安装make、vim、gdb。
(4)以上安装过程也可用sudo apt-get install build-essential 来安装编译 必须的工具。
3.由于linux内核从2.6.24版本起新增了蓝牙设备驱动程序,因此编译之前不必对系统安装bluez补丁。
4.ubuntu在第一步安装完内核版本号为2.6.24的系统后,已经有一个可用的2.6.24内核,在/lib/modules下有一个build目录,它是一个指向“内核代码树”的一个符号链接,编译驱动程序时要用到这个目录。
编译和加载SCO驱动模块
下载bluez sco驱动源代码:
www.krugle.org http://sourceforge.net/search ?
将源代码拷贝至:/home/tuelee目录下,并新建一空白文件,命名为Makefile.
编辑Makefile内容:
    obj-m := hello.o
KERNELDIR := /lib/modules/2.6.24-17-generic/build
PWD:=/home/tuelee
all:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm *.ko *.mod* *.symvers
保存、退出。
#cd /home/tuelee
执行make命令:
#make
开始编译驱动模块。
查看编译后新生成的文件:Module.symvers, sco.o, sco.ko, sco.mod.c, sco.mod.o
手动加载编译后的模块文件
   # insmod sco.ko
   查看加载后模块的信息:
   # lsmod sco
      Module      Size      Useby
      Sco       14720        0
       …         …         …
  (3、4步可以用命令代替:
       $ echo “obj-m:=sco.o” > Makefile
       $ make –C /lib/modules/2.6.24-17-generic/build M=/home/tuelee modules)
 
 
 
   以上是利用“内核代码树”来对驱动模块进行编译后将模块手动加载进内核,还有一种通过向内核中添加驱动源代码并修改配置文件和Makefile后对内核进行编译的方式来加载模块。
另一种向内核加载模块的方法
这种方法多用在嵌入式开发中。
内核源代码linux-source-2.6.24,拷贝至/usr/src下
安装libncurses5-dev库  Apt-get install libncurses5-dev     Apt-get install bin86
make menuconfig 配置内核   在图形化界面中把sco选项选上
make bzImage   编译内核
make install   安装内核
make modules   编译模块
make modules_install  安装模块
制作内核映象文件:/usr/sbin/mkinitrd –o /boot/initrd.img-2.6.24.3 2.6.24.3
向/boot/grub/menu.lst中添加:
  Title   Ubuntu,kernel 2.6.24.3
  Root     (hd0,4)
  Kernel   /vmlinuz-2.6.24.3  root=……
  Initrd    initrd.img-2.6.24.3
  Savedefault
  Boot
 
  Title   Ubuntu,kernel 2.6.24.3 (recovery mode)
  Root     (hd0,4)
  Kernel   /vmlinuz-2.6.24.3  root=……
  Initrd    initrd.img-2.6.24.3
  Boot
重启系统加载新内核.
 
参考:
  <<Linux Device Driver>> 第三版
  <<模块的动态加载和内核配置>>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值