上位机工具

DFU下载打包镜像

设置芯片板,进入DFU模式:4个拨码开关,SW0~SW3拨向OFF方向。

拨码开关 SW0~3

连接串口

选择 UART 的 com 端口并连接,只有连接成功才能进行 DFU 烧写,失败则需进行软件复位操作后(按下 BTN1 按键,不同板子位置略微有差别)再次连接,若多次无法连接成功,请检查 com 口是否选对或确认 FPGA 板子烧写了 bit/mcs 文件或检查 boot 脚是否设置为 DFU 模式。

usart_to_connect

usart_connect_done

芯片板软件复位按键

下载可执行二进制文件

选择“Device program”下载模式,设置Block size大小:4096、2048或1024(如下图标记1,设置为4096),设置可执行二进制文件下载的地址(如下图标记2,其地址为flashxip编译模式链接脚本的地址),加载可执行二进制文件(如下图标记3,单击“Open”按键加载),最后单击“Program”按钮(如下图标记4),弹出确认框,点击确认开始下载,Status状态栏及进度条会指示下载进度。

usart_download

DFU eFuse Program

需将安全启动用到的对称加密密钥和不对称加密公钥写入eFuse指定的地址区间。

eFuse编程

通过SDK的eFuse程序将对称加密key写到指定的eFuse group地址(与打包固件流程3的配置保持一致),以及打包所用到的验签公钥写入到指定eFuse地址区间,同时使能安全启动。

DFU eFuse program

用打包生成的eFuse Program配置文件,直接DFU写入。首先需连接串口,再如下图选择“eFuse Program并单击“Open”按钮加载 eFuse Program 配置文件后,再点击“Write”完成密钥的烧写。

dfu_efuse_program

eFuse write

通过DFU完成eFuse的单word写入,首先需连接串口,再如上图选择eFuse Program,填入Word Data 和 eFuse Word Index 并单击“Write”按钮完成写入。

自动打包与下载

首先需连接串口,再单击菜单项File->Load Package Configuration File to Download加载自动打包下载的配置文件,完成固件自动下载及eFuse写入对称密钥及不对称公钥,下载前会跳出窗口要求输入下载地址,并单击确认后开始下载。

auto_package_download

set_download_address

BROM启动验证

将拨码开关SW0拨向非FPGA芯片方向,并按下软件复位按键(BTN1按键):

board_brom

等待解密、验签通过后会启动运行原始可执行二进制文件的应用程序。

默认配置参数保存

针对非frtdec模式或frtdec模式,选择”CM”或”SM”,可以保存默认的参数配置,包括固件版本、安全版本、启动地址、eFuse group、下载地址以及frtdec region等。

单击Save->Save GUI Default Parameters将以文本形式保存,下次运行上位机就会使用该默认参数。

注意: 保存的文件名是固定的,存放路径必须与上位机可执行文件在同一个层级。

default_gui_parameters

恢复打包参数配置

单击File->Recover from Package Configuration File 加载前面生成的自动打包与下载的配置文件可恢复配置。

recover_package

Secure Boot配置

  1. Second Image备份镜像打包

    打包前需勾选Second Image 以及设置偏移地址

  2. 如果要锁定Bootloader,打包时可勾选Lock Bootloader

  3. 量产模式,打包时勾选Life Cycle,表示安全启动时必须验签

  4. 固件检测,打包时需勾选Plaint Check,表示验签解密后会对固件明文进行校验。

    secure_boot

Flash打包头配置

对于需要配置打包头Flash的相关信息,打包前可单击“Click to”或点击进入eFuse Write File Configuration页面进行配置。

click_toconfiguration

该配置只会对打包头生效。

flash_configuration

eFuse map位域配置

详细说明见 eFuse map excel,其可写的位域通过上位机的 eFuse Write File Configuration 页面进行配置,打包时会生成到 eFuse program 配置文件中。

其中 flash 相关的位域需单独生成,配置好后单击“Generate”生成或单击“eFuse Write”直接通过DFU写入。其可配置的值为非 rsv 值。

efuse_map_configuration

可执行二进制文件转eFuse配置文件

eFuse map的ROM Patch数据可执行二进制文件转eFuse Program配置文件,点击Save->Bin to eFuse Program File,转成 eFuse Program配置文件方便通过上位机 eFuse write 将 rom patch 数据写入 eFuse。

Bin_efuse_program

多镜像打包及下载

单击Save->Package Multiple Firmware 会弹出如下页面,当前镜像设置好下载地址及加载完后,可单击“Add”新增下一份镜像的配置,最大支持16个。所有镜像加载完后单击“Package”进行打包。

Package_Multiple

若误点“Add”新增镜像配置,需再单击“Delete”删除,否则打包会报错。

configure_multiple

下载时,参考第三章的第2小节:下载可执行二进制文件。除了下载地址无需关心,其他操作保持一致。

附录:上位机操作错误代码

错误代码

说明

0x10300000

ED25519密钥问题:长度不对、不合法等。检查下对称密钥是否与所选算法一致,以及是否被篡改过等

0x10300001

0x10300002

0x10300003

0x10300030

SM2密钥问题:长度不对、不合法等。检查下对称密钥是否与所选算法一致,以及是否被篡改过等

0x10300031

0x10300032

0x10300033

0x10300034

0x10300035

0x10300036

0x10300037

0x10300038

0x10300039

0x1030003a

0x1030003b

0x1030003c

0x10300050

RSA密钥问题:长度不对、不合法等。检查下对称密钥是否与所选算法一致,以及是否被篡改过等

0x10300051

0x10300052

0x10300053

0x10300054

0x10300055

0x10300056

0x10300057

0x10300070

加密问题,先排除密钥,IV等值的配置是否有异常。

0x10300071

0x10300072

0x10300073

0x10300074

0x10300075

0x10300076

0x10300077

0x10300078

0x10300079

0x1030007a

0x1030007b

0x1030007c

hash digest计算问题,先检查排除参数配置问题。

0x1030007d

0x1030007e