Armadillo-200シリーズの 2.6.12.3-a9-15までのカーネルでは、 NANDフラッシュメモリモジュール (RTC版も含む)で読み書きに失敗することがあります。 問題がある場合は、最新版のカーネルを使用してください。
この問題は、以下のようなエラーとして顕在化します。
データリード時のエラー:
[armadillo ~]# md5sum /mnt/test.data Data CRC afd81501 != calculated CRC bff8713d for node at 0ffa7b18 mtd->read(0x1000 bytes from 0xffb8fe0) returned ECC error Data CRC 58795974 != calculated CRC b5096602 for node at 0ffb8f9c mtd->read(0x44 bytes from 0xffa7b18) returned ECC error
マウント時のエラー:
[armadillo ~]# mount -t jffs2 /dev/mtdblock4 /mnt/ mtd->read(0x1f580 bytes from 0xff60a80) returned ECC error mtd->read(0x1ee00 bytes from 0xff81200) returned ECC error mtd->read(0x1f6c4 bytes from 0xffa093c) returned ECC error
この問題は、OP-NF256MRTC-20およびOP-MF256M-20で使用しているマイクロン製 NANDフラッシュメモリの最新ダイに、信号タイミングの変更が入っているため、 従来のドライバが対応できていなかったことが原因でした。この対応のために、 SMCBCRレジスタのIDCY設定値を修正しています。設定は drivers/mtd/nand/armadillo2x0.c内の関数 armadillo2x0_initで行なっています。
- outl(0x000004c0, SMCBCR3); + outl(0x000004c9, SMCBCR3);
ただし、上記の問題の解析中に、Linux 2.6.12のMTDサブシステムに別の不具合を確認したため、 2.6.18系の MTDサブシステムをバックポートしています。こちらの問題は、すべての Armadillo-200シリーズ製品に影響します。 バックポートが入っているカーネルは、2.6.12.3-a9-16 からになります。
対象商品
- Armadillo-220/230/240(Armadillo-2X0シリーズ基板本体)
- OP-NF256MRTC-20/OP-NF256MRTC-10(RTC付NANDフラッシュモジュール)
- OP-MF256M-20/OP-NF256M-10/OP-NF256M-00/OP-NF128M-00(NANDフラッシュモジュール)