QSPIとSDからLinuxをBBRAM内のキーを使ってブートしますr。
BBRAMにプログラムするためのプログラムを作成し、それをA53に実行させます。
そのためにROMイメージを作らなければいけません。
そのために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カードに書き込みます。
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
結構面倒ですね。