Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Zynq MPSoC : Secure Boot



QSPIとSDからLinuxをBBRAM内のキーを使ってブートしますr。

まずは、BBRAMにキーを書き込みます。
何故BBRAMにキーを入れるのは、これが参考になるかも


BBRAMにプログラムするためのプログラムを作成し、それをA53に実行させます。
そのためにROMイメージを作らなければいけません。
引用
bbram.bif
{
[fsbl_config] a53_x64
[bootloader] <fsbl>.elf
[destination_cpu=a53-0] <bbram_app>.elf
}
このファイルを使って、ROMイメージを作成します。

引用
  bootgen -image bbram.bif -arch zynqmp -w -o i boot.bin

boot.binをSDカードに書き込み、SDカードからブートできるようにSWを変えます。

PCとシリアルでつなげ、ボードの電源を入れると、
引用
BBRAM programming exit with Status = 0x00000000
BBRAM example for ZynqMP
BBRAM programming exit with Status = 00000000
のようなメッセージが表示され、キーが書き込まれます。

やっとBBRAMにキーが書き込まれました。

ここからはこのキーを使って、LinuxのSecure Bootingです。

引用
{
[aeskeyfile] vncbbram1709.nky
[fsbl_config] a53_x64, bh_auth_enable
[keysrc_encryption] bbram_red_key
[auth_params] ppk_select=0; spk_id=0x00000000
[pskfile] hello_0_SHA3_PSK.pem
[sskfile] hello_0_SHA3_SSK.pem
[bootloader, authentication=rsa, encryption=aes] zynqmp_fsbl.elf
[destination_device=ps, destination_cpu=a53-0, authentication=rsa, encryption=aes] bl31.elf
[destination_device=ps, destination_cpu=a53-0, authentication=rsa, encryption=aes] u-boot.elf
}
キー関連の設定がたくさん増えました。

引用
$ cd images/linux
$ bootgen -image boota53_bbram.bif -arch zynqmp -w -o i boot.bin

zynqmp_fsbl.elf, bl31.elf, u-boot.elfがboot.binにまとめられて、SDカードに書き込み。
Linuxは別途Imageとsystem.dtbをSDカードに書き込みます。

このSDカード内のboot.bin, Image, system.dtbをSQPIにflashcpコマンドで書き込みます。

そして、U-bootでSQPIからブートするように下記のように設定するようです。
引用
ZynqMP>sf probe 0 0 0
ZynqMP>sf read 0x7000000 0x2100000 0x80000
ZynqMP>sf read 0x200000 0x100000 0x2000000
ZynqMP>booti 0x200000 - 0x7000000

結構面倒ですね。