HPMicro Manufacturing Tool 使用命令行实现FLASH镜像烧写以及批量烧写的功能
在 HPMicro Manufacturing Tool 的命令行工具中,可以通过 USB-HID 或者串口连接然后进行镜像烧写,让我们先一起看一下镜像烧写的命令序列(命令序列均以Windows平台为例):
1. 单个 FLASH 镜像烧写
1.1 烧写命令序列
-
命令序列1:
hpm_manufacturing_cmd.exe -u "0x34b7,0x0001" -r "write-memory 0x0 0x200 [[0xfcf90001,0x05,0x0,0x0]]" hpm_manufacturing_cmd.exe -u "0x34b7,0x0001" -r "config-memory 0x10000 0x200" hpm_manufacturing_cmd.exe -u "0x34b7,0x0001" -r "write-memory 0x10000 0x80000400 flash_xip.bin"
-
命令序列2:
hpm_manufacturing_cmd.exe -u -r "write-memory 0x0 0x200 [[0xfcf90001,0x05,0x0,0x0]]" -r "config-memory 0x10000 0x200" -r "write-memory 0x10000 0x80000400 flash_xip.bin"
命令序列 1 和命令序列 2 在执行时效果完全等价,但调用方式不同。命令序列 1 每次执行一条命令,相当于连续启动了三次 hpm_manufacturing_cmd 程序来执行操作。而命令序列 2 将三条命令合并在一起,只需要启动一次 hpm_manufacturing_cmd,然后按顺序执行了三条命令。因此优先推荐使用命令序列2来执行程序,可以减少设备的打开关闭操作次数。
注:在 v0.5.0 版本,在只有单个设备连接时,命令行工具支持自动检测设备id(名称),只需要指定设备类型即可连接。如命令序列2所示,-u 后面不需要再加具体的 vid 和 pid 参数来标明设备。
1.2 命令序列详解
在 FLASH 镜像烧写的命令序列中,一共包含三条命令,这三条命令主要用到了两个指令:
-
write-memory - 该命令用于向 on-chip SRAM、片上的 OTP 以及外挂的 XPI NOR 写入数据。参数如下:
write-memory <memory_id> <address> [[hex array]]/<path> - memory_id(内存设备标识): 0 - ILM / 1 - DLM 0x10000 - XPI0 NOR / 0x10001 - XPI1 NOR 0x20000 - OTP 0x30000 - SDXC0 / 0x30001 - SDXC1 - address(要写入的地址) - [[hex array]]/<path>(要写入的数据,可以是十六进制数组,也可以使用待写入文件路径)
-
config-memory - 该命令用于通过指定地址存储的存储设备配置信息来使能对外挂存储设备的支持。参数如下:
config-memory <memory_id> <config_address> - memory_id(内存设备标识): 0x10000 - XPI0 NOR / 0x10001 - XPI1 NOR 0x30000 - SDXC0 / 0x30001 - SDXC1 - config_address(存储配置块的地址,仅支持从片上RAM中获取)
命令序列的三条命令,主要实现了两个步骤的操作:
- 使能对外挂存储设备(FLASH)的支持;
- 向指定存储设备地址写入镜像;
其中,使能存储设备需要两条命令:
write-memory 0x0 0x200 [[0xfcf90001,0x05,0x0,0x0]]
:根据上面指令的参数对应可得,这条指令是向 ILM 的 0x200 地址写入了四个十六进制数 0xfcf90001,0x05,0x0,0x0,这四个数据即为对当前 FLASH 配置信息的描述,具体请参考 HPM_SDK 目录下 boards//board.c中的关于option的注释。config-memory 0x10000 0x200
: 根据上面指令的参数对应,这条指令是对 XPI0 NOR 使用 0x200 地址的配置信息进行配置使能,即使用上一条的配置进行使能。
设备使能完毕后,我们便可以向设备写入镜像,此时使用 write-memory 指令即可:
write-memory 0x10000 0x80000400 flash_xip.bin
: 根据上面指令的参数对应,这条指令会向 XPI0 NOR 的 0x80000400 地址写入镜像 flash_xip.bin。
通过以上三条命令,便可以实现 FLASH 镜像向指定地址烧写。
2. FLASH 镜像批量烧写流程
目前命令行工具并没有支持批量烧写镜像的独立命令,但是您可以通过脚本化的方式来完成批量烧写操作。当设备FLASH配置信息相同时,我们可以通过脚本动态的替换最后一条命令的烧写地址以及FLASH镜像路径,便可以实现批量烧写操作,如下所示:
hpm_manufacturing_cmd.exe -u -r "write-memory 0x0 0x200 [[0xfcf90001,0x05,0x0,0x0]]" -r "config-memory 0x10000 0x200" -r "write-memory 0x10000 <address> <flash_path>"
将命令中 address
和 flash_path
替换为对应值,便可以完成批量烧写。