CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

命令行

GProgrammer提供2类命令行程序:GR5xxx_consoleGR5xxx_encrypt_signature

说明:

GR5xxx表示芯片系列名称。

  • GR5xxx_console可方便用户直接使用命令行完成固件烧录、Flash/NVDS/OTP/eFuse操作。
  • GR5xxx_encrypt_signature可方便用户直接使用命令行完成固件的加密加签或仅加签操作。

GR5xxx_console

  • Windows平台

    在Windows平台上,命令行程序GR5xxx_console的使用步骤如下:

    1. 选择开始菜单 > 命令提示符,或者在运行对话框中输入cmd再回车,打开命令提示符窗口。
    2. 使用cd命令进入GProgrammer安装目录。
    3. 输入GR5xxx_console.exe help,查看命令列表。
    4. 输入GR5xxx_console.exe help <command>(如GR5xxx_console.exe help program),查看该命令详细描述和使用方法。
  • Linux平台

    在Linux平台上,命令行程序GR5xxx_console的使用步骤如下:

    1. 打开终端。
    2. 使用cd命令进入GProgrammer安装目录。
    3. 输入./GR5xxx_console help,查看命令列表。
    4. 输入./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等。这些参数主要包括连接参数和芯片类型等。

表 9 通用参数描述
参数名称 参数说明
--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参数。

GPIO_TYPE 参数说明:
  • 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)
表 10 外部Flash配置参数描述
参数名称 参数说明
--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命令参数描述
    参数名称 参数说明
    命令名称
    1. help不跟任何参数,列出所有命令。
    2. help后跟某条命令名称,可查看命令的描述、参数及使用方法等。
  • 命令示例:
    1. 列出所有命令。
      help
    2. 查看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
  • 命令示例:
    1. 烧录固件app_bootloader_fw.bin,且烧录前先擦除整个Flash,烧录完成后立即运行程序。
      program --jlink 0 --chip GR5405 --file app_bootloader_fw.bin --erase 1 --run 1
    2. 生成可烧录固件并烧录。
      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
      
    3. 合并固件并烧录。
      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
      

写入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:不执行写入操作
  • 命令示例:
    1. 写入文件数据至内部Flash指定地址。
      writeFlash --chip GR5525 --file bootloader.bin --address 0x00210000 --force false --uart COM32
    2. 写入Hex数据至内部Flash指定地址。
      writeFlash --chip GR5405 --hex 0x11223344 --address 0x00210000 --force true --jlink 0
说明:

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进制)
  • 命令示例:
    1. 更新文件数据至内部Flash指定地址 。
      updateFlash --chip GR5405 --file save.bin --address 0x00210000 --jlink 0
    2. 更新Hex数据至内部Flash指定地址。
      updateFlash --chip GR5405 --hex 0x11223344 --address 0x00210000 --force true --jlink 0

读取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:不执行擦除操作
  • 命令示例:
    1. 全片擦除内部Flash 。
      eraseFlash --all true --chip GR5332 --uart COM77
    2. 擦除内部Flash指定区域。
      eraseFlash --start 0x00210000 --end 0x00212000 --chip GR5405 --jlink 0

写入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
  • 命令示例:
    1. 展示所有uart设备。
      device --type uart
    2. 展示所有jlink设备。
      device --type jlink
    3. 展示所有uart和jlink设备。
      device --type all

GR5xxx_encrypt_signature

  • Windows平台

    在Windows平台上,命令行程序GR5xxx_encrypt_signature的使用步骤如下:

    1. 选择开始菜单 > 命令提示符,或者在运行对话框中输入cmd后回车,打开命令提示符窗口。
    2. 使用cd命令进入GProgrammer安装目录。
    3. 输入GR5xxx_encrypt_signature.exe --parameter完成操作。

      常用参数及对应描述,详见表 30,全部参数可使用GR5xxx_encrypt_signature.exe --help命令进行查看。

  • Linux平台

    在Linux平台上,命令行程序GR5xxx_encrypt_signature的使用步骤如下:

    1. 打开终端。
    2. 使用cd命令进入GProgrammer安装目录。
    3. 输入./GR5xxx_encrypt_signature --parameter完成操作。

      常用参数及对应描述,详见表 30,全部参数可使用./GR5xxx_encrypt_signature --help命令进行查看。

表 30 GR5xxx_encrypt_signature的常用参数列表
参数 描述 备注
operation 操作类型,可输入值及含义如下:
  • encryptandsign:加密加签
  • sign:仅加签
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起始地址,可输入值及含义如下:
  • 0x01000000:GR551x Flash起始地址
  • 0x00200000:GR5526/GR533/GR5405/GR5525 Flash起始地址
flash_size Flash大小(单位KB),即使用的芯片型号Flash大小,可查看图 6Flash列。

说明

若使用的芯片Flash为0 KB,则写入使用的外挂Flash大小。

product_type 芯片类型, 可输入值及含义如下:
  • 0:GR551x系列芯片
  • 1:GR5526系列芯片
  • 2:GR533x系列、GR5405芯片
  • 4:GR5525系列芯片
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脚本

用户可自定义编写Windows脚本文件,来调用命令行程序。在GProgrammer的安装目录下的GR5xxx_script目录中,存放了2个示例脚本文件。
说明:

GR5xxx表示芯片系列名称。

encryptAndSignatureFirmware.bat脚本使用同级目录中firmware_origin.bin文件和eFuse目录,生成加密加签的固件保存到firmware_encryptAndSign\firmware_encryptAndSign.bin路径中。

program_Firmware_EncryptAndSign.bat脚本先擦除全部内部Flash,然后下载firmware_encryptAndSign\firmware_encryptAndSign.bin路径中的固件到内部Flash中。

扫描关注

打开微信,使用“扫一扫”即可关注。