Armadilloフォーラム

MMC/SD support wo

oobu_eiichi

2014年11月4日 17時14分

お世話になっております。
日立産業制御ソリューションズ 大部です。

hermit-at-3.1.0 で以下のコマンドを実行。
make armadillo800eva_mmcsd_defconfig
make menuconfig
を実行すると、Hermit-At Configuration が起動。

Target Configurations ---->
を選択し、
Support Devices ----->
を選択し、
MMC/SD support
のチェックを外し、saveする。

上記の状態でmakeすると以下のエラーがでてしまいます。
何故でしょうか?

  LDS     src/target/armadillo8x0/loader.lds
  LD      src/target/armadillo8x0/loader-armadillo800eva-mmcsd-v3.1.0.elf
src/target/armadillo8x0/built-in.o: In function `armadillo8x0_init':
proc.c:(.text+0x648): undefined reference to `emmcboot1_memdev_init'
src/target/armadillo8x0/built-in.o: In function `.LANCHOR0':
proc.c:(.data+0x4b4): undefined reference to `rma1_mmcsd'
make[1]: *** [src/target/armadillo8x0/loader-armadillo800eva-mmcsd-v3.1.0.elf] エラー 1
make: *** [build-target] エラー 2
atmark@atde4:~/800EVA/hermit-at-3.1.0$ 
コメント

src/target/armadillo8x0/board.c::armadillo8x0_init() で、

    memdev_add(emmcboot1, &mdev_param,
           "hermit/param", 0x00000000, 0x00002000);

していたり、いろいろmmcsd 依存のままのようです。
添付した patch (no-mmcsd.patch) をあてると、compile はできるようになりました。

ファイル ファイルの説明
no-mmcsd.patch

花田です。

> hermit-at-3.1.0 で以下のコマンドを実行。
> make armadillo800eva_mmcsd_defconfig
> make menuconfig
> を実行すると、Hermit-At Configuration が起動。
>
> Target Configurations ---->
> を選択し、
> Support Devices ----->
> を選択し、
> MMC/SD support
> のチェックを外し、saveする。
>
> 上記の状態でmakeすると以下のエラーがでてしまいます。
> 何故でしょうか?

こちら、遅ればせながら確認したんですが…

前提として、Armadillo-800 EVAのハードウェア構造上、
ブートローダー(Hermit At)はeMMCとSD(いずれも同一のMMC/SDドライバで動作)に置かれることしか
想定しておらず、その意味でMMC/SD supportを外したブートローダーを作ることもない…という
前提でコードが書かれていたようです。

ただ調べたところ、実は(NOR Flashからの起動もサポートしている)Armadillo-810や840でも
同様の設定変更でビルドエラーになる場合があり、その意味で言い訳できない状況でした…

MMC/SD以外にも、FlashとEthernetにおいて同種の問題が確認されましたので、
修正パッチ hermit_at-v3_unsupport-device-bug-fix.patch を添付します。
(標準のConfig設定における動作は、一切変化しません。
設定を変更した場合のビルドエラー対処のみのパッチです)

同種の問題でお困りの方は、本パッチを持ってご確認ください。

(当然、確認の上で公式ソースに取り込まれるべき種類の修正と思います)

ファイル ファイルの説明
hermit_at-v3_unsupport-device-bug-fix.patch