命令行上位机操作流程

使用方法

打开本地命令窗口,路径切到工具可执行文件所在目录,windows 环境下输入:工具名 + 命令;linux 环境下输入:./工具名 + 命令。如打包固件:

也可以不用切换到可执行文件所在目录,直接指定工具名的完整路径。

加载配置文件进行加密打包指令

打包配置文件各参数说明如下,其中除了 firmware_bin 的镜像文件支持路径外,frtdec_cfg 的 key,secure_info 的 iv、key、public_key、private_key 以及 rk 也支持文本路径。并且其路径为相对配置文件的相对路径。

cfg_file_1 cfg_file_2 cfg_file_3

命令

NSPackageTool package -f filepath -o outFileName

  • -f:后面指定配置文件的路径。

  • filepath:配置文件的路径,可以是绝对路径也可以是相对路径,文件类型不做限制,内容格式如上图。

  • -o:后面指定打包后的文件名称,存放路径与配置文件一致,不需要指定文件类型,默认是bin格式。

NSPackageTool package -f filepath -o outFileName -i binFilePath

  • -i:可重新指定被打包的固件文件

注意:命令的顺序不能随意调换顺序

使用举例

  • NSPackageTool package -f D:/NSTools_console/cfg.yaml -o package_printf

  • NSPackageTool package -f ../cfg.json -o package_printf

  • NSPackageTool package -f ./test/cfg.yaml -o package_printf

  • NSPackageTool package -f ../test/cfg.yaml -o package_printf -i ./printf.bin

打包不仅生成打包好的可执行二进制文件,还会生成用于烧写秘钥的 eFuse program 配置文件(文件类型为 yaml)。

注意:打包配置文件已在当前目录下时,不能直接用 -f XXX.yaml,而需用 -f ./XXX.yaml。

不对称密钥对生成

命令

NSPackageTool genkey -a signName -o filename.type

  • -a:algorithm后面指定签名算法,signName 可选 ed25519、sm2、rsa2048 和 rsa4096。

  • -o:后面指定生成的文件名、类型及路径,类型支持 txt(hexstring)、pem 和 der。

注意:命令的顺序不能随意调换顺序。

使用举例

  • NSPackageTool genkey -a ed25519 -o ed25519.txt

    生成的公钥为./ed25519_public_key_gen.txt,私钥为./ed25519_private_key_gen.txt

  • NSPackageTool genkey -a sm2 -o ../keypairs/sm2.pem

    生成的公钥为../keypairs/sm2_public_key_gen.pem,私钥为../keypairs/sm2_private_key_gen.pem

当前版本

NSPackageTool -v 或 version

DFU 下载

获取UART可连接的COM端口

NSPackageTool dfu -i uart -l

  • -i:指定 DFU 通信接口,目前只支持串口。

  • -l:list,列出所有端口。

注意:命令的顺序不能随意调换顺序。

Flash擦写

NSPackageTool dfu -i uart -c/-hc COMx -cmd erase -addr 0x70000000 -sector 4096*n

  • -i:指定 DFU 通信接口,目前只支持串口。

  • -c:connect,串口连接之后发送擦写指令(前提是上一个指令已经发送 handshake 指令),后面接端口名。

  • -hc:connect & send handshake 指令,之后再发送擦写指令,用于复位后进入 DFU 模式初次握手连接,后面接端口名。

  • -cmd:后面接 DFU 指令。

  • -addr:指定起始地址。

  • -sector:指定擦除多少扇区,格式必须为 4096*n。

注意:命令的顺序不能随意调换顺序。

Flash烧写

NSPackageTool dfu -i uart -c/-hc COMx -f ./printf.bin -cmd program -addr 0x70000000 -sector 2048

  • -i:指定 DFU 通信接口,目前只支持串口。

  • -c:connect,串口连接之后发送烧写指令,后面接端口名。

  • -hc:connect & send handshake 指令,之后再发送烧写指令,用于复位后进入 DFU 模式初次握手连接,后面接端口名。

  • -f:后面接可执行二进制文件路径。

  • -cmd:后面接 DFU 指令。

  • -addr:指定起始地址。

  • -sector:指定每次烧写块大小,支持1024、2048和4096。

注意:命令的顺序不能随意调换顺序。

Sram模式烧写

NSPackageTool dfu -i uart -c/-hc COMx -f ./sram.bin -cmd sram -addr 0x08000000 -sector 4096

  • -i:指定 DFU 通信接口,目前只支持串口。

  • -c:connect,串口连接之后发送烧写指令,后面接端口名。

  • -hc:connect & send handshake 指令,之后再发送烧写指令,用于复位后进入 DFU 模式初次握手连接,后面接端口名。

  • -f:后面接可执行二进制文件路径。

  • -cmd:后面接 DFU 指令。

  • -addr:指定起始地址。

  • -sector:指定每次烧写块大小,支持 1024、2048 和 4096。

注意:命令的顺序不能随意调换顺序。

Boot启动

一般sram模式烧写完可执行文件后,进行跳转执行。

NSPackageTool dfu -i uart -c/-hc COMx -cmd boot -addr 0x08000000

  • -i:指定 DFU 通信接口,目前只支持串口。

  • -c:connect,串口连接之后发送烧写指令,后面接端口名。

  • -hc:connect & send handshake 指令,之后再发送烧写指令,用于复位后进入 DFU 模式初次握手连接,后面接端口名。

  • -cmd:后面接 DFU 指令。

  • -addr:指定跳转地址。

注意:命令的顺序不能随意调换顺序。

eFuse Program Write

加载 efuse Program 配置文件批量烧写。

NSPackageTool dfu -i uart -c/-hc COMx -f ./efuse.yaml -cmd efuse

  • -i:指定 DFU 通信接口,目前只支持串口。

  • -c:connect,串口连接之后发送烧写指令,后面接端口名。

  • -hc:connect & send handshake 指令,之后再发送烧写指令,用于复位后进入 DFU 模式初次握手连接,后面接端口名。

  • -f:后面指令配置文件,格式为 yaml。

  • -cmd:后面接 DFU 指令。

注意:命令的顺序不能随意调换顺序。

efuse program配置文件内容格式如下:

eFuse write Single Word

eFuse 单word写入。

NSPackageTool dfu -i uart -c/-hc COMx -cmd efuse -index 128 -val 0x1

  • -i:指定 DFU 通信接口,目前只支持串口。

  • -c:connect,串口连接之后发送烧写指令,后面接端口名。

  • -hc:connect & send handshake 指令,之后再发送烧写指令,用于复位后进入 DFU 模式初次握手连接,后面接端口名。

  • -cmd:后面接 DFU 指令。

  • -index:指定eFuse map中的eFuse word index。

  • -val:要写入的值。

注意:命令的顺序不能随意调换顺序。

多镜像打包及下载

打包命令

NSPackageTool package -i file1path -addr address1 -i file2path -addr address2 … -o outFileName

  • -i:后面指定镜像文件的路径。

  • file1path:配置文件的路径,可以是绝对路径也可以是相对路径,文件类型格式不做要求。

  • -addr:后面指定镜像文件的下载地址。

  • -o:后面指定打包后的文件名称,存放路径与配置文件一致,文件类型默认是 bin 格式。

注意:命令的顺序不能随意调换顺序。

使用举例

NSPackageTool package -i ./fm1.bin -addr 0xa0000000 -i fm2.bin -addr 0xa0004000 -o pck2fm

下载

命令与4.3节一样,不同的是命令指定的下载地址不起作用。

附录:错误代码查找表

错误代码

说明

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