Утилита командной строки bflb_fw_post_proc из Bouffalo SDK [1] предназначена для обновления информации корректного заголовка загрузчика (bootheder), а также шифрования и подписи firmware. Для этой цели необходимо указать несколько параметров:
--chipname: модель чипа, для которого выполнена сборка firmware. --brdcfgdir: директория с конфигурацией используемой вами платы (board config), это используется для копирования файлов наподобие boot2 в директорию создания образа. --imgfile: файл образа, который вы хотите обработать, ',' можно использовать для разделения на несколько файлов, и '*' можно использовать для соответствия только одному файлу. --key: ключ AES, когда вы хотите зашифровать образ AES CTR. --iv: AES iv, когда вы хотите зашифровать образ AES CTR. --xtsmode: разрешение режима xts, когда вы хотите зашифровать образ AES xts, и ваш чип должен это поддерживать. --privatekey: приватный ключ в формате ecc-256 pem. --publickey: публичный ключ в формате ecc-256 pem.
[Примеры использования]
См. examples/wifi/sta/wifi_tcp, bl616:
No secure boot:
Шаг 1: "cd examples/wifi/sta/wifi_tcp"
Шаг 2: "make"
Шаг 3: "bflb_fw_post_proc --chipname=bl616 --brdcfgdir=bsp/board/bl616dk/config --imgfile=./build/build_out/wifi_tcp_bl616.bin"
Secure boot with command line:
Шаг 1: "cd examples/wifi/sta/wifi_tcp"
Шаг 2: "make"
Шаг 3: "bflb_fw_post_proc --chipname=bl616 --brdcfgdir=bsp/board/bl616dk/config --imgfile=./build/build_out/wifi_tcp_bl616.bin --key=000102030405060708090A0B0C0D0E0F --iv=100102030405060708090A0B00000000 --privatekey=privatekey_uecc.pem --publickey=publickey_uecc.pem"
Secure boot with encrypt and sign server:
Шаг 1: развернуть сервер шифрования и подписи с bflb_fw_post_proc
Шаг 2: "cd examples/wifi/sta/wifi_tcp"
Шаг 3: "make"
Шаг 4: выгрузить build/build_out/boot2_xxx.bin на сервер (опционально: если boot2 не поменялся, и уже зашифрован и пописан, то этот шаг пропустите)
Шаг 5: на сервере выполните "bflb_fw_post_proc --chipname=bl616 --imgfile=boot2_xxx.bin --key=000102030405060708090A0B0C0D0E0F --iv=100102030405060708090A0B00000000 --privatekey=privatekey_uecc.pem --publickey=publickey_uecc.pem"
Шаг 6: загрузите boot2_xxx.bin с сервера, и перезапишите оригинальный файл.
Шаг 7: выгрузите build/build_out/wifi_tcp_bl616.bin (опционально: если boot2 не поменялся, и уже зашифрован и пописан, то этот шаг пропустите)
Шаг 8: на сервере выполните "bflb_fw_post_proc --chipname=bl616 --imgfile=wifi_tcp_bl616.bin --key=000102030405060708090A0B0C0D0E0F --iv=100102030405060708090A0B00000000 --privatekey=privatekey_uecc.pem --publickey=publickey_uecc.pem"
Шаг 9: загрузите wifi_tcp_bl616.bin с сервера и перезапишите оригинальный файл.
Шаг 10: make flash
Шаг 11: make efuse
[Другие опции]
multi-files: "bflb_fw_post_proc --chipname=bl616 --imgfile=./build/build_out/helloworld_bl616.bin,./build/build_out/boot2_*.bin --key=000102030405060708090A0B0C0D0E0F --iv=100102030405060708090A0B00000000"
--edbg_mode: установить режим отладки (set dbg mode,open/pswd/close); например:--edbg_mode=pswd --epswwd: указывается hex-строка пароля JTAG; например:--epswwd=1234567890ABCDEF --ehbn_sign: разрешение/запрет проверки подписи, когда используется HBN mode wakeup; например:--ehbn_sign=true --eanti_rollback: разрешение/запрет функции anti-rollback; например:--eanti_rollback=true --ejtag_close: закрыть порт jtag; например:--ejtag_close=true --edata: содержимое данных efuse:start,hex_str; ex:0x10,000102030405060708
[Ссылки]
1. bouffalolab/bouffalo_sdk. |