关闭

Hello World驱动开发过程详解

647人阅读 评论(0) 收藏 举报

hello.c 

/*======================================================================
    A simple kernel module: "hello world"
        
    The initial developer of the original code is Baohua Song
    <author@linuxdriver.cn>. All Rights Reserved.
======================================================================*/
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
  printk(KERN_INFO " Hello World enter/n");
  return 0;
}

static void hello_exit(void)
{
  printk(KERN_INFO " Hello World exit/n ");
}

module_init(hello_init);
module_exit(hello_exit);

MODULE_AUTHOR("Song Baohua");
MODULE_DESCRIPTION("A simple Hello World Module");
MODULE_ALIAS("a simplest module");



1. 编写Makefile

 obj-m := hello.o

 

2. 切换到root用户(若不是root用户则执行不了下面的Makefile), 执行如下命令:make -C /usr/src/linux-headers-2.6.32-21-generic M=$(pwd) modules , 生成hello.ko

      Note:我所使用的系统为Ubuntu系统, 在/usr/src目录下有 linux-headers-2.6.32-21-generic 和 linux-headers-2.6.32-21 两个目录,make -C 指定驱动头文件目录时必须选择 linux-headers-2.6.32-21-generic,否则会出现编译通不过的现象

 

3. insmod hello.ko 加载hello驱动 ,rmmod hello  卸载hello驱动, modinfo可获得模块的信息(模块的作者,模块的说明,模块所支持的参数)   

     

    在执行完insmod hello.ko 后会打印 Hello World 信息,其前提时执行完insmod hello.ko命令后执行dmesg命令,此命令打印系统的开机信息,内容比较多,可以执行 dmesg -c命令,此命令能够清楚缓冲区的内容

  






~                                  

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:151098次
    • 积分:2977
    • 等级:
    • 排名:第12288名
    • 原创:167篇
    • 转载:14篇
    • 译文:0篇
    • 评论:2条
    最新评论
    经济