歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 關於編譯Linux-2.6.38.8內核時s3c_device_ohci未定義問題的分析

關於編譯Linux-2.6.38.8內核時s3c_device_ohci未定義問題的分析

日期:2017/2/28 16:02:54   编辑:Linux教程
開發平台:Ubuntu11.04

目 標板:優龍FS2410

編 譯器:arm-gcc-4.1.1.tar.bz2 (下載見 http://www.linuxidc.com/Linux/2011-11/47824.htm )

在編譯Linux-2.6.38.8內核的最後階段出現s3c_device_ohci未定義的錯誤:

  1. arch/arm/mach-s3c2410/built-in.o:(.init.data+0x30): undefined reference to `s3c_device_ohci'
  2. make: *** [.tmp_vmlinux1] Error 1

根據錯誤信息可知,錯誤出現在arch/arm/mach-s3c2410目錄下所有目標文件鏈接成built-in.o的時候,所以首先要找出此目錄下的什麼文件使用了s3c_device_ohci,方法是在此目錄下使用以下命令查找:

  1. $ grep "s3c_device_ohci" -nR .

查找結果:

  1. ./mach-smdk2410.c:90: &s3c_device_ohci,
  2. ./mach-h1940.c:385: &s3c_device_ohci,
  3. Binary file ./mach-smdk2410.o matches
  4. ./mach-vr1000.c:337: &s3c_device_ohci,
  5. ./mach-qt2410.c:250: &s3c_device_ohci,
  6. ./mach-bast.c:586: &s3c_device_ohci,
  7. ./mach-tct_hammer.c:132: &s3c_device_ohci,
  8. ./mach-n30.c:381: &s3c_device_ohci,
  9. Binary file ./built-in.o matches
  10. ./mach-otom.c:95: &s3c_device_ohci,
  11. ./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後添加選擇提示,如下所示:

  1. config S3C_DEV_USB_HOST
  2. bool "support S3C_DEV_USB_HOST"
  3. help
  4. Compile in platform device definition for USB host.

(2)、執行make menuconfig並在配置界面中把它選上即可。

  1. System Type --->
  2. [* ] support S3C_DEV_USB_HOST (NEW)
Copyright © Linux教程網 All Rights Reserved