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

来源:互联网 发布:c语言 戏说关键字 ppt 编辑:程序博客网 时间:2024/05/22 05:15

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中的系统调用  






0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中奖彩票被洗了怎么办 牙龈下面长米粒肉疙瘩怎么办 书画印章盖反了怎么办 金龙鱼一个月不吃东西怎么办 罗汉鱼头撞扁了怎么办 房顶开槽埋线白色不一样怎么办 顶上灯挪位置线怎么办 马蜂窝弄掉又来怎么办 蜂窝弄掉又有怎么办 2018年小龙虾底板脏怎么办 一本分数线擦边过怎么办 玩具塑料球扁了怎么办 胶皮与海绵开了怎么办 安卓不支持flash了怎么办 看视频要加载flash怎么办 下水道管子铁皮破了怎么办 炸金花牌一样大怎么办 玩棋牌游戏输了怎么办 苹果7插耳机外放怎么办 出国种菠菜抓了怎么办 在菲做菠菜抓到怎么办 3串1中两个怎么办 微博账号封停怎么办 阴阳师账号被永久封停怎么办 寒刃2账号被禁用怎么办 输了好多钱我该怎么办 亲朋打鱼别处在玩怎么办 做糯米蛋的蛋清怎么办 水田地没耙地平怎么办 宝宝拉鸡蛋花样大便怎么办 电子琴伴奏区无旋律音怎么办 手机触摸屏摔坏了怎么办 手机充着电玩游戏卡怎么办? 4个月宝宝拉肚子怎么办 6个月宝宝上火怎么办 1月婴儿大便干燥怎么办 椰子鞋350线开了怎么办 打完篮球小腿肌肉酸痛怎么办 衣服穿少了感冒怎么办 侧手翻翻不过去怎么办 生完孩子胯宽了怎么办