命令行
GProgrammer提供2类命令行程序:GR5xxx_console和GR5xxx_encrypt_signature。
GR5xxx表示芯片系列名称。
- GR5xxx_console可方便用户直接使用命令行完成固件烧录、Flash/NVDS/OTP/eFuse操作。
- GR5xxx_encrypt_signature可方便用户直接使用命令行完成固件的加密加签或仅加签操作。
GR5xxx_console
- Windows平台
在Windows平台上,命令行程序GR5xxx_console的使用步骤如下:
- 选择cmd再回车,打开命令提示符窗口。 ,或者在运行对话框中输入
- 使用cd命令进入GProgrammer安装目录。
- 输入GR5xxx_console.exe help,查看命令列表。
- 输入GR5xxx_console.exe help <command>(如GR5xxx_console.exe help program),查看该命令详细描述和使用方法。
- Linux平台
在Linux平台上,命令行程序GR5xxx_console的使用步骤如下:
- 打开终端。
- 使用cd命令进入GProgrammer安装目录。
- 输入./GR5xxx_console help,查看命令列表。
- 输入./GR5xxx_console help <command>(如./GR5xxx_console help program),查看该命令详细描述和使用方法。
如果需要使用旧版本(V2.0.0之前)命令,可输入GR5xxx_console.exe help jlink(Windows平台)或./GR5xxx_console help jlink(Linux平台)查看命令列表。建议使用最新版本,以获得更好的使用体验。
通用参数
通用参数适用于所有需连接设备的命令,不包括无需与设备通信的本地命令,如help、merge、generate和device等。这些参数主要包括连接参数和芯片类型等。
参数名称 | 参数说明 |
---|---|
--uart | 指定 UART通信方式。参数名后跟UART名称,如:COM32、 ttyUSB0。 |
--baudrate(可选) | 当以UART方式通信时,指定通信波特率,如921600、2000000。 |
--jlink | 指定J-Link通信方式。参数名后跟J-Link序列号(SN)。当只有一个设备时,SN可为0。 |
--chip | 指定芯片类型,如GR5515、GR5525、GR5332 、GR5405等。 |
外部Flash配置参数
执行外部Flash操作命令(writeFlash、updateFlash、 readFlash、eraseFlash)时,需要额外配置外部Flash参数。
- GR551x :
-
00 - Normal
01 - AON
02 - MSIO
-
- GR5525/GR5526 :
- 00 - GPIOA (GPIO0 - GPIO15)
- 01 - GPIOB (GPIO16 - GPIO31)
- 02 - GPIOC (GPIO32 - GPIO33)
- 03 - AON (AON_GPIO_0 - AON_GPIO_7)
- 04 - MSIOA (MSIO_A0 - MSIO_A7)
参数名称 | 参数说明 |
---|---|
--spi_type | SPI 类型 : QSPI、SPI |
--gpio_cs_type | GPIO CS类型,参见上述GPIO_TYPE参数说明 |
--gpio_cs_pin | GPIO CS PIN |
--gpio_cs_mux | GPIO CS MUX |
--gpio_clk_type | GPIO Clock类型,参见上述GPIO_TYPE参数说明 |
--gpio_clk_pin | GPIO Clock PIN |
--gpio_clk_mux | GPIO Clock MUX |
--mosi_io0_type | GPIO IO0(or MOSI) 类型,参见上述GPIO_TYPE参数说明 |
--mosi_io0_pin | GPIO IO0(or MOSI) PIN |
--mosi_io0_mux | GPIO IO0(or MOSI) MUX |
--miso_io1_type | GPIO IO1(or MISO) 类型,参见上述GPIO_TYPE参数说明 |
--miso_io1_pin | GPIO IO1(or MISO) PIN |
--miso_io1_mux | GPIO IO1(or MISO) MUX |
--gpio_io2_type(可选) | GPIO IO2类型(参见上述GPIO_TYPE参数说明),用于配置QSPI |
--gpio_io2_pin(可选) | GPIO IO2 PIN,用于配置QSPI |
--gpio_io2_mux(可选) | GPIO IO2 MUX, 用于配置QSPI |
--gpio_io3_type(可选) | GPIO IO3类型(参见上述GPIO_TYPE参数说明),用于配置QSPI |
--gpio_io3_pin(可选) | GPIO IO3 PIN, 用于配置QSPI |
--gpio_io3_mux(可选) | GPIO IO3 MUX,用于配置QSPI |
--qspi_Id(可选) | QSPI module ID,用于配置QSPI |
帮助命令
- 命令名称:help
- 命令描述:列出命令,并展示命令的使用方法。
- 参数说明:
表 11 help命令参数描述 参数名称 参数说明 命令名称 - help不跟任何参数,列出所有命令。
- help后跟某条命令名称,可查看命令的描述、参数及使用方法等。
- 命令示例:
- 列出所有命令。
help
- 查看program命令的描述和使用方法。
help program
- 列出所有命令。
生成烧录固件
- 命令名称:generate
- 命令描述:将开发编译的Bin/Hex文件生成可烧录的Bin固件。
- 参数说明:
表 12 generate命令参数描述 参数名称 参数说明 --chip 指定芯片类型,如GR5515、GR5525、 GR5332、 GR5405等 --input 开发编译的Bin或Hex文件 --output 生成的可烧录的二进制固件 - 命令示例:
将开发编译的Bin文件app_bootloader.bin生成可烧录的固件app_bootloader_fw.bin。
generate --chip gr5525 --input app_bootloader.bin --output app_bootloader_fw.bin
合并固件
- 命令名称:merge
- 命令描述:将多个子固件打包合并成一个固件,以便一次性烧录。说明:
目前,merge命令合并的固件仅支持使用program命令进行烧录,无法通过GProgrammer界面工具烧录。
- 参数说明:
表 13 merge命令参数描述 参数名称 参数说明 --files 指定待合并的非启动固件,多个文件之间用空格分开 。 --boot 指定一个启动固件。合并固件时,通常需要指定一个固件程序为启动固件。 --out 合并后的二进制固件的保存路径。 - 命令示例:
合并1个应用固件和1个启动固件。
merge --files ble_app_template_dfu_fw.bin --boot ble_dfu_boot_fw.bin --out out.bin
解锁/上锁Flash
- 命令名称:lockFlash
- 命令描述:对内部Flash进行解锁和上锁。
- 参数说明:
表 14 lockFlash命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。
说明:
仅UART通信方式下支持此命令。
--mode - 0:解锁
- 1:解锁并擦除Flash
- 2:上锁
- 命令示例:
解锁GR5405 Flash。
lockFlash --chip gr5405 --mode 0 --uart COM30
复位设备
- 命令名称:reset
- 命令描述:复位设备。
- 参数说明:
表 15 reset命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。
- 命令示例:
复位设备。
reset --chip gr5332 --jlink 0
烧录固件
- 命令名称:program
- 命令描述:烧录固件至目标设备的内部Flash。
- 参数说明:
表 16 program命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。
--file 指定待烧录固件的文件路径。
待烧录固件可以是单个固件,也可以是由merge命令生成的合成固件。
--run 固件烧录完成后是否立即运行程序。 - true:立即执行
- false:不处理
--erase 固件烧录前是否擦除Flash 。 - 0:不擦除
- 1:擦除整个Flash
- 2:擦除BootInfo
- 命令示例:
- 烧录固件app_bootloader_fw.bin,且烧录前先擦除整个Flash,烧录完成后立即运行程序。
program --jlink 0 --chip GR5405 --file app_bootloader_fw.bin --erase 1 --run 1
- 生成可烧录固件并烧录。
generate --chip GR5405 --input app_bootloader.bin --output app_bootloader_fw.bin program --uart COM10 --chip GR5405 --file app_bootloader_fw.bin --erase 1 --run 1
- 合并固件并烧录。
merge --files ble_app_template_dfu_fw.bin --boot ble_dfu_boot_fw.bin --out out.bin program --uart COM10 --chip GR5405 --file out.bin --erase 1 --run 1
- 烧录固件app_bootloader_fw.bin,且烧录前先擦除整个Flash,烧录完成后立即运行程序。
写入Flash
- 命令名称:writeFlash
- 命令描述:写入数据至Flash。
- 参数说明:
表 17 writeFlash命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。
外部Flash配置参数(可选) 当flashType选择外部Flash时,需要输入外部Flash配置参数,具体参考外部Flash配置参数章节。 --flashType(可选) Flash 类型 - 0 :内部Flash(默认)
- 1 :外部Flash
--flashSize(推荐) Flash容量大小,单位为Kbytes。 --file 文件数据,参数名后跟文件路径。 --hex Hex数据,参数名后跟Hex字符串。 --address 待写入数据的目标地址(16进制) --force 如果数据写入地址与当前NVDS、BOOT_INFO 或IMAGE地址冲突,是否强制写入。 - true:强制写入
- false:不执行写入操作
- 命令示例:
- 写入文件数据至内部Flash指定地址。
writeFlash --chip GR5525 --file bootloader.bin --address 0x00210000 --force false --uart COM32
- 写入Hex数据至内部Flash指定地址。
writeFlash --chip GR5405 --hex 0x11223344 --address 0x00210000 --force true --jlink 0
- 写入文件数据至内部Flash指定地址。
writeFlash可能会擦除写入目标地址范围外的数据,如需避免此情况,请使用updateFlash命令。
更新Flash
- 命令名称:updateFlash
- 命令描述:更新Flash数据。
- 参数说明:
表 18 updateFlash命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。
外部Flash配置参数(可选) 当flashType选择外部Flash时,需要输入外部Flash配置参数,具体参考外部Flash配置参数章节。 --flashType(可选) Flash 类型 - 0 :内部Flash(默认)
- 1 :外部Flash
--flashSize(推荐) Flash容量大小,单位为Kbytes。 --file 文件数据,参数名后跟文件路径。 --hex Hex数据,参数名后跟Hex字符串。 --address 待更新数据的目标地址(16进制) - 命令示例:
- 更新文件数据至内部Flash指定地址
。
updateFlash --chip GR5405 --file save.bin --address 0x00210000 --jlink 0
- 更新Hex数据至内部Flash指定地址。
updateFlash --chip GR5405 --hex 0x11223344 --address 0x00210000 --force true --jlink 0
- 更新文件数据至内部Flash指定地址
。
读取Flash
- 命令名称:readFlash
- 命令描述:从Flash指定地址读取数据 。
- 参数说明:
表 19 readFlash命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。
外部Flash配置参数(可选) 当flashType选择外部Flash时,需要输入外部Flash配置参数,具体参考外部Flash配置参数章节。 --flashType(可选) Flash 类型 - 0 :内部Flash(默认)
- 1 :外部Flash
--flashSize(推荐) Flash容量大小,单位为Kbytes。 --save 保存读取的数据至文件。若未输入此参数,则将在终端以Hex格式显示前1K数据。 --address 待读取数据的目标地址 --size 读取的数据大小,单位为字节。 - 命令示例:
从内部Flash指定地址读取数据,并将数据保存到文件。
readFlash --chip GR5515 --address 0x01070000 --size 10240 --save save.bin --uart COM32
擦除Flash
- 命令名称:eraseFlash
- 命令描述:擦除Flash。
- 参数说明:
表 20 eraseFlash命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。
外部Flash配置参数(可选) 当flashType选择外部Flash时,需要输入外部Flash配置参数,具体参考外部Flash配置参数章节。 --flashType(可选) Flash 类型 - 0 :内部Flash(默认)
- 1 :外部Flash
--flashSize(推荐) Flash容量大小,单位为Kbytes。 --start 待擦除Flash区域的起始地址(16进制)。实际擦除操作将从该地址所在的Sector开始执行 。 --end 待擦除Flash区域的结束地址(16进制)。实际擦除操作将执行到该地址所在的Sector结束。 --force 进行非全片擦除时,若擦除地址与当前NVDS、BOOT_INFO 或IMAGE地址冲突,是否强制擦除。
- true:强制擦除
- false:不执行擦除操作
- 命令示例:
- 全片擦除内部Flash
。
eraseFlash --all true --chip GR5332 --uart COM77
- 擦除内部Flash指定区域。
eraseFlash --start 0x00210000 --end 0x00212000 --chip GR5405 --jlink 0
- 全片擦除内部Flash
。
写入NVDS
- 命令名称:writeNvds
- 命令描述:写入数据至NVDS。
- 参数说明:
表 21 writeNvds命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。 --address NVDS起始地址(16进制) --sectors NVDS Sector总数目,等于NVDS容量除以4K。 --tag 待写入数据的目标Tag。 --hex 以Hex字符串方式输入待写入的数据。 - 命令示例:
写入数据至NVDS。
writeNvds --address 0x00270000 --sectors 1 --tag C001 --hex 0123456789BB --jlink 0 --chip GR5332
读取NVDS
- 命令名称:readNvds
- 命令描述:从NVDS 指定Tag读取数据。
- 参数说明:
表 22 readNvds命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。 --address NVDS起始地址(16进制) --sectors NVDS Sector总数目,等于NVDS容量除以4K。 --tag 待读取数据的目标Tag。 --save(可选) 保存读取的数据至文件。若未输入此参数,则以Hex格式显示前1K数据至终端。 - 命令示例:
从NVDS指定Tag读取数据。
readNvds --address 0x00270000 --sectors 1 --tag C001 --chip GR5332 --jlink 0
在读取NVDS 之前,请确保NVDS已写入数据,否则将读取失败。
擦除NVDS
- 命令名称:eraseNvds
- 命令描述:删除NVDS 指定TAG数据。
- 参数说明:
表 23 eraseNvds命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。 --address NVDS起始地址(16进制) --sectors NVDS Sector总数目,等于NVDS容量除以4K。 --tag 待删除数据的目标Tag。 - 命令示例:
删除NVDS 指定TAG数据。
eraseNvds --address 0x00270000 --sectors 1 --tag C001 --chip GR5332 --jlink 0
写入eFuse
- 命令名称:writeEfuse
- 命令描述:写入数据至eFuse的User
Region区域(地址范围为0x00
~ 0x1F) 。说明:
该命令仅适用于GR551x、GR5525、GR5526系列芯片。
- 参数说明:
表 24 writeEfuse命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。 --offset 待写入数据的目标偏移地址(0x00 ~ 0x1C),需以4字节对齐。 --file 文件数据,参数名后跟文件路径,且文件大小需以4字节对齐。 --hex Hex数据,参数名后跟十六进制字符串,需以8个字符对齐。 - 命令示例:
写入Hex数据至eFuse。
writeEfuse --offset 0 --hex 12345678 --chip GR5525 --uart COM77
读取eFuse
- 命令名称:readEfuse
- 命令描述:从eFuse读取数据。
- 参数说明:
表 25 readEfuse命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。 --offset 待读取数据的目标偏移地址,需以4字节对齐。 --size 读取的数据长度(单位为字节),需以4字节对齐。 --save(可选) 保存读取的数据至文件。若未输入此参数,则将数据以Hex格式输出到终端。 - 命令示例:
从eFuse读取数据。
readEfuse --offset 0 --size 32 --chip GR5332 --uart COM77
写入OTP
- 命令名称:writeOtp
- 命令描述:写入数据至OTP指定地址。说明:
该命令仅适用于GR533x系列、GR5405芯片。
- 参数说明:
表 26 writeOtp命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。 --address 待写入数据的目标地址(16进制) --file 文件数据,参数名后跟文件路径。 --hex Hex数据,参数名后跟Hex字符串。 - 命令示例:
写入数据至OTP。
writeOtp --address 0x2008 --hex 12345678 --uart COM77 --chip GR5332
读取OTP
- 命令名称:readOtp
- 命令描述:从OTP指定地址读取数据。说明:
该命令仅适用于GR533x系列、GR5405芯片。
- 参数说明:
表 27 readOtp命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。 --address 待读取数据的目标地址(16进制) --size 读取的数据长度,单位为字节。 --save(可选) 保存读取的数据至文件。若未输入此参数,则将数据以Hex格式输出到终端。 - 命令示例:
从OTP读取数据。
readOtp --address 0x2008 --size 0x10 --uart COM77 --chip GR5332
擦除OTP
- 命令名称:eraseOtp
- 命令描述:删除OTP指定地址数据。说明:
该命令仅适用于GR533x系列、GR5405芯片。
- 参数说明:
表 28 eraseOtp命令参数描述 参数名称 参数说明 通用参数 参考 通用参数。 --address 待删除数据的目标地址(16进制) - 命令示例:
删除OTP数据。
eraseOtp --address 0x2008 --uart COM77 --chip GR5332
展示设备列表
- 命令名称:device
- 命令描述:展示设备列表。
- 参数说明:
表 29 device命令参数描述 参数名称 参数说明 --type 展示的设备类型,包括: uart、jlink或all。其中,all表示同时展示uart和jlink设备列表。 --count(可选) 展示的设备数目(不超过50),默认值为50 - 命令示例:
- 展示所有uart设备。
device --type uart
- 展示所有jlink设备。
device --type jlink
- 展示所有uart和jlink设备。
device --type all
- 展示所有uart设备。
GR5xxx_encrypt_signature
- Windows平台
在Windows平台上,命令行程序GR5xxx_encrypt_signature的使用步骤如下:
- 选择cmd后回车,打开命令提示符窗口。 ,或者在运行对话框中输入
- 使用cd命令进入GProgrammer安装目录。
- 输入GR5xxx_encrypt_signature.exe
--parameter完成操作。
常用参数及对应描述,详见表 30,全部参数可使用GR5xxx_encrypt_signature.exe --help命令进行查看。
- Linux平台
在Linux平台上,命令行程序GR5xxx_encrypt_signature的使用步骤如下:
- 打开终端。
- 使用cd命令进入GProgrammer安装目录。
- 输入./GR5xxx_encrypt_signature
--parameter完成操作。
常用参数及对应描述,详见表 30,全部参数可使用./GR5xxx_encrypt_signature --help命令进行查看。
参数 | 描述 | 备注 |
---|---|---|
operation | 操作类型,可输入值及含义如下:
|
|
firmware_key | 用于加密加签/仅加签的firmware.key文件所在路径 | 文件所在路径,对应eFuse设置章节,点击Generate eFuse File按钮后选择的文件保存路径。 |
signature_key | 用于加密加签/仅加签的sign.key文件所在路径 | |
signature_pub_key | 用于加密加签/仅加签的sign_pub.key文件所在路径 | |
product_json_path | 用于加密加签/仅加签的product.json文件所在路径 | |
rand_number | 用于加密加签/仅加签的random.bin文件所在路径 | |
ori_firmware | 待加密加签/仅加签的原始固件路径 | |
output | 加密加签/仅加签后的固件保存路径 | |
random_output | 加密加签/仅加签使用的随机数的保存路径 | |
base_addr | Flash起始地址,可输入值及含义如下:
|
|
flash_size | Flash大小(单位KB),即使用的芯片型号Flash大小,可查看图 6Flash列。 说明 若使用的芯片Flash为0 KB,则写入使用的外挂Flash大小。 |
|
product_type | 芯片类型, 可输入值及含义如下:
|
|
help | 显示帮助信息 |
例如,在GR551x系列芯片上执行固件加密加签,输入的命令示例如下:
GR5xxx_encrypt_signature.exe --operation="encryptandsign" --firmware_key="D:/test/eFuse/firmware.key" --signature_key="D:/test/eFuse/sign.key" --signature_pub_key="D:/test/eFuse/sign_pub.key" --product_json_path="D:/test/eFuse/product.json" --rand_number="D:/test/eFuse/random.bin" --ori_firmware="D:/test/firmware/test_fw.bin" --output="D:/test/firmware_encryptAndSign/test_fw_encryptAndSign.bin" --random_output="D:/test/firmware_encryptAndSign/random.bin" --base_addr="0x01000000" --flash_size="1024" --product_type="0"
其中参数值路径D:/test/eFuse/为eFuse设置章节,点击Generate eFuse File按钮后用户选择的文件保存路径。更多参数介绍,请查看表 30。
- --ori_firmware="D:/test/firmware/test_fw.bin":原始固件的路径。
- --output="D:/test/firmware_encryptAndSign/test_fw_encryptAndSign.bin":保存加密加签后固件的路径。
- --base_addr="0x01000000" --flash_size="1024" --product_type="0":依次表示待烧录目标固件的Flash起始地址为0x01000000、Flash大小为1024 KB、芯片系列为GR551x。
- --rand_number 参数使用请参见固件加密加签章节Random Number说明。
运行命令后,开始执行加密加签操作。
用户自定义Windows脚本
GR5xxx表示芯片系列名称。
encryptAndSignatureFirmware.bat脚本使用同级目录中firmware_origin.bin文件和eFuse目录,生成加密加签的固件保存到firmware_encryptAndSign\firmware_encryptAndSign.bin路径中。
program_Firmware_EncryptAndSign.bat脚本先擦除全部内部Flash,然后下载firmware_encryptAndSign\firmware_encryptAndSign.bin路径中的固件到内部Flash中。