2015年7月25日土曜日

FON2100E の SD カードが認識されません

昨日、FON2100E へ SD カードのソケットを取り付けて、OpenWrt Kamikaze 8.09.2 において動作の検証が終わっていました。そこで本日は、 FON2100E へ OpenWrt Barrier Breaker 14.07 をインストールして SD カードを動作させてみることとしました。

FON2100E へ SD カードを装着したところです。

SD カードのインストールにあたり次のウェブサイトを参考にしました。
DSL-502t/500t SD/MMC card problem (Page 1) — Hardware
https://forum.openwrt.org/viewtopic.php?id=21590
mmc_over_gpio - OpenWrt Wiki
http://wiki.openwrt.org/doc/howto/mmc_over_gpio

SD カード関連のカーネルモジュールなどのインストール

SD カード関連のカーネルモジュールを opkg コマンドにてインストールしました。依存関係にあるソフトウェアも一緒にインストールされました。
# opkg update
# opkg install kmod-mmc-over-gpio
  • kmod-mmc-over-gpio
  • kmod-mmc-spi
  • kmod-mmc
  • kmod-lib-crc-itu-t
  • kmod-lib-crc7
  • kmod-spi-gpio-old
  • kmod-spi-bitbang
  • kmod-fs-configfs

GPIO 端子の設定ファイルの編集

OpenWrt Kamikaze 8.09.2 においては、GPIO の起動制御スクリプト(/etc/init.d/mmc_over_gpio)を直接編集していましたが、OpenWrt Barrier Breaker 14.07 においては、専用の設定ファイル(/etc/config/mmc_over_gpio)が存在しています。この設定ファイルの中で、起動時に自動的に mmc-over-gpio のモジュールが起動するように enable の項目を "0" から "1" へ変更します。その他のピン配置は初期値のままで問題ないようです。
config 'mmc_over_gpio'
        option 'name' 'default'
        option 'enabled' '0' --> '1'
        option 'DI_pin' '1'
        option 'DO_pin' '3'
        option 'CLK_pin' '4'
        option 'CS_pin' '7'
        option 'mode' '0'
上記では直接設定ファイルを編集しましたが、Luci の設定画面からも次のソフトウェア(luci-app-mmc-over-gpio)をインストールすることによって設定可能となります。インストール後に [System] - [MMC/SD driver configuretion] のタブから設定してください。
# opkg install luci-app-mmc-over-gpio

SD カードを認識しません

上記の設定を行った後、FON2100E を再起動させます。telnet ログインを行なって ls /dev コマンドでブロックデバイスの確認を行ったところ、存在するはずの /dev/mmcblk0p1 が見当たらないのです。

Luci のシステムログや telnet ログインの dmesg コマンドで mmc-over-gpio 関係の動作状況を確認すると次のようなエラーメッセージが出ていました。
gpio-mmc: Failed to request mmc_spi module.
spi-gpio: probe of spi-gpio.0 failed with error -16
gpio-mmc: MMC-Card "default" attached to GPIO pins di=1, do=3, clk=4, cs=7
"error -16" の部分は、OpenWrt の掲示板の情報によると GPIO のピンを多重に複数のモジュールから取り合っている模様でした。
DSL-502t/500t SD/MMC card problem (Page 1) — Hardware
https://forum.openwrt.org/viewtopic.php?id=21590
-16 is -EBUSY.
I bet you have a doubleusage of a GPIO pin. It's only possible to register a GPIO pin once. Your older mmc driver most likely overrides this and uses the pin anyway.
とりあえず WLAN の LED 表示が GPIO 経由の設定であったため、WLAN の設定を消去してみましたが、改善はみられませんでした。

また Kamikaze 8.09.2 の時の /etc/init.d/mmc_over_gpio の編集内容に従って、GPIO の CS ピンの割り当てを "14" に一旦設定した後、再度 "7" に設定を手動で戻してみることも行なってみましたが改善されませんでした。

ネット上をいろいろと検索してみましたが、解決策が見当たらなくて困っています。

OpenWrt Attitude Adjustment 12.09 をインストール

そこで現在の Barrier Breaker 14.07 から Attitude Adjustment 12.09 へシステムを入れ替えてみて、様子を観察してみることとしました。Barrier Breaker 14.07 と同様のインストールと設定を行なってみましたが、結果は同じエラーを発生して SD カードを認識してくれませんでした。

OpenWrt の掲示板上には、カーネル 2.6 系の時点で mmc-over-gpio にバグが存在していて動作しないなどの情報が上がっていましたが、その後どうなってしまったのか不明です。随分とバージョンアップを繰り返した Barrier Breaker 14.07 でも mmc-over-gpio に問題が残っているのでしょうか?

どうも現時点ではすぐに問題点を解決できそうにありませんでした。FON2100E の OpenWrt Barrier Breaker 14.07 での SD カードの動作は継続課題となりました。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。