首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RT5370 SH4交叉编译驱动程序错误

RT5370 SH4交叉编译驱动程序错误
EN

Stack Overflow用户
提问于 2012-11-24 05:27:05
回答 1查看 2.3K关注 0票数 3

我尝试构建从文件2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2到RT5370芯片组的2.5.0.3驱动程序。

在Ubuntu10.04.4 x32下安装stm2.4,在内核linux-sh4-2.5.32.59_stm24_0211下安装。但是我把/opt/STM/STLinux-2.2/devkit/sources/kernel/linux-sh4-2.5.32.59_stm24_0211写在path中,而不是STLinux-2.4,因为Makefile有一些缺陷:

代码语言:javascript
复制
install:
ifeq ($(TARGET), LINUX)
ifneq (,$(findstring 2.4,$(LINUX_SRC)))
$(MAKE) -C $(RT28xx_DIR)/os/linux -f Makefile.4 install
else
$(MAKE) -C $(RT28xx_DIR)/os/linux -f Makefile.6 install
endif
endif

路径2.4中提到的将内核构建为2.4,在我的例子中是错误的。

在Makefile中编写:

代码语言:javascript
复制
PLATFORM = ST
...
LINUX_SRC = /opt/STM/STLinux-2.2/devkit/sources/kernel/linux-sh4-2.5.32.59_stm24_0211
CROSS_COMPILE = /opt/STM/STLinux-2.2/devkit/sh4/bin/sh4-linux-

在./os/linux/config.mk中写道:

代码语言:javascript
复制
HAS_WPA_SUPPLICANT=y
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
CC := sh4-linux-gcc
LD := sh4-linux-ld

在运行make命令时构建。但是有这样的错误:

代码语言:javascript
复制
script/Makefile.build:49: *** CFLAGS was changed in "/home/vitaliy/drv_src/os/linux/Makefile". Fix it to use EXTRA_CFLAGS.

在./os/linux/config.mk中找到了字符串:

代码语言:javascript
复制
ifeq ($(PLATFORM),ST)
CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -O2 -Wundef -Wstrict-prototypes -Wno-trigraphs -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-aliasing -fno-common -fomit-frame-pointer -ffreestanding -m4-nofpu -o $(WFLAGS) 
export CFLAGS
endif

并在其中将CFLAGS更改为EXTRA_CFLAGS。

再次出现错误:

代码语言:javascript
复制
sh4-linux-gcc: error: -pg and -fomit-frame-pointer are incompatible.

好的。删除flag -fomit-frame-pointer。

再次出现错误:

代码语言:javascript
复制
error: cpu/cache.h: No such file or directory.

在字符串中:

代码语言:javascript
复制
WFLAGS := -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs

删除标志-DLINUX。

未知类型再次出错(例如:./os/linux/../../common/crypt_md5.c:638:1: error:未知类型名称'VOID‘,以此类推,类型为'UCHAR','ULONG’等)。

帮助构建的第二种方法

KBUILD_NOPEDANTIC=1使驱动程序的源文件不做任何更改。

在这种情况下也是错误的:

代码语言:javascript
复制
./os/linux/../../common/crypt_md5.c:28:23: fatal error: rt_config.h: No such file or directory.

我的大楼出了什么问题?或者我可以修复源代码并为SH4平台构建驱动程序。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-04-08 20:01:53

我最近给自己买了同样的适配器,我试图为ARM交叉编译,但遇到了同样的问题。

基本上,您只需从驱动程序包的根目录添加include文件夹。

为了让它正常工作,我做了以下修改:

DRIVER_DIR/Makefile中,添加了:

代码语言:javascript
复制
PLATFORM = MYPLATFORM

所有其他平台都被注释掉了。

后面在同一文件中:

代码语言:javascript
复制
ifeq ($(PLATFORM),MYPLATFORM)
    LINUX_SRC = /DIR_TO_MY_KERNEL_SRC/freescale_mainline/linux-mainline
    CROSS_COMPILE =  /DIR_TO_MY_CROSS_COMPILER/arm-unknown-linux-uclibcgnueabi-
    CROSS_COMPILE_INCLUDE = /DRIVER_DIR/include /*Might not be necessary*/
endif

然后在DRIVER_DIR/os/linux/config.mk中,添加了:

代码语言:javascript
复制
ifeq ($(PLATFORM),MYPLATFORM)
    EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include
endif

另外,请注意,在您的内核配置中,您需要启用几个标志:

代码语言:javascript
复制
CONFIG_WEXT_CORE=y
CONFIG_WEXT_PROC=y
CONFIG_WEXT_SPY=y
CONFIG_WEXT_PRIV=y

您可以在Device Drivers-->Network Device Support-->Wireless LAN-->IEEE 802.11 for Host AP下找到它们

我现在就像这样编译它:

代码语言:javascript
复制
DRIVER_DIR$ ARCH=arm make

希望它能帮上忙!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13535926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档