.. _dev_overview: 上位机工具 ====================== DFU下载打包镜像 --------------------------- 设置芯片板,进入DFU模式:4个拨码开关,SW0~SW3拨向OFF方向。 拨码开关 SW0~3 .. raw:: latex \newpage 连接串口 ~~~~~~~~~~~ 选择 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”按钮完成写入。 .. raw:: latex \newpage 自动打包与下载 ------------------- 首先需连接串口,再单击菜单项File->Load Package Configuration File to Download加载自动打包下载的配置文件,完成固件自动下载及eFuse写入对称密钥及不对称公钥,下载前会跳出窗口要求输入下载地址,并单击确认后开始下载。 |auto_package_download| |set_download_address| .. raw:: latex \newpage 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 | | +------------+-------------------------------------------------------------------------------------------+ .. |asymm_key_pem| image:: /assets/images/sdk/asymm_key_pem.png .. |cfg_gen| image:: /assets/images/sdk/cfg_gen.png .. |cfg_gen_info0| image:: /assets/images/sdk/cfg_gen_info0.png .. |cfg_gen_info1| image:: /assets/images/sdk/cfg_gen_info1.png .. |cfg_gen_info2| image:: /assets/images/sdk/cfg_gen_info2.png .. |usart_to_connect| image:: /assets/images/sdk/usart_to_connect.png .. |usart_connect_done| image:: /assets/images/sdk/usart_connect_done.png .. |cryp_mode| image:: /assets/images/sdk/cryp_mode.png .. |upper_main| image:: /assets/images/sdk/upper_main.png .. |load_firmware| image:: /assets/images/sdk/load_firmware.png .. |load_symm_key| image:: /assets/images/sdk/load_symm_key.png .. |hex_string| image:: /assets/images/sdk/hex_string.png .. |load_asymm_key| image:: /assets/images/sdk/load_asymm_key.png .. |version_addr| image:: /assets/images/sdk/version_addr.png .. |package_downto| image:: /assets/images/sdk/package_downto.png .. |frtdec_config| image:: /assets/images/sdk/frtdec_config.png .. |secure_bootenabled| image:: /assets/images/sdk/secure_bootenabled.png .. |one_key_package| image:: /assets/images/sdk/one_key_package.png .. |board_dfu| image:: /assets/images/sdk/board_dfu.png .. |fpga_soft_reset| image:: /assets/images/sdk/fpga_soft_reset.png .. |usart_download| image:: /assets/images/sdk/usart_download.png .. |dfu_efuse_program| image:: /assets/images/sdk/dfu_efuse_program.png .. |auto_package_download| image:: /assets/images/sdk/auto_package_download.png .. |set_download_address| image:: /assets/images/sdk/set_download_address.png .. |board_brom| image:: /assets/images/sdk/board_brom.png .. |default_gui_parameters| image:: /assets/images/sdk/default_gui_parameters.png .. |recover_package| image:: /assets/images/sdk/recover_package.png .. |secure_boot| image:: /assets/images/sdk/secure_boot.png .. |click_toconfiguration| image:: /assets/images/sdk/click_toconfiguration.png .. |flash_configuration| image:: /assets/images/sdk/flash_configuration.png .. |efuse_map_configuration| image:: /assets/images/sdk/efuse_map_configuration.png .. |Bin_efuse_program| image:: /assets/images/sdk/Bin_efuse_program.png .. |Package_Multiple| image:: /assets/images/sdk/Package_Multiple.png .. |configure_multiple| image:: /assets/images/sdk/configure_multiple.png