はじめに
1500円 ZYNQ 基板( EBAZ4205 )で、自作 PetaLinux ブートイメージを LAN で転送して、NAND フラッシュに書き込む方法を解説します。
はんだ付けを、できるだけしないで済む方法で実現します。
(残念ながら、ゼロにはできない)
内容説明
EBAZ4205 には、マイニング装置の PetaLinux ブートイメージが書き込まれています。
俺専用に構築した自作 PetaLinux で起動させるには、下記2つのどちらかの方法があります。
・microSD ソケットを実装して、microSD からブートする
・NAND フラッシュに新ブートイメージを上書きしてブートする
microSD を使う場合、ソケットを実装しないといけません。
表面実装のはんだ付けが得意でない人には、敷居が高いです。
ハードウェアが本業でない方でも使えるよう、NAND に直接ブートイメージを書き込む方法をまとめました。
とはいえ、コンソール接続用のシリアルポートは必要です。
ヘッダピンのはんだ付け作業がありますが、スルーホールなので比較的簡単です。
書き込むブートイメージは、前回の記事 1500円ZYNQ基板でNANDブートの実現 で作成しました。
下記に置いてあります。
https://drive.google.com/file/d/1_OYSLhidtBTWX3jeCpH2vODiX1Rf0r_9/view?usp=sharing
使用環境
- Windows10 Pro (20H2)
- tftpd64.exe (4.62)
- EBAZ4205
作業の流れ
- tftp サーバー (tftpd64) をインストールします。
- tftp 提供フォルダにブートイメージ BOOT_NAND.bin を用意します。
- EBAZ4205 の u-boot で、tftp を使って BOOT_NAND.bin を DDR に読み込みます。
- NAND をフラッシュ(初期化)して、DDR に読んでおいた BOOT_NAND.bin を書き込みます。
- 再起動すると、書き込んだブートイメージで起動します。
実際の作業
1. tftpd64 のインストール
https://tftpd64.software.informer.com/
から、ダウンロードします。
適当な場所にインストールしたら起動して、提供するフォルダと、IP アドレスを選択します。
2. ブートイメージの用意
設定した tftp 提供フォルダに、ブートイメージ BOOT_NAND.bin をコピーしておきます。
Show Dir ボタンを押すと、提供中のフォルダにあるファイルが確認できます。
3. u-boot でブートイメージを転送
EBAZ4205 を起動したら、3秒以内に "d" キーを押して、u-boot で止めます。
u-boot のプロンプトになりますので、下記で IP アドレスを設定します。
IP アドレスはご使用の環境に合わせて、変更してください。
env delete ipaddr
env set ipaddr 192.168.1.25
env delete serverip
env set serverip 192.168.1.4
env delete gatewayip
env set gatewayip 192.168.1.1
次に、tftpboot コマンドでブートイメージを取ってきます。
DDR の 0x100_0000 から 70MB ほどを使用します。
(前の方で u-boot が動いているので、後ろの空き領域を使う)
tftpboot 0x1000000 BOOT_NAND.bin
4. NAND の初期化と書き込み
転送が終わったら、NAND フラッシュを消去します。
nand erase.chip
次に、DDR から NAND へ書き込みを行います。
nand write 0x1000000 0x0 0x46a0000
5. 起動テスト
u-boot で reset コマンドを打って再起動します。
(または、電源の再投入)
うまく NAND から起動できたら、完成です。
NAND 書込みに失敗して、u-boot すら起動できなくなってしまった場合、下記どちらかで NAND に書き込んで復活してください。
・microSD で起動する
・ダウンロードケーブルを使って u-boot を書き込む
まとめ
EBAZ4205 で、LAN から新ファームウェアを書き込みすることができました。