{{category 電子工作}} !!!XMOS の XS1-G4,L1 であそぶ - その6 !!テスト基板 XC-1,XC-2,XK-1,XC-1A などで遊んで気がついたことのメモを書いていきます !!!XC-1A に暗号化したファームウェアを書くには(11.2.2) 友人からの有用な実験レポートをもらったので許可を得て掲載します。 OTP に書き込む際は、くれぐれも注意してください。 ---- 暗号化の手順 参考文献 : Tools User Guide 10章 1) 暗号化キーを作る C:>xburn --genkey keyfile ファイル名"keyfile"のキーを作る。乱数により生成される。 2) 書き込む端末のIDを確認 C:>xburn -l 3) 暗号化のローダをOTPに書き込む C:>xburn --id 0 --lock keyfile --target XC-1A --enable-jtag --disable-master-lock この例では、完全に自閉しないようにしている。(jtag有効、master-lock無効) 4) 暗号化して書き込む C:>xflash --id 0 実行ファイル.xe --key keyfile 5) これで、USBを抜く→刺す と、実行ファイルが起動する。 6) 統合環境は使えるの? と思い、統合環境からrunすると、問題なく起動。 JTAGブートなので、OTPの内容は一切無視されるっぽい。 7) 暗号化キーを指定せずに、xflashしてみる。 C:>xflash --id 0 実行ファイル.xe 書き込み時にエラーは出ず。しかし、当然ながら起動せず。 この状態で、統合環境からrunすると、起動する。 8) OTPを読んでみる。 C:>xburn --read --target xc-1a Reading device... Core 0: 0x00000000: 0x000001ff 0x00000001: 0x918cdc01 (中略) 0x000001ff: 0x1e8db36e 0x00000200: 0x3f3defaa SR : 0x00004020 Core 1: 0x00000000: 0x00000002 0x00000001: 0x7340d801 0x00000002: 0xffffc050 0x00000003: 0x01a88318 * 0x00000059: 0xffffffdf SR : 0x00004020 Core 2: 0x00000000: 0x00000002 0x00000001: 0x7340d801 0x00000002: 0xffffc050 0x00000003: 0x01a88318 SR : 0x00004020 Core 3: 0x00000000: 0x00000002 0x00000001: 0x7340d801 0x00000002: 0xffffc050 0x00000003: 0x01a88318 * 0x0000018e: 0x00000010 SR : 0x00004020 SRにbitが2つ立っている。 セキュアブートと、--disable-global-debugあたりか。 core1の0x59と、core3の0x18eの値は、輸入時点で既に書かれていた。 9) ユーザーにプログラムをメールして、書き込んでもらうには・・・ 10.3章を参照。予め暗号化したバイナリを書き込んでもらう。 先に暗号化する >xflash prog.xe -key keyfile -o image-file それを書き込む >xflash --id 0 --target-file platform.xn --write-all image-file ---- <<XMOS の XS1-G4,L1 であそぶ - その5|XMOS の XS1-G4,L1 であそぶ - その7>>