搜索
bottom↓
回复: 1

linux驱动的编译问题

[复制链接]

出0入0汤圆

发表于 2011-2-11 15:00:39 | 显示全部楼层 |阅读模式
请教一下,怎样才能在宿主机上单独编译能运行在arm上的驱动模块呢,然后在开发板中用NFS来获取并运行驱动,谢谢了

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2011-2-11 20:34:06 | 显示全部楼层
运行环境:linux-2.6.12
  编译环境:arm-linux-gcc(3.4.1)
  运行平台:AT91RM9200
  一、编写模块程序testmodule.c
  
  #include <linux/init.h>
  #include <linux/kernel.h>
  #include <linux/module.h>
  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
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 03:49

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表