fl2440开发板hello world模块驱动编写


hello world

           许多的编程都是从hello world开始编写,虽然简单但是意义重大!!!
hello.c                                                                                                                                                               
  1 /*********************************************************************************
  2  *      Copyright:  (C) 2015 guanlei
  3  *                  All rights reserved.
  4  *
  5  *       Filename:  hellow.c
  6  *    Description:  This file hellw.c
  7  *                 
  8  *        Version:  1.0.0(2015年10月22日)
  9  *         Author:  guanlei <995318056@qq.com>
 10  *      ChangeLog:  1, Release initial version on "2015年10月22日 19时08分08秒"
 11  *                 
 12  ********************************************************************************/
 13 
 14 #include<linux/init.h>      //所有驱动编写都要包含的头文件
 15 #include<linux/module.h>
 16 
 17 
 18 static int hello_init(void)      
 19 {
 20     printk(KERN_ALERT"hello world\n");   //KERN_ALERT是在内核中定义的规定的打印级别
 21     return 0;
 22 }
 23 
 24 
 25 static int hello_exit(void)
 26 {
 27 
 28     printk(KERN_ALERT"GOOD BEY\n");
 29 
 30 }
 31 
 32 module_init(hello_init);  // module_init module_exit 内核中合数的宏 insmod 时会调用的module_init() 中的函数
 33 module_exit(hello_exit);
 34 
~                                                                                                                                                                      
~                             
 

 hello world驱动的Makefile编写

适用于自己的linux操作系统

  2 obj-m=hello.o      //驱动模块从目标文件中构造
  3 modules:
  4     make -C /lib/modules/`uname -r`/build/ M=`pwd` modules       //  -C 指定内核源代码的目录  uname -r获得自己内核的版本信息 M指定编译生成的文件放在哪个路径中
  5     make clean
  6 
  7 clean:
  8     rm -f *.ko.* *.o *.mod.c *.order *.symvers 
~                                                                                                                                                                      
~                                               
make 成功后,会生成一个hello.ko的文件,insmod hello.ko (2.6版本的内核要加.ko     3.0版本的内核不用加.ko)就会在加载我们的驱动模块,若果想要看结果,敲dmesg再组后一行就会有hello world ,移除hello.ko的话要用rmmod命令,就会调用module_exit()里边调用的函数,dmesg查看信息的就会在最后一行出现GOOD BEY



接下来的makefile是适配fl2440开发板的
 Makefile                                                                                        
  1 CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc    //应为要把模块给开发板用所以我们要把交叉编译器作指定我们的编译器
  2 KDIR?=/home/guanlei/fl2440/kernel/linux-3.0          //该目录是告诉Makefile 从哪找到我们的内核
  3 obj-m:=hello.o
  4 
  5 default:                                                                                           
  6     $(MAKE) -C $(KDIR) M=`pwd` modules
  7     make clean
  8 
  9 clean:
 10     rm -f *.ko.* *.o *mod.c *.order *.symvers
~                                                                                                
                                                                                               
make之后和上面的步骤一样,唯一的区别就是在加载驱动模块和移除驱动模块时 insmod 和rmmod不要.ko                                                 
        感兴趣的读者若果想要知道insmod的工作,它就依赖于定义在kernel/module.c中的系统调用   
 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值