Chinaunix首页 | 论坛 | 博客
  • 博客访问: 809771
  • 博文数量: 76
  • 博客积分: 2211
  • 博客等级: 上尉
  • 技术积分: 1693
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-26 19:36
文章分类

全部博文(76)

文章存档

2012年(67)

2011年(9)

分类: LINUX

2011-12-30 16:15:25

在编译Linux-2.6.38.8内核的最后阶段出现s3c_device_ohci未定义的错误:
arch/arm/mach-s3c2410/built-in.o:(.init.data+0x30): undefined reference to `s3c_device_ohci'  
make: *** [.tmp_vmlinux1] Error 1 

    根据错误信息可知,错误出现在arch/arm/mach-s3c2410目录下所有目标文件链接成built-in.o的时候,所以首先要找出此目录下的什么文件使用了s3c_device_ohci,方法是在此目录下使用以下命令查找:
$ grep "s3c_device_ohci" -nR . 
    查找结果:
./mach-smdk2410.c:90:   &s3c_device_ohci,  
./mach-h1940.c:385: &s3c_device_ohci,  
Binary file ./mach-smdk2410.o matches  
./mach-vr1000.c:337:    &s3c_device_ohci,  
./mach-qt2410.c:250:    &s3c_device_ohci,  
./mach-bast.c:586:  &s3c_device_ohci,  
./mach-tct_hammer.c:132:    &s3c_device_ohci,  
./mach-n30.c:381:   &s3c_device_ohci,  
Binary file ./built-in.o matches  
./mach-otom.c:95:   &s3c_device_ohci,  
./mach-amlm5900.c:157:  &s3c_device_ohci, 
    在arch/arm/mach-s3c2410/mach-smdk2410.c文件中的第90行,s3c_device_ohci被作为平台设备在系统初始化阶段被使用。
    那么它在哪里定义的呢?
    这样的定义一定与具体的平台有关,在Linux-2.6.38.8内核中它被定义在arch/arm/plat-samsung目录下的dev-usb.c文件中,因为在默认情况下dev-usb.c文件并没有被编译,而且在配置界面上也没有相关的选择提示,所以才会出现这样的错误。
    现在要做的就是想办法把它配置进去,方法如下:
    (1)、在arch/arm/plat-samsung/Makfile文件中找到dev-usb.o对应的配置选项CONFIG_S3C_DEV_USB_HOST,然后从当前目录下的Kconfig文件中找到S3C_DEV_USB_HOST,并在它的bool后添加选择提示,如下所示:
config S3C_DEV_USB_HOST  
    bool "support S3C_DEV_USB_HOST"  
    help  
      Compile in platform device definition for USB host. 
    (2)、执行make menuconfig并在配置界面中把它选上即可。  
System Type --->  
           [* ] support S3C_DEV_USB_HOST (NEW) 

 
阅读(3318) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~