matsuoka.yasufumi
2018年2月9日 10時27分
「Armadillo IoT G3L」で、システム起動時、SanDiskのSDカード(8GByte、Speed Class: 4)で、
データ転送エラーが発生し、SDカードをマウントできません。
Linuxシェルのログでのエラーメッセージを以下に示します。(★印)
SDカードのデータ転送速度は、Speed Class: 4(4MB/秒)で、Armadilloの仕様を満たしていると考えています。
原因と対策をアドバイスして頂けないでしょうか?
動作環境の情報を以下に示します。
補足情報ですが、
Armadilloの動作確認済みのSDカードとして、
SanDiskのSDカード16GBは、登録されていましたが、
SanDiskのSDカード8GByte(Speed Class: 4)は、登録されていませんでした。
○Linuxシェルのログ
★mmcblk0: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00
mmcblk0: retrying using single block read
mmcblk0: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0x0
end_request: I/O error, dev mmcblk0, sector 0
Buffer I/O error on device mmcblk0, logical block 0
■動作環境
1.製品 :Armadillo IoT G3L
2.Linuxカーネルのバージョン :Linux armadillo 3.14.79-at18
3.SDカードの情報
メーカー名:SanDisk
品番 :SDSDQ-008G-J35U
容量:8GByte
Speed Class: 4 読み書き時のデータ転送速度が最低 4MB/秒
URL:https://www.sandisk.co.jp/home/memory-cards/microsd-cards/sandisk-micro…
4.添付ファイル
1)システム起動時のLinuxシェルのログ、dmesgコマンドのログ
ファイル:Linuxシェルログ_SDカードでデータ転送エラー_20180208.log
参照箇所:★印
5.補足情報
1)SanDiskのSDカード16GBは、Armadilloの動作確認済みのSDカードとして登録されています。
microSDHC 16GB SDSDQ-016G [SanDisk]
容量: 16GB
Speed Class: 2
2)下記の東芝のSDカード(32GByte)で動作確認した結果、データ転送エラーは発生していません。
メーカー名:TOSHIBA
品番:TO3308M302RD-2
容量:32GByte
Speed Class: 10 :読み書き時のデータ転送速度が最低 10MB/秒
UHSスピードクラス:スピードクラス3 (U3)
ファイル | ファイルの説明 |
---|---|
Linuxシェルログ_SDカードでデータ転送エラー_20180208.log |
コメント
at_takumi.ando
at_takumi.ando
安藤です。
添付いただいたログは、別のSDカードを挿したときのログではありませんか?
ログを拝見したところ、カードをDDR50モードとして認識していますが、
SanDisk SDSDQ-008G-J35U はClass 4のカードであり、UHS-I対応のカードではないため
そのようなログにはならないかと思います。
mmc0: new ultra high speed DDR50 SDHC card at address 0007
現在、Armadillo-IoT G3/G3L, Armadillo-X1 で、DDR50モードで動作する
SD/microSD を挿した際、正しく認識できないことがある不具合を確認しています。
ご迷惑をおかけし申し訳ありません。
UHS-I対応SD/microSDカードで、DDR50で動作するものをArmadilloに挿入すると
以下のようなエラーメッセージが表示され、正しく認識できないことがあります。
mmcblk0: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00 mmcblk0: retrying using single block read mmcblk0: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0x0 end_request: I/O error, dev mmcblk0, sector 0 mmcblk0: error -84 transferring data, sector 2, nr 6, cmd response 0x900, card status 0x0 end_request: I/O error, dev mmcblk0, sector 2 Buffer I/O error on device mmcblk0, logical block 0
Armadillo-IoT G3/G3L, Armadillo-X1では現在、ハードウェアとしてDDRをサポートしていないにも関わらず、
DDR50対応カードを挿入した際、DDR50モードで動作させてしまっています。
そのため、DDR50モードで動作させる際に不適切なDrive Strengthを設定してしまっているのが原因です。
DDR50モードを無効にし、SDR50モードで動作させるパッチ(暫定版)を添付します。
linux-3.14-x1-at20 を対象に作成しています。以下のように適用し、カーネルイメージとDTB(Device Tree Blob)とをビルドしてください。
[ATDE ~/linux-3.14-x1-at20]$ patch -p1 < linux-3.14-x1-at20_no-support-ddr50.patch [ATDE ~/linux-3.14-x1-at20]$ make ARCH=arm x1_defconfig [ATDE ~/linux-3.14-x1-at20]$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- [ATDE ~/linux-3.14-x1-at20]$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOADADDR=0x80008000 uImage
DDR50とSDR50とではクロックスピードが違いますが、ビットレートに差分はありません。
https://panasonic.net/cns/sdcard/industrial_sd_j/performance.html
今回の修正は、次回アップデート時に適用予定です。
以上です。
ご確認よろしくお願いします。
ファイル | ファイルの説明 |
---|---|
linux-3.14-x1-at20_no-support-ddr50.patch |
at_takumi.ando
matsuoka.yasufumi
安藤様
松岡です。解析と対策の情報の提供どうもありがとうございます。
提供されたパッチを使用して、カーネルとDTBをビルドし、動作確認を行います。
後日、結果を報告させて頂きます。
ご質問「添付したログが他の種類のSDカードのログではないか?」について、
SanDisk_SDSDQ-008G-J35Uを使用時のログで合っております。
SanDisk_SDSDQ-008G-J35Uの仕様を見ると、
スピードクラスはClass 4ですが、BUSインターフェイスはUHS-I対応となっておりました。
添付ファイル「SanDisk_SDSDQ-008G-J35U.png」を参照して下さい。
よって、提供して頂いたパッチで、動作OKになると考えております。
以上です。
ファイル | ファイルの説明 |
---|---|
SanDisk_SDSDQ-008G-J35U.png |
at_takumi.ando
matsuoka.yasufumi
安藤様
松岡です。
2/9に早急に対策パッチを提供して頂いたのに、動作確認が遅れており、大変申し訳ありません。
お願いが1件あります。
パッチについて、提供頂いたパッチは最新のLinuxカーネルのバージョン用のものですが、
弊社が開発で使用しているLinuxカーネルのバージョン「Linux-3.14.79-at18」用のパッチを
提供して頂く事は可能でしょうか?
対応は急ぎではありません。
Linuxカーネルのバージョン
a)提供して頂いたパッチ用 :linux-3.14-x1-at20
b)弊社が開発で使用 :Linux-3.14.79-at18 ★
at_takumi.ando
安藤です。
linux-3.14-x1-at18 に適用可能な、本不具合の対策パッチを添付します。
なお、本不具合に対する修正は linux-3.14-x1-at21 にて適用されております。
Armadillo 製品アップデートのお知らせ (2018年3月/Armadillo-IoT G3L対象)
https://armadillo.atmark-techno.com/news/20180306/software-update-aiotg…
実際に開発中の製品で運用する際は、linux-3.14-x1-at21以降をご使用ください。
ファイル | ファイルの説明 |
---|---|
linux-3.14-x1-at18_no-support-ddr50.patch |
matsuoka.yasufumi
2018年2月9日 10時41分
申し訳ありません。名前の記載を忘れていました。
松岡と申します。いつもお世話になっています。
お手数ですが、原因と対策のアドバイスを宜しくお願いいたします。