CAT845_内蔵ROM初期化手順

必要なもの

ハードウェア

  • CAT845 基板
  • 電源 5V 2A (EK845に付属する)
  • USB シリアルコンソールケーブル(EK845に付属する)
  • microSDメモリカード(最低2Gバイト、4Gバイト以上を推奨)
  • LANケーブル
  • USB メモリカードリーダ (microSD対応の物)

ソフトウェア

  • シリアルポートが使用できる端末ソフト(TeraTerm推奨)

microSD メモリカード

ここから最新のROMイメージファイルを取得し、 FATフォーマットされたmicroSDメモリカードにファイルを保存しておく

filelist.png

CAT845の立ち上げ

pica4.jpg

microSDをCN7ソケットに挿入する。

pica5.jpg pica6.jpg

CN7 microSD図示のようにLANコネクタ方向にスライドさせると開き、CPU側へスライドさせると閉じる。microSDソケットを操作するときは必ず電源を抜くこと。通電中にソケットを操作すると金属のシールドが電源端子に接触し、最悪の場合は基板が故障する。ソケットのふた側にmicroSDメモリカードを挿入する。
CN10 シリアルコンソール付属のUART-USB変換ケーブルでPCと接続する
SW1 (4つのDIPSW)全てoff
SW3R26側 … 通常はこちら / R25側 … JTAG ICE使用時
SW2Reset SW

CAT845 CN10 が 3.3V UARTシリアルコンソール入出力である。EK845付属のシリアルUSB変換ケーブルを接続すること。その他のケーブルを使用する場合は次のピン配置を参考のこと

CN10B6B PH-K (日圧 PHコネクタ)
1GND
2RxD 3.3V TTL入力
3TxD 3.3V TTL出力
4GND
5#RESET リセットLow入力(4-5pin短絡でリセット)

pica7.png

TeraTermを開き、シリアルコンソール(COM x)を開く。
ボーレートは115200bpsとし、電源を投入する。

CAT845のROM領域について

本機には2つのストレージ領域がある

オンボードROMQSPI 64Mbyte~ブートローダ・カーネル・mini ルートシステム
microSD2Gバイト~32Gバイトのメモリカード対応(標準添付無し)

オンボードROM (QSPI ROM)にブートローダ、カーネル、miniルートシステム(read-onlyなLinux)をインストールし起動することができる。この場合 microSD は任意のデータ領域として使用できる。microSD無しでも動作する。

オンボードROM のブートローダが立ち上がった後、microSDに収録されているLinuxを起動することもできる。

カスタム方法など詳しくは「組込みLinuxガイド」を参考の事

オンボードQSPI-ROMの書き換え

オンボードROM(QSPI NOR FLASH) の各パーティションの役割

flash_map1.png

QSPI NOR FLASH開始アドレス長さ使用目的
/dev/mtdblock000x80000SPI_LOADER
/dev/mtdblock10x800000x580000u-boot (u-bootの環境変数記憶を含む)
/dev/mtdblock20x6000000x600000kernel
/dev/mtdblock30xC000000x3400000rootfs (jffs2の特性上、書き換え時は 0xFFで一度全部埋めてください)

起動時のメッセージで ubootのビルド日付を確認します

U-Boot 2013.01.01-gcb82c56-dirty (Nov 02 2017 - 22:20:45)

2017/11/2 より以前のバージョンの場合、まずは ubootを書き換えてください。
2020/11/20 以後の場合、 mtd0, mtd1 を書き換える必要はないので、mtd2 kernel まで飛ばしてください。

mtd1 uboot

作業全体の流れは以下の通りです。

screen1.png

ubootのコマンドライン => に対して以下の4行をコピペします

setenv mtd1_start  '0x80000'
setenv mtd1_length '0x580000'
setenv loadaddr '0x60000000'
sf probe 0

microSD カード内のファイル名を表示 (fatls mmc 1:1)

