トップ 一覧 検索 ヘルプ RSS ログイン

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

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{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 であそぶ - その5|XMOS の XS1-G4,L1 であそぶ - その7>>