3

ファイル2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2から RT5370 チップセットへの 2.5.0.3 ドライバーをビルドしようとしました。

STLinux 2.4 を Ubuntu 10.04.4 x32 にインストールし、カーネル linux-sh4-2.5.32.59_stm24_0211 の下に作成します。ただし、Makefile にいくつかの欠陥があるため、パスに STLinux-2.4 の代わりに /opt/STM/STLinux-2.2/devkit/sources/kernel/linux-sh4-2.5.32.59_stm24_0211 を記述しました。

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に書いた:

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 に次のように書いています。

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

make コマンドの実行時にビルドします。しかし、エラーがあります:

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 に作成された文字列:

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 に変更します。

再びエラー:

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

Ok。フラグ -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) 」など)。

の助けを借りて構築する 2 番目の方法

KBUILD_NOPEDANTIC=1 は、ドライバーのソース ファイルを変更せずに作成します。

この場合もエラー:

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

私の建物で何が問題になっていますか?または、ソース コードを修正して、SH4 プラットフォーム用のドライバーをビルドできますか。

ありがとうございました!

4

1 に答える 1

4

私は最近同じアダプターを手に入れました.ARM用にクロスコンパイルしようとしていて、同じ問題に遭遇しました。

基本的には、ドライバー パッケージのルートから include フォルダーを追加するだけです。

私はそれを機能させるためにこれらの変更を行いました:

DRIVER_DIR/Makefile、追加:

PLATFORM = MYPLATFORM

他のすべてのプラットフォームはコメント アウトされています。

後で同じファイルに:

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、次のように追加しました。

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

それが役に立てば幸い!

于 2013-04-08T12:01:53.143 に答える