Trezorの情報は本家(SatoshiLab)がCreative Commons CC BY-SA 4.0 licenseで公開してます
(これ重要^^)
Aliexpressに発注した1.3"OLEDはコントローラーがSSD1306/1309ではないようで旧正月にもかかわらず別の(0.98")を再発注^^;
...で間が空くので今日はBuild環境を試してみます
本家からバイナリが落とせるので、MCUがまんま一緒だったら問題無いのですがけちって微妙に違うのでそのへんの影響も調べたいかと^^;
因みに例のKitの説明によると以下の様なコマンドで落とせます、バイナリ
wget -O fw.bin https://wallet.trezor.io/data/firmware/trezor-1.5.2.bin
でBuildはやっぱりLinux(Ubuntu)ということでVirtualBoxに16.04LTSを入れます、64bit Desktop
本家の手順をなぞる
いきなりDockerをインストールしろと言われます...VMいれちまったよ
私の理解ではDockerは各インスタンス毎にゲストOSとかを入れなくてよくて、色んなシステムを動かす場合にその部分を共有できるからHost側のオーバーヘッドが軽い...
みたいな^^;
なのでVM入れてその上にDockerはあんまりな気もしますが、開発用のLinux機を準備するのが面倒なのでDockerの勉強がてらこれで良しとします
なのでDocker Community Edition for Ubuntuを入れます(16.04はサポートされてます)
古いDockerをアンインストールせよとのことなので言いなりにやります
どうやら入ってなかったみたい
aptでインストールする準備
でDockerの公式GPG Keyを足します
確認します、大丈夫
Stableのrepoを追加します
sudo apt-get updateをしてからDocker CEをインストール
...
でようやくTrezorのfirmwareのGitリポジトリをクローンしてBuildのスクリプトを実行します(まずbootloaderから)
Docker daemonがいないと怒られました^^;(プロセスは生きています)
これはUbuntuを再起動すれば治るとのことなのでrebootしてcdからやり直し
permissionでけられました、ユーザーをgroupに追加するかsuで実行するか
前者にします
Groupはもうあったようなので自分を追加、log off/log onします
またcdから実行し直し、今度はOK^^
...
...
BootloaderのBuild完了!、32KB位ですな、Buildスクリプト起動時にバージョン指定しなかったので最新版が出来ているはず
ではこの調子でFirmwareをばBuild、またバージョン指定なしで
...
公式の出しているFW Fingerprint一覧はココのjsonファイルに入ってるとのこと
この時点(2018/2/16)の最新は1.6.0、このバイナリをダウンロードしてFingerprintを計算して自分でBuildしたバイナリのFingerprintと一致を確認...
...合ってないし...
...多分、1.6.0をBuild後に公式が何かをcommitをしたのでより新しいFWが出来ているということか...
なのでもう一度1.6.0を指定して再Build^^;
...
...ん、1.6.0指定でBuildしたのにFingerprintが違う...orz
キリが無いので結論を先に書くと、Git clone後ローカルで1.6.0をcheckout後にBuildスクリプトを走らせるとFingerprintの一致したバイナリが作成できました
vendorサブディレクトリ以下にprotol buffer comilerやら他のライブラリを他のGitリポジトリからバージョン指定で取り込んでおり、なんとなくそのあたりがうまくないみたいな
...何はともあれ、思ったように(?^^;)bootloaderとfirmwareがbuild出来たのでまずはこれでよしとしましょう^^;
この後は本家のリポをforkして、LibOpencm3のSTM32F2用のクロック設定部分をF1用に改変して120MHz --> 72Mhzに
USBのクロックも120MHzベースになっていそうなので72MHzベースに(=72MHz/1.5 とか)にしておかねば...とか
OLEDが来るのが再発注と春節の関係で送れそうなのでSTM32の復習でもするか...という感じです