网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> ADI DSP >> Blackfin >> 文章正文
  动态模块加载的例子         ★★★ 【字体:
动态模块加载的例子
作者:61IC录入    文章来源:本站原创    点击数:    更新时间:2007-1-1    
首先在/root/sample_module目录(可任何目录,后文编译时指定即可)下创建一个c文档,代码如下:
sample_module.c
------------------------------------------------------------------

#include <linux/config.h>
#include <linux/device.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/interrupt.h>    
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/sched.h>

#define    SAMPLE_MAJOR 253         

MODULE_LICENSE("GPL");
MODULE_AUTHOR("hhzhou - ShenOu Communication");
MODULE_DESCRIPTION("sample");

static int sample_open(struct inode *inode, struct file *file)
{
    return 0;
};
static int sample_release(struct inode *inode, struct file *file)
{
    return 0;
};
static ssize_t sample_read(struct file *file, char *buf, size_t size, loff_t *loff)
{
    return 0;
};
static ssize_t sample_write(struct file *file, const char *buf, size_t size, loff_t *loff)
{
    return 0;
};
int sample_ioctl(struct inode *inode,    struct file *file,    unsigned int ioctl_num,    unsigned long ioctl_param)
{
    return 0;
};

static struct file_operations sample_fops = {
    .read             = sample_read,
    .write             = sample_write,
    .ioctl             = sample_ioctl,
    .open             = sample_open,
    .release         = sample_release,
};

static int __init sample_module_init(void)
{
    printk("init sample module device\n");
    register_chrdev(SAMPLE_MAJOR, "sample", &sample_fops);
    return 0;
}

static void __exit sample_module_cleanup(void)
{
    printk("cleanup sample module device\n");
}

module_init(sample_module_init);
module_exit(sample_module_cleanup);
--------------------------------------------------------------------


第二步,建Makefile文档
--------------------------------------------------------------------
obj-m += sample_module.o
--------------------------------------------------------------------
如果是多文件的话,使用如下:
--------------------------------------------------------------------
obj-m := sample_module.o
module-objs := file1.o file2.o
--------------------------------------------------------------------

第三步,确定内核支持insmod, rmmod, lsmod
如不支持,可重新编译内核
--------------------------------------------------------------------
Linux Kernel Configuration
  Loadable module support
    [*] Enable loadable module support
    [*]   Module unloading

Application Main Menu
  BusyBox
    [*] insmod
    [*] insmod: lsmod
    [*] insmod: modprobe
    [*] insmod: rmmod
    [*] insmod: 2.6 and above kernel modules
    [*] insmod: Model version checks
    [*] insmod: load in kernel memory
--------------------------------------------------------------------

第四步,编译
注意路径,按你自己的路径改下即可

--------------------------------------------------------------------
make -C /HHBF531-R1/uClinux-dist/linux-2.6.x SUBDIRS=/root/sample_module modules
--------------------------------------------------------------------

好啦,sample_module.ko就是我们需要的module啦
使用insmod sample_module.ko加载吧
               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号