トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

XMOS の XS1-G4,L1 であそぶ - その6

[電子工作]

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 であそぶ - その5XMOS の XS1-G4,L1 であそぶ - その7>>

 カテゴリ : もくしいゲームレシピコンピュータ雑文生活電子工作おいしい店マップ

                  Topページへ | もてないSNS「もくしい」