|
CAT845_内蔵ROM初期化手順 †この文書の書式について $ 記号は一般ユーザ(本機では kaihatsu )で操作することを示します。 # 記号はrootユーザで操作することを示します。一般ユーザからは su コマンドで rootユーザに変わってください。 ¥ 記号はフォントによってバックスラッシュ \ で表示されることもあります
必要なものをそろえる †ハードウェア
ソフトウェア
ブート可能microSDの準備 †microSDイメージファイル を開き CAT845_JESSIE_2G_20190924.zip をダウンロードする。日付部分はその時点での最新版を選ぶ。 zip圧縮を展開すると約1.8Gバイトの microSDイメージファイルになる。 ご用意いただくmicroSDのサイズと、およそできる事の一覧
2Gバイト以上のmicroSDを用意する。大きい分には問題ない。 dd for windows を使って CAT845_JESSIE_2G_20190924.ddi (日付はその時点で異なる)を microSDに書き込む。 dd for windows は 右クリック>管理者として実行を選ぶこと。 Linux上からの書き込み方法(CAT845を含む) 日付は書き換えてください。 # cd /tmp # wget http://download.si-linux.co.jp/cat845/sdimage/CAT845_JESSIE_2G_20190924.zip # unzip /tmp/CAT845_JESSIE_2G_20190924.zip CAT845_JESSIE_2G_20190924.ddi -p | dd of=/dev/mmcblk0 bs=1M (CAT845から見て microSD は /dev/mmcblk0 に見えます。他のLinuxでは適宜書き換えてください) 2GバイトのmicroSDへイメージを書き込んだ場合、次のように2つのパーティション(p1, p2)ができる。 microSDのうち前半972Mbyte (1+511+460)が使われている。microSDのサイズに依らず後半は未使用で空いている。別紙の手順でp2領域をmicroSDのサイズまで拡張することもできる。 ext2_3_4パーティションの拡大方法 (内蔵ROM初期化作業だけであればこの手順は必要ない) CAT845の立ち上げ †書き込み完了したmicroSDをCN7ソケットに挿入する。
CAT845 CN10 が 3.3V UARTシリアルコンソール入出力である。EK845付属のシリアルUSB変換ケーブルを接続すること。その他のケーブルを使用する場合は次のピン配置を参考のこと
TeraTermを開き、シリアルコンソール(COM x)を開く。 CAT845のROM領域について †本機には2つのROM領域がある
内蔵ROM (QSPI ROM)にブートローダ、カーネル、miniルートシステム(read-onlyなLinux)をインストールし起動することができる。この場合 microSD は任意のデータ領域として使用できる。microSD無しでも動作する。 内蔵ROM のブートローダが立ち上がった後、microSDに収録されているLinuxを起動することもできる。 カスタム方法など詳しくは「組込みLinuxガイド」を参考の事 QSPI内蔵ROMの書き換え †外付けmicroSDからの起動に切り替える †内蔵ROMを書き換えるため、外付け microSD からの起動に切りかえる。 u-bootのカウントダウン時に何かのキーを押しu-bootの起動を停止させて、起動パラメータを microSDからの起動(root=/dev/mmcblk0p2)に書き換える。 Hit any key to stop autoboot: 3 <- カウントダウン終了までに何かキーを押す => u-bootのプロンプトが表示されたら以下をコピペする setenv bootcmd_sd 'fatload mmc 1:1 0x40007fc0 /uimage+dtb_cat845; bootm 0x40007fc0' setenv bootargs_sd 'console=ttySC10,115200 console=tty1 ignore_loglevel ro rootfstype=ext4 root=/dev/mmcblk0p2 rootwait vmalloc=384M' setenv bootcmd_mtd 'sf probe; sf read 0x40007fc0 0x600000 0x600000; bootm 0x40007fc0' setenv bootargs_mtd 'console=ttySC10,115200 console=tty1 ignore_loglevel ro rootfstype=jffs2 root=/dev/mtdblock3 rootwait vmalloc=384M' setenv boot_from_sd 'setenv bootcmd ${bootcmd_sd}; setenv bootargs ${bootargs_sd}; saveenv' setenv boot_from_mtd 'setenv bootcmd ${bootcmd_mtd}; setenv bootargs ${bootargs_mtd}; saveenv' saveenv 内蔵ROMを書き換えるため、外付け microSD からの起動に切りかえる。=> は u-bootのコマンドプロンプトなのでタイプはしない。 => run boot_from_sd => reset resetコマンドの実行またはリセットスイッチ(SW2)を押して Linuxを再起動する。 内蔵ROM(QSPI NOR FLASH) の各パーティションの役割
Linux起動後 /boot に置いてある初期化ファイルにて、 QSPI NOR FLASH(64MByte)を書き換える。 Debian GNU/Linux 8 cat845 ttySC10 cat845 login: root (ユーザ名root) Password: root (パスワードroot ただし画面には表示されない) # mount /boot (microSDの第一パーティション(FAT領域)を /bootにマウント) mtd0,1 は書き換える必要はない # cp /boot/mtd0_spl.bin /dev/mtdblock0 (SPLの書き換え) # cp /boot/mtd1_uboot.bin /dev/mtdblock1 (u-bootの書き換え) # cp /boot/uImage+dtb_cat845 /dev/mtdblock2 (カーネルの書き換え) # cat /proc/mtd dev: size erasesize name mtd0: 00080000 00040000 "loader" mtd1: 00580000 00040000 "uboot" mtd2: 00600000 00040000 "kernel" mtd3: 03400000 00040000 "flash" ^^^^^セクタサイズを確認する セクタサイズが 10000 ... 64Kバイト 40000 .... 256kバイト セクタサイズに合わせて mtd3 のファイルを選択する # flash_erase /dev/mtd3 0 0 (mtd3のイレース 約3分30秒かかる) # cp mtd3_jffs2_cat724_日付_セクタサイズ.bin /dev/mtdblock3 (rootfsの書き換え 約2分弱かかる) # reboot mtd3は必ずflash_eraseで全消去してからcpで書き込んでください。 上記を一括して行うには次をコピペが便利 セクタサイズが 0x1000 64kバイトの場合 date time ( mount /boot -o ro && flash_erase /dev/mtd3 0 0 && cp /boot/uImage+dtb_cat845 /dev/mtdblock2 && cp /boot/mtd3_jffs2_cat845_20190924_64k.bin /dev/mtdblock3 && umount /boot ) または セクタサイズが 0x4000 256kバイトの場合 date time ( mount /boot -o ro && flash_erase /dev/mtd3 0 0 && cp /boot/uImage+dtb_cat845 /dev/mtdblock2 && cp /boot/mtd3_jffs2_cat845_20190924_256k.bin /dev/mtdblock3 && umount /boot ) 内蔵ROMからの起動に切り替える †u-bootのカウントダウン時に何かのキーを押しu-bootの起動を停止させて、起動パラメータを内蔵QSPI NOR FLASH からの起動(root=/dev/mtdblock3)に書き換える。 Hit any key to stop autoboot: 3 <- カウントダウン終了までに何かキーを押す => run boot_from_mtd => 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 を意味する 関連 †自動リンク |