基于fl2440开发板Hello World 模块

许多编程书籍都会以一个 “hello world” 示例程序来说明最简单的程序。

“hello world”  模块:

 hello.c ______________________________________________________________________________________________________________________________________________________________
  1 /*********************************************************************************
  2  *      Copyright:  (C) 2016 Yuzhonghan<754270866@qq.com>
  3  *                  All rights reserved.
  4  *
  5  *       Filename:  hello.c
  6  *    Description:  This file 
  7  *                 
  8  *        Version:  1.0.0(05/13/2016)
  9  *         Author:  Yuzhonghan <754270866@qq.com>
 10  *      ChangeLog:  1, Release initial version on "05/13/2016 11:48:13 PM"
 11  *                 
 12  ********************************************************************************/
 13 
 14 #include<linux/init.h>
 15 #include<linux/module.h>
 16 MODULE_LICENSE("Dual BSD/GPL");
 17 
 18 static int hello_init(void)
 19 {
 20     printk(KERN_ALERT"hello world\n");
 21     return 0;
 22 }
 23 
 24 
 25 
 26 static void hello_exit(void)
 27 {
 28     printk(KERN_ALERT"GOOD BYE\n");
 29 }
 30 
 31 
 32 module_init(hello_init);
 33 module_exit(hello_exit);
 34 
~

这个模块定义了两个函数,其中一个在模块被装载打到内核是调用(hello——init),而另一个则是在模块被移除时调用(hello_exit)。

特殊宏(MODULE_LICENSE)用来告诉内核,该模块采取自由许可证,如果没有这样的声明,内核在装载该模块时会产生抱怨。


hello world 驱动的Makefile编写

1.适用于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 就会加载make完成的驱动模块,dmesg 命令能帮助我们查看hello world的结果,使用rmmod命令会移除hello.ko,在使用 dmesg就会显示Good Bye。


2.适用于fl2440开发板:

 Makefile                                                                                        
  1 CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc    //应为要把模块给开发板用所以我们要把交叉编译器作指定我们的编译器
  2 KDIR?=/home/Ciel/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和上一步一样,然后得到hello.ko文件,tftp开发板上,使用命令insmod 就可以看到结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值