交叉编译驱动-helloworld

1:程序代码:
#include <linux/module.h>
#include <linux/init.h>
static int hello_init(void)//被装载时调用
{
        printk(KERN_ALERT "Hello, world/n");
        //KERN_ALERT定义了消息的优先级,只是个字符串,如<1>,防止在某些情况下内核不输出该消息
        return 0;
}
static void hello_exit(void)//被移除时调用
{
        printk(KERN_ALERT "Goodbye, crule world/n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("Dual BSD/GPL");//用来告诉模块采用自由许可,否则内核在装载时会产生抱怨
MODULE_AUTHOR("Jinglei Zhang");//作者
2、Makefile:
#如果已定义KERNELRELEASE,则说明是从内核构造系统调用的,
#因此可利用其内建语句
ifneq ($(KERNELRELEASE),)
obj-m := helloworld.o
#否则,是直接从命令行调用的,这时要调用内核构造系统。
else
CC = bfin-uclinux-gcc
KERNELDIR ?= /home/franky/uClinux-dist-R06R2-RC2-BF537/linux-2.6.x
PWD              := $(shell pwd)
default:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
clean:
        rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.symvers *~
3、下载到板子上,插入、移除该模块:
root:~> insmod helloworld.ko
Hello, world
root:~> lsmod
Module                  Size  Used by    Tainted: P
helloworld 1096 0 - Live 0x03950800
wcfxs 25492 0 - Live 0x00408000
zaptel 179708 1 wcfxs, Live 0x03a40000
root:~> rmmod helloworld
root:~> lsmod
Module                  Size  Used by    Tainted: P
wcfxs 25492 0 - Live 0x00408000
zaptel 179708 1 wcfxs, Live 0x03a40000
显示该模块确实成功被插入和移除。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值