超小型SBC『LicheePi Nano』を触る! その4 〜SPIフラッシュ内蔵OSバックアップ編〜
今回はLicheePi nanoボードに搭載されたSPIフラッシュメモリに内蔵されたOSのバックアップの取り方を紹介します。 普通の用途であれば、microSDにOSを書き込んで使用すれば容量も確保できて良いですが本格的な組込み用途にはSPIフラッシュからの起動が必須になってきて、バックアップが欲しくなったのでまとめてみました。
記事シリーズ
- 超小型SBC『LicheePi Nano』を触る! その1 〜セットアップ編〜
- 超小型SBC『LicheePi Nano』を触る! その2 〜microSDからOS起動・カーネルビルド編〜
- 超小型SBC『LicheePi Nano』を触る! その3 〜GPIO操作(Lチカッ!)編〜
注意事項
今回の記事の内容を実践した場合、最悪LicheePi nanoが起動できなくなることがあるので実践は自己責任でお願いします。
機器の破損等で記事筆者及び当社は一切の責任を負い兼ねます。
また、筆者の開発環境はMacBookなのでWIndowsやLinuxでの方法は説明しません。
学習内容
- SPIフラッシュの読み書きをできるようにする
- LicheePi nanoOSのバックアップをとる
事前実践準備
- 前回までの記事を確認
- LicheePi Nano本体
- PlatformIO(シリアル通信ソフトならなんでも良い)<- 今回から変更
- Linuxの基礎知識
- テスター(導通確認できる物)
- SPIフラッシュリードライタ
本記事で利用するソフトウェア
1. w25q128(SPIフラッシュ)について
シリーズ記事第一回のハードウェア構成でも説明しましたが、LicheePi nanoにはw25q128(Winbond 25Q128FVSG)
というSPIフラッシュが搭載されており、OSが書き込まれています。
このSPIフラッシュはJEDECという半導体規格に基づいているため、調べるといくらか情報が見つかります。
今回はこのJEDEC
規格に対応したリードライタを見つけたので、利用していきます。
2. 機材準備
前章で紹介したリードライタ及びクリップは以下のリンクから購入できます。
https://www.amazon.co.jp/dp/B07W7RQ53X
リードライタ本体は500円程で購入できますが、今回SPIフラッシュが基盤に実装されているので接続するためのクリップが必要です。
このクリップが本体より高いので他に方法があればと思います...

まずはクリップとリードライタを接続します。
下の写真の部品を接続してからリードライタに接続します。

この二つが接続できたら次はリードライタ本体に接続します。
この接続は絶対に間違えないようにしましょう。
リードライタ本体の背面にも接続例が載っているので確認して接続します。

次に、クリップがどのピンにつながっているかを確認します。
筆者は以下の写真のようにテスターの導通確認モードで確認しました。
クリップには番号や目印がないので、1番の場所に目印をつけています。

ここまでできたら、LicheePi nanoボードとの接続です。
ボードのSPIフラッシュの1番ピンは丸があるところなので、下の写真にクリップの印がくるように接続します。

クリップでの接続は賛否があり、耐久性や接続の安定性に声が上がっているようです。
下の写真を参考にSPIフラッシュとクリップを正しく接続します。


ちゃんと接続できていれば、機器の準備は完了です。
3. ドライバ・ソフトウェア準備
次にパソコンでの作業でリードライタを使用するためのドライバと、ソフトウェアをインストールします。
筆者はMacBookで作業したので、その他のOSでの作業方法を記載しませんのでご了承ください。
まずはドライバのインストールをするために、以下のリンクから自分の環境にあったドライバを選択してインストールします。
次にリードライタを使用するためのソフトウェアであるFlashrom
をインストールします。
MacBookでのインストールは非常に簡単で、Homebrewからインストールできます。
以下のコマンドでインストールしましょう。
$ brew install flashrom
$ flashrom -v
インストールできたら、リードライタをPCに接続して以下のコマンドでリードライタが認識できているか確認します。
$ flashrom -p ch341a_spi
結果:
$ flashrom -p ch341a_spi flashrom v1.1 on Darwin 19.2.0 (x86_64) flashrom is free software, get the source code at https://flashrom.org Calibrating delay loop... OK. libusb: info [darwin_claim_interface] no interface found; setting configuration: 1 No EEPROM/flash device found. Note: flashrom can never write if the flash chip isn't found automatically.
上の結果のように表示されたらリードライタが認識されている証拠です。
これでソフトウェアのインストールも終了したので、ついにバックアップをしていきます。
4. バックアップを取る
さて、やっと準備ができたのでバックアップを取っていきます。
全ての接続とPCからリードライタが認識されているのを確認したら、以下のコマンドでSPIフラッシュからの読み込みが開始されます。
$ flashrom -p ch341a_spi -r 任意のディレクトリ/rom.bin
結果:
$ flashrom -p ch341a_spi -r ~/Downloads/aaa.bin flashrom v1.1 on Darwin 19.2.0 (x86_64) flashrom is free software, get the source code at https://flashrom.org Calibrating delay loop... OK. libusb: info [darwin_claim_interface] no interface found; setting configuration: 1 Found Winbond flash chip "W25Q128.V" (16384 kB, SPI) on ch341a_spi. Reading flash... done
コマンドが終了して上の結果のように表示され、指定した任意のディレクトリにrom.bin
があるのを確認できたらバックアップが完了です。
しかし、まれに一部のデータが間違えて読み出されている可能性があるようなので複数回バックアップを取って、それらをdiff
コマンド等で違いがないかを確認した方がよさそうです。
もしちゃんとバックアップが取れているか気になる場合は、以下のコマンドでSPIフラッシュのデータを消してからバックアップを書き込んでOSが起動するかを確認しましょう。
$ flashrom -p ch341a_spi -e $ flashrom -p ch341a_spi -w 書き込むbinファイル
筆者環境でのリードライタの読み書き時間を計測してみたので、参考にしてみてください。
読み込み | 書き込み | 削除 |
---|---|---|
約2分 | 約7分30秒 | 約8分30秒 |
まとめ
- JEDEC規格のSPIフラッシュからデータを読み書きできた
- LicheePi nanoの工場出荷時OSのバックアップを取れた
- 次回はSPIフラッシュ用のOSをビルドしてOSを換装してみる
コメント
コメントを投稿