Chinaunix首页 | 论坛 | 博客
  • 博客访问: 451186
  • 博文数量: 40
  • 博客积分: 1410
  • 博客等级: 军士长
  • 技术积分: 1396
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-22 19:26
个人简介

嵌入式系统工程师,从事视频、图像、网络、虚拟化等方面的底层软件开发与优化。

文章存档

2014年(4)

2013年(10)

2012年(14)

2011年(12)

分类: LINUX

2011-04-07 19:27:14

一.PC机上Ubuntu9.10系统下
1. 驱动程序源码及Makefile如下:
  1. #------源程序------#
  2. #include <linux/module.h>
  3. #include <linux/init.h>

  4. static int __init hello_init() //“__init”使hello_init()函数放到初始化代码段里
  5. {
  6.         printk("Hello, driver!\n");

  7.         return 0;
  8. }

  9. static int __exit hello_exit()
  10. {
  11.         printk("Goodbye, driver!\n");

  12.         return 0;
  13. }

  14. module_init(hello_init);
  15. module_exit(hello_exit);

#------Makefile------#
KVERS = $(shell uname -r)

# Kernel modules
obj-m += hello.o

# Specify flags for the module compilation.
#EXTRA_CFLAGS=-g -O0

build: kernel_modules

kernel_modules:
        make -C /lib/modules/$(KVERS)/build M=$(CURDIR) modules

clean:
        make -C /lib/modules/$(KVERS)/build M=$(CURDIR) clean
2.驱动程序编译、安装及结果显示:
a.在第一个终端里  root@book-desktop:~# make    
//生成hello.ko
b.在第二个终端里  root@book-desktop:~# tail -f /var/log/messages 
//查看日志文件内容,-f选项使之不断刷新显示
c.在第一个终端里  root@book-desktop:~# insmod ./hello.ko
//安装驱动
  在第二个终端里自动输出:   
  1. Apr 7 19:26:06 book-desktop kernel: [ 9345.546564] Hello, driver!
d.在第一个终端里  root@book-desktop:~# rmmod hello
//卸载驱动
     在第二个终端里自动输出:
  1.  Apr  7 19:26:11 book-desktop kernel: [ 9349.953772] Goodbye, driver!
二、Nano2440开发板下(注:为保持简洁性,终端中前端都以 root@book-desktop:~# 表示)
1.把源程序拷贝到内核相应目录中
  root@book-desktop:~# cp hello.c /work/QQ2440/linux/jason_linux/kernel-2.6.13/drivers/char/
2.打开内核目录
  root@book-desktop:~# cd /work/QQ2440/linux/jason_linux/kernel-2.6.13
3.打开字符设备驱动所在目录下的Kconfig (Kconfig用于配置菜单)
  root@book-desktop:~# vim drivers/char/Kconfig
4.修改Kconfig。添加如下代码。
5. 配置驱动
   root@book-desktop:~# make menuconfig
   在出现的主菜单中,选择:Load an Alternate Configuration File
                   输入:config_n35     //选择需要的配置文件
   回到主菜单,如下选:
   Device Drivers  ---> 
    Character devices --->
[ ] hello_driver (NEW)
 按“Y”键,选择该驱动,如下图所示
   保存配置,退出。
6.查看配置结果
  root@book-desktop:~# vim .config
  在vim中输入:“/HELLO_DRIVER”,找到配置项,如下图。
8.修改驱动程序所在目录的Makefile
  root@book-desktop:~# vim drivers/char/Makefile
  在Makefile里添加如下代码:
  
  保存退出。
9.编译内核
   root@book-desktop:~# make zImage
10.arch/arm/boot 目录下生成linux 内核映象文件:zImage。
   root@book-desktop:~# cp arch/arm/boot/zImage /mnt/hgfs/Ubuntu_XP_share/
   下载到开发板。
11.打开Windows下超级终端,在菜单栏里选“传送”,下拉菜单里选“捕获文字”。
   复位开发板,系统启动后,在捕获文字里,“停止”。
           用Source Insight打开存在记事本里的开机信息。
           Ctrl + H。
   输入“Hello, driver!”也就是在hello_init()函数里的输出字符串。
   如图所示,可以看到初始化函数里的输出。
阅读(7096) | 评论(0) | 转发(5) |
给主人留下些什么吧!~~