=> fatls mmc 1:1
            system volume information/
    13772   mtd0_spl_20180130.bin
   225752   mtd1_uboot_20171102.bin
   223608   mtd1_uboot_20201120.bin
  3779464   mtd2_uimage+dtb_cat845_20190924
 27197440   mtd3_jffs2_cat845_20190924_64k.bin
 27262976   mtd3_jffs2_cat845_20190924_256k.bin

mtd1_uboot_日付.bin の最新日付のファイル名をコピーします

メモリにロード

=> fatload mmc 1:1 ${loadaddr} mtd1_uboot_20201120.bin

mtd1領域の消去と書き換え

=> sf erase ${mtd1_start} +${filesize}
=> sf write ${loadaddr} ${mtd1_start} ${filesize}

再起動

=> reset

screen2.png

ubootのビルド日付が変わったことを確認する

uboot変数の再初期化と mac アドレスの書き込み

=> printenv ethaddr
ethaddr=00:03:82:ff:ff:ff

下位3バイトのff:ff:ff部分は基板固有の数値です。これを確認します。

=> env default -a

uboot変数が全て初期化されます(macアドレスが消えてしまいます)

=> setenv ethaddr '00:03:82:ff:ff:ff'

先ほど調べたmacアドレスを再設定します。

=> saveenv

環境変数の保存

mtd2 kernel

screen3.png

microSD カード内のファイル名を表示 (fatls mmc 1:1)

=> fatls mmc 1:1
            system volume information/
    13772   mtd0_spl_20180130.bin
   225752   mtd1_uboot_20171102.bin
   223608   mtd1_uboot_20201120.bin
  3779464   mtd2_uimage+dtb_cat845_20190924
 27197440   mtd3_jffs2_cat845_20190924_64k.bin
 27262976   mtd3_jffs2_cat845_20190924_256k.bin

mtd2_uimage+dtb_cat845_日付.bin の最新日付のファイル名をコピーします

メモリにロード

=> fatload mmc 1:1 ${loadaddr} mtd2_uimage+dtb_cat845_20190924

mtd2領域の消去と書き換え

=> run update_mtd2

mtd3 rootfs

起動時のメッセージで FLASH ROMのセクタサイズを確認します

DEVICE CYPRESS と表示される場合 ... 256Kバイト/セクタ  極初期出荷のCAT845のみ
DEVICE MICRON と表示される場合 ... 64Kバイト/セクタ 

screen4.png

microSD カード内のファイル名を表示 (fatls mmc 1:1)

=> fatls mmc 1:1
            system volume information/
    13772   mtd0_spl_20180130.bin
   225752   mtd1_uboot_20171102.bin
   223608   mtd1_uboot_20201120.bin
  3779464   mtd2_uimage+dtb_cat845_20190924
 27197440   mtd3_jffs2_cat845_20200131_64k.bin
 27262976   mtd3_jffs2_cat845_20200131_256k.bin

mtd3_jffs2_cat845_日付_64k.bin の最新日付のファイル名をコピーします。
CYPRESSの場合は ‗256k.bin を使ってください。ファイル名が違う以外の手順は同じです。

メモリにロード

=> fatload mmc 1:1 ${loadaddr} mtd3_jffs2_cat845_20200131_64k.bin

mtd3領域の消去と書き換え

=> run update_mtd3

起動メディアの変更

オンボードROM (QSPI-FLASH)からの起動に切り替える

=> run boot_from_mtd

microSDからの起動に切り替える

=> run boot_from_sd
=> reset               (またはリセットスイッチ(SW2)を押して再起動する)

現在の起動rootfsを調べる方法

u-bootのコマンドラインにて printenv を実行し bootargs= のさらに root= を調べる

=> printenv
... 略 ...
bootargs=console=ttySC10,115200 console=tty1 ignore_loglevel ro rootfstype=ext4 root=/dev/mmcblk0p2 rootwait vmalloc=384M
root=/dev/mmcblk0p2          ... mmcblk0p2 は microSD カード0 の partition2 を意味する
root=/dev/mtdblock3          ... mtdblock3 は オンボードFLASHの partition3 を意味する

関連

Last-modified: 2023-10-03 (火) 16:15:57 (197d)