文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» Linux & Advanced Application » Linux 2.6.12内核上加载一个简单的模块       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: [转载] Linux 2.6.12内核上加载一个简单的模块  ( 查看:128  回复:0 )   
 
userli
初级工程师  点击可查看详细


十二生肖之鼠   金牛座   行业勋章   技术勋章   诚信兄弟  
帖子 1111
精华 1
无忧币 15419
积分 3308
阅读权限 50
注册日期 2006-9-17
最后登录 2008-10-10 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-3-22 02:27   标题:Linux 2.6.12内核上加载一个简单的模块
上一帖 |
运行环境:linux-2.6.12
编译环境:arm-linux-gcc(3.4.1)
运行平台:AT91RM9200

一、编写模块程序testmodule.c

#include
#include
#include

static int hello_init(void)
{
    printk("Hello! This is the first test module!\n");
    return 0;
}
static void hello_exit(void)
{
printk("Module exit! Bye Bye!\n");
    return;
}

module_init(hello_init);
module_exit(hello_exit);

MODULE_LICENSE("GPL");

二、编写Makefile

obj-m := testmodule.o
KDIR := /src/linux-2.6.12
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
#################################################

注意:"$(MAKE)"前面要空一个"Tab"
KDIR 为内核的路径,这个内核要与AT91RM9200运行的内核先同(编译器也要相同的,要不运行不了)。

三、编译
在linux下执行:make CC=/src/3.4.1/bin/arm-linux-gcc
/*注释:/src/3.4.1/bin/arm-linux-gcc 为交叉编译环境的路径*/
生成testmodule.ko

四、运行
1、将testmodule.ko通过串口或者网口下载到AT91RM9200的板子上

2、执行:chmod +x testmodule.ko修改模块的属性将其设为可执行文件

3、执行:insmod testmodule.ko
Hello! This is the first test module!
执行:rmmod testmodule.ko
Module exit! Bye Bye!



2008-3-22 02:271楼
[ 顶部 ]
     
论坛跳转:  

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号