FAQ : linux-2.6.18-at8に書き換えたら起動時にNANDのところで大量のエラーが出るようになった

対象製品: Armadillo-500

linux-2.6.18-at8ではNANDフラッシュのOOB処理が修正されて、前のカーネルからバージョンアップしてからそのまま起動しようとすると以下のようなエラーが出てNANDを正しくアクセスできなくなる可能性があります。


MXC MTD nand Driver 2.0
NAND device: Manufacturer ID: 0x20, Chip ID: 0xda (ST Micro NAND 256MiB 3,3V 8-bit)
Scanning device for bad blocks
Bad eraseblock 317 at 0x027a0000
Bad eraseblock 318 at 0x027c0000
        :
        :
        :
Bad eraseblock 1506 at 0x0bc40000

対策方法1. NANDの低レベル削除

linux-2.6.18-at8で利用されるOOBデータ・フォーマットが前のカーネルと異なるため、linux-2.6.18-at8にバージョンアップする場合、NANDの低レベル削除を行う必要があります。

以下のmake menuconfig設定で作成されたカーネルで起動するとNANDが初期化されます。

Device Drivers  --->
  Memory Technology Devices (MTD)  --->
    NAND Flash Device Drivers  --->
      <*> NAND Device Support
      <*> MXC NAND support
      [*]   Low level NAND erase

注意点

  • NANDに保存されているデータが全て削除されます。
  • この設定のカーネルで1回起動するだけで充分です。

対策方法2. 前のカーネルに戻す

もし対策方法1で行うデータ削除を避ける必要があるのであれば、linux-2.6.18-at8より前のカーネルに戻すと今まで通りにNANDをアクセスできるようになります。