+ -
当前位置:首页 → 问答吧 → 请教: S3CEB2410开发板的模块装载问题,急!

请教: S3CEB2410开发板的模块装载问题,急!

时间:2005-09-01

来源:互联网

我在Linux下使用arm-linux-gcc -c hello.c编译没有出错,然后下载到开发板的/tmp目录下 .

使用insmod hello.o来执行,得到下面的输出结果:

# insmod hello.o
hello.o: couldn't find the kernel version the module was compiled for
#

我是初学者,请大家指点,谢谢先!      

作者: gefy   发布时间: 2005-09-01

我写了一个Makefile文件:

TEMPPARM=-D__KERNEL__
TEMPPARM+=-DMODULE
TEMPPARM+=-I/usr/src/kernel/include
TEMPPARM+=-I./
TEMPPARM+=-Wall
TEMPPARM+=-I/usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/include
TEMPPARM+= -O2

hello.o:hello.c
        arm-linux-gcc $(TEMPPARM) -c -o hello.o hello.c

开发板上的Linux版本是:linux-2.4.18-rmk7-pxa1,解压在/usr/src/kernel里面
我的hello.c文件内容是:

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

#ifndef __KERNEL__
#define __KERNEL__
#endif

#ifndef MODULE
#define MODULE
#endif

int init_module(void)   
{
  printk("<1>Hello,world\n");
  return 0;
}

void cleanup_module(void)
{
  printk("<1>goodbye cruel world\n");
}

执行make命令后出错了,输出结果为:

arm-linux-gcc -D__KERNEL__ -DMODULE -I/usr/src/kernel/include -I./ -Wall -I/usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/include -O2 -c -o hello.o hello.c
In file included from hello.c:2:
/usr/src/kernel/include/linux/module.h:297: linux/version.h: ?????????
make: *** [hello.o] Error 1

这是什么原因呢 ?      

作者: gefy   发布时间: 2005-09-01

[QUOTE=gefy]

arm-linux-gcc -D__KERNEL__ -DMODULE -I/usr/src/kernel/include -I./ -Wall -I/usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/include -O2 -c -o hello.o hello.c
In file included from hello.c:2:
/usr/src/kernel/include/linux/module.h:297: linux/version.h: ?????????
make: *** [hello.o] Error 1

这是什么原因呢 ?[/QUOTE]1.在确认进入s<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com3c</st1:chmetcnv>2410_kernel<st1:chsdate w:st=" /><st1:chmetcnv w:st="on" TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="3" UnitName="C">3c</st1:chmetcnv>2410_kernel<st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year="1899">2.4.18</st1:chsdate>_r1.1源码目录中,make menuconfig

选择'Load on Alternate Configuration File'一项

输入'arch/arm/def-configs/smdk2410'

选择Exit,Yes保存

2.直接把s<st1:chmetcnv w:st="on" TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="3" UnitName="C">3c</st1:chmetcnv>2410_kernel<st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year="1899">2.4.18</st1:chsdate>_r1.1/include/linux 直接在图形界面中复制到 /usr/local/arm/2.95.3/arm-linux/include/linux

把s<st1:chmetcnv w:st="on" TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="3" UnitName="C">3c</st1:chmetcnv>2410_kernel<st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year="1899">2.4.18</st1:chsdate>_r1.1/include/asm-arm 直接在图形界面中复制到 /usr/local/arm/2.95.3/arm-linux/include/asm
3.编译就ok了
我当初也是为了这个问题搞了好久.你现在不必浪费时间再走弯路了      

作者: JAMESBONE   发布时间: 2005-09-01

谢谢你JAMESBONE!

我后来把源文件看了一下,里面没有version.h这个文件,我就把内核源文件重新解压缩装在原来的位置,然后重新编译通过了,下载到板子上通过了.

第一条中你提到的内核编译我不太明白,编译内核中的那个操作是什么意思,还请你再指点一下,谢谢!

还有个问题,请问你用的是S3CEB2410这块板子吗?我的LCD显示不正常,不知道是不是没有驱动的原因,我在内核启动的过程中没有发现任何关于LCD的信息,是不是内核中没有包含LCD驱动呢?

谢谢!      

作者: gefy   发布时间: 2005-09-02

[QUOTE=gefy]
第一条中你提到的内核编译我不太明白,编译内核中的那个操作是什么意思,还请你再指点一下,谢谢!
[/QUOTE]这就是为了产生version.h文件.我的内核源文件原来是没有这个文件的,只有通过这样产生.(不敢肯定是否还有其他新的文件产生)

我用的这快板子是没有lcd的,为了省钱.因此你的问题我只能猜测一下:可能应该烧入的kernel映象应该是光盘中Linux(QT)下的zImage

这个公司的产品的文档内容很少很少,技术支持更是水货.开发难度会很大.有问题大家再切磋下      

作者: JAMESBONE   发布时间: 2005-09-02

噢,原来是这样,明白了 .

我可以参考的资料很少,源代码来源于MIZI公司的SMDK2410的光盘,里面的英文相关文档很少,韩文的很多,太郁闷了....

以后还要多请教你了,谢谢!

能告诉我你现在在做哪一方面的开发吗?      

作者: gefy   发布时间: 2005-09-02

请教不敢当.有问题大家就切磋一下      

作者: JAMESBONE   发布时间: 2005-09-02