2012-11-23 2 views
3

파일 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2에서 RT5370 칩셋으로 2.5.0.3 드라이버를 빌드하려고합니다.RT5370 SH4 크로스 컴파일 드라이버 오류

커널 linux-sh4-2.5.32.59_stm24_0211에서 우분투 10.04.4 x32로 STLinux 2.4를 설치하십시오.

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 

언급에 : 메이크 몇 가지 결함을 가지고 있기 때문에하지만, 대신 STLinux-2.4의 경로에 /opt/STM/STLinux-2.2/devkit/sources/kernel/linux-sh4-2.5.32.59_stm24_0211을 썼다 경로 2.4는 필자의 경우 커널 2.4를 빌드한다.

은 메이크에 쓴 : ./os/linux/config.mk에서

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- 

썼다 : 실행에

HAS_WPA_SUPPLICANT=y 
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y 
CC := sh4-linux-gcc 
LD := sh4-linux-ld 

빌드 명령을합니다. ./os/linux/config.mk에서

script/Makefile.build:49: *** CFLAGS was changed in "/home/vitaliy/drv_src/os/linux/Makefile". Fix it to use EXTRA_CFLAGS. 

설립 된 문자열 :하지만 오류가

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 

을 그들에 EXTRA_CFLAGS에 CFLAGS를 변경합니다.

다시 오류 :

sh4-linux-gcc: error: -pg and -fomit-frame-pointer are incompatible. 

좋아. 플래그 -fomit-frame-pointer를 제거하십시오.

다시 오류 :

error: cpu/cache.h: No such file or directory. 

문자열 :

WFLAGS := -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs 

제거 플래그 -DLINUX.

다시 알려지지 않은 유형의 오류 (예 : ./os/linux/../../common/crypt_md5.c:638:1 : 오류 : 알 수없는 유형 이름 'VOID'등등) 'UCHAR ','ULONG '등). 드라이버의 소스 파일의 변경없이

KBUILD_NOPEDANTIC = 1 메이크업의 도움으로 구축 할 수

두 번째 방법. 또한이 경우

오류 :

./os/linux/../../common/crypt_md5.c:28:23: fatal error: rt_config.h: No such file or directory. 

내 건물에 어떤 문제가 있습니까? 또는 소스 코드를 수정하고 SH4 플랫폼 용 드라이버를 빌드 할 수 있습니까?

감사합니다.

답변

4

나는 최근에 나 자신과 동일한 어댑터를 가지고 있었고, ARM 용으로 컴파일을 시도하고 같은 문제가 발생했습니다.

기본적으로 드라이버 패키지의 루트에서 포함 폴더를 추가하기 만하면됩니다.

DRIVER_DIR/Makefile에 추가 :

PLATFORM = MYPLATFORM 

다른 모든 플랫폼은 주석 처리되어

나는이 작업을 진행하기 위해 이러한 수정을했다. 나중에 같은 파일에

: DRIVER_DIR/os/linux/config.mk에서

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 

한 다음, 추가 :

을 :

또한
ifeq ($(PLATFORM),MYPLATFORM) 
    EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include 
endif 

, 당신이 플래그의 부부를 활성화해야 커널 설정에 유의하시기 바랍니다

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

난 그냥이 지금처럼 컴파일 :

DRIVER_DIR$ ARCH=arm make 

는 희망이 도움이!

+0

당신은 영웅입니다. CONFIG_WEXT_PRIV = y가 없습니다. +1 – enthusiasticgeek