こんにちは。AndGoのハードウェア担当の片山です。
前回はオープンソースのハードウェアウォレットのColdcard (https://coldcard.com/) のハードウェアについて解析してきました。カナダ初のハードウェアウォレットで,Micro SDカードへのバックアップできることが特徴的です。オープンソースのハードウェアウォレットでありながらATECC608Aというセキュアチップを搭載しています。今回はColdcardのGitHubリポジトリを探検し,ファームウェアについて見ていきたいと思います。早速リポジトリにアクセスしてみます。
早速リポジトリ(https://github.com/Coldcard)にアクセスしてみます。REAME.mdが表示されますので下の方のCode Ordanizationのセクションに移動します。各ディレクトリの説明が書かれています。
shared・・・シミュレータバージョンとマイコンバージョンに共通のコードが入っています。開発スピードを上げるためにテスト用にMacOS上でシミュレータを動かすこともできるもので,マイコンバージョンは実際のColdcard用です。ここにはこれらのバージョンに共通で使用するコードが入っています。主にPythonで書かれています。詳細については後述。
unix・・・シミュレータバージョン固有のコードが入っています。unixとありますが,MacOS上で動きます。
stm32・・・マイコンバージョン固有のコードが入っています。ビルドするとバイナリが生成され,Coldcardに書き込むことができます。
testing・・・ユニットテストのためのコードが入っています。
external・・・さまざまな外部モジュールが入っています。git cloneしてくると,ここだけで5.3GBの容量を消費しますので注意!
stm32/bootloader・・・出荷時に書き込まれるハードウェア固有のコードです。
hardware・・・回路図や部品リストです。前回【2022/02/02】紹介しました。
unix/work/MicroSD・・・シミュレータでSDカードを再現する部分です。
シミュレータでCOLDCARDを動かしてみる
シミュレータがついているので早速動かしてみました。基本的にはREADME.mdの手順にそって作業を進めるとMacOS用にビルドされてシミュレータが動きますが,手元の環境ではビルドに失敗してしまいました。
一つ目はffiというライブラリがうまく読み込めていないようでした。どうやらrubyに関係するもののようです。自分自身rubyは使ったことがないのですが,下記のコマンドでこのエラーは回避できました。