techtitan的专栏

嵌入式开发

Hello World驱动开发过程详解

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命令,此命令能够清楚缓冲区的内容

  






~                                  

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/techtitan/article/details/6161817
文章标签: module makefile ubuntu
个人分类: linux 驱动
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Hello World驱动开发过程详解

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