首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

编写ARM上Linux驱动程序出错,要写些什么结构

2012-03-16 
编写ARM上Linux驱动程序出错,请教高手要写些什么结构我弄了一个最简单的驱动程序编译完了在PC机上可以运行

编写ARM上Linux驱动程序出错,请教高手要写些什么结构
我弄了一个最简单的驱动程序编译完了在PC机上可以运行,用交差编译器和ARM C语言库编译后到ARM上运行,提示:Invalid   module   format(-1):Exec   format   error,请问我的程序错在哪里,要改些什么结构?(我的开发板是Intel270,OS是BusyBox Linux).谢谢!

#ifndef   __KERNEL__
#   define   __KERNEL__
#endif

#ifndef   MODULE
#   define   MODULE
#endif

#include   <linux/config.h>
#include   <linux/module.h>

MODULE_LICENSE( "GPL ");
#ifdef   CONFIG_SMP
#define   __SMP__
#endif


#include   <linux/kernel.h>   /*   printk()在这个文件里   */

static   int   init_module()
{
printk( "Hello,test   World!\n ");
return   0;   /*   如果初始工作失败,就返回非0   */
}

static   void   cleanup_module()
{
printk( "Bye!\n ");
}

[解决办法]
按提示是你编译的问题,不是目标机器所认识的格式
[解决办法]
提示编译的目标格式不对啊

是不是编译也要相应的arm内核源代码?
[解决办法]
很显然,是你的MAKEFILE没对
再者,编译是需要arm-linux内核源码的,因为需要头文件
[解决办法]
你开发板上的内核版本(配置)和你交叉编译环境的内核版本(配置)不一致吧。
你需要把用目标板上的系统代码和lib拿来交叉编译才行。
[解决办法]
请用静态编译 makefile 里加 -static
[解决办法]
这是我在用的一个Makefile

ifeq ($(KERNELRELEASE),)
KERNELDIR ?=/linuxsrc
PWD := $(shell pwd)

modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

else
obj-m = mymodule
endif

不过在使用以前要设置几个环境PATH,ARCH和CROSS_COMPILE,而且Makefile里面的linux源代码树是用交叉编译环境编译过的,要不然会缺少文件。然后直接make就K.O.了。
Good luck!
[解决办法]
请教:我在FC6 下编译,编译在FC6 下的模块,库文件用的是 /usr/src/kernels/2.6.18-1.2798.fc6-i686/include/ ,编译的时候,提示很多库文件里面有很多错误,自己去下了个Linux 2.6.18内核,也是一样很多错误,,

库文件要怎么设置?

[解决办法]
去下载<<LINUX设备驱动程序> > 第三版中的例程源代码,稍改一下就OK了,至于下载地点,你去看一看那本书的前言,里面说了源码的下载地址

热点排行