![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| 动态模块加载的例子 | |||||
作者:61IC录入 文章来源:本站原创 点击数: 更新时间:2007-1-1 ![]() |
|||||
|
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条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|