MPCli Tool
MPCli Tool 是一款兼容 Windows、Linux 和 macOS 的多平台命令行工具,支持 UART 一对一运行模式。其核心功能包括:
烧录文件
读取 Flash 内容
修改指定 Flash 地址的内容
设置蓝牙地址和 TX Power
写入 eFuse
可以前往 RealMCU_ 平台获取 MPCli Tool 程序。
命令选项简介
运行命令 mpcli -h 可查看应用程序支持的所有命令选项,长选项与短选项功能一致。
短选项 |
长选项 |
功能 |
|---|---|---|
-h |
--help |
菜单 |
-V |
--version |
工具版本 |
-c |
--com |
设置串口号 |
-b |
--baud |
设置串口波特率 |
-a |
--auto |
和 -f 一起选用,指定多个分立的镜像文件烧录模式 |
-f |
--json |
烧录配置 json 文件 |
-P |
--packetimage |
输入已打包烧录文件 |
-e |
--pageerase |
擦除功能,需指定擦除 Flash 起始地址和擦除范围 |
-p |
--program |
烧录二进制文件,需指定烧录文件和烧录 Flash 地址 |
-v |
--verify |
验证指定文件是否已烧录到指定 Flash 地址 |
-s |
--savebin |
保存为二进制文件,需指定 Flash 起始地址和读取范围和二进制文件名 |
/ |
--dump_data |
把 Flash 内容显示在命令提示符窗口,需指定 Flash 范围 |
-m |
--modify |
修改 Flash 指定地址范围的内容,需指定地址 |
-A |
--address |
输入 16 进制 Flash 地址 |
-S |
--size |
指定范围 |
-F |
--filepath |
指定二进制文件路径 |
/ |
--spi_pin_config_json |
设定外挂 Flash PIN |
/ |
--set_tx_power |
设置 TX Power |
-T |
--set_xtal_calibration |
设置 40MHz XTAL Internal Cap Calibration |
-x |
--set_mac |
设置蓝牙地址 |
-u |
--efuse_json |
烧录 eFuse 文件 |
-U |
--efuse_otp |
write eFuse as OTP |
-I |
--get_euid_mac |
显示 EUID 和蓝牙地址 |
-B |
--get_back_mac |
烧录时保持原蓝牙地址不变 |
/ |
--get_back_xtal_calibration |
烧录时保持原 xtal calibration 不变 |
-D |
--debugpassword |
输入 16Bytes 的密码 |
-E |
--chiperase |
全片擦除 |
-C |
--erase |
保留前 4k 的全片擦除 |
-r |
--reboot |
重启 IC |
备注
接下来将以 Windows 平台为示例,详细介绍命令格式和常用功能,帮助用户轻松完成烧录任务。需要注意的是,命令行中的参数信息仅作为示例说明其作用,实际使用时请根据具体需求替换为正确的配置信息。
基本烧录功能
MPCli Tool 支持如下两种烧录模式,用户可以通过一条命令完成多个文件的烧录任务。
多个独立镜像文件的烧录模式
准备文件
在 mpcli.exe 的同目录下,找到 mptoolconfig.json 配置模板文件,并补充以下必要信息:
配置串口: 在 “port” 项中输入待烧录设备的串口号,并在 “baud” 项中输入波特率。
文件信息: 将多个独立镜像文件所在的文件夹
bin填写在 “relativepath” 项中。请确保该文件夹位于mptoolconfig.json的同级目录中。烧录信息: 在 “address” 项中输入各个独立镜像文件的烧录地址,将文件名填写在 “name” 项中,并通过 “enable” 项来启用烧录该独立文件。
多个独立镜像文件 JSON 填写示例
备注
所有填写内容均需放在双引号内。
为确保烧录过程的稳定性,建议将波特率设置为不超过 2Mbps,默认波特率为 1Mbps。
烧录地址需使用十六进制字符串格式填写。
如果删除 enable 字段,则将默认执行烧录操作。
增加或删除 id 条目时,注意标点符号,以避免引发 JSON 解析错误。
烧录
确保待烧录设备进入烧录模式。(具体操作为:拉低 P0_3,然后重置 IC 100ms)
调用 mpcli.exe -a -f "mptoolconfig.json" -r 或者 mpcli.exe -c com27 -b 115200 -a -f "mptoolconfig.json" -r
-
参数说明:
如果在命令参数中使用了 -c 选项指定串口号,则以该串口号为准。
如果命令参数中包含 -b 选项,则使用 -b 指定的波特率。
建议使用 -r 选项,在烧录完成后自动重启。这可以省略手动进入烧录模式的步骤,从而实现连续烧录测试。
包文件的烧录模式
参考 MP Pack Tool 将多个独立的镜像文件打包成一个包文件
ImagePackedFile.bin。执行 mpcli.exe -c com27 -P ImagePackedFile.bin -r 完成烧录。
-
参数说明:
-c:指定串口号(必须)。
-P:指定包文件的路径(必须),可以是完整路径,也可以是相对于
mpcli.exe的相对路径。-b:指定波特率,如果未指定,将使用程序的默认值。
-r:指定是否在烧录完成后重启 IC,建议启用该选项。
启动烧录前,确认 DUT 进入烧录模式
备注
擦除说明 在上述模式下,
mpcli.exe会自动计算并擦除所需的 Flash 范围。该过程根据烧录文件的地址和大小自动确定,无需手动设置。
选项功能
MPCli Tool 的调用方法如下:mpcli [option] [value]。
备注
[option]: 请参阅 命令选项简介,可以使用长选项或短选项
[value]: 根据选项属性决定是否需要传入值。
烧录一个镜像文件
用户可以在命令行参数中指定 Flash 擦除范围、烧录文件和烧录地址。 mpcli.exe 将根据这些参数执行擦除 Flash, 烧录和验证镜像文件的操作。通过这种方式,用户能灵活地控制烧录过程,确保数据准确写入指定的地址区域,并在烧录完成后进行验证以保证数据的正确性。
有两种方式可以实现一个镜像文件的烧录:
-
一步执行
一步完成擦除,烧录和验证:mpcli.exe -c com27 -e -p -v -F "filename.bin" -A 0x801000 -S 4096 -r
-
分步执行
擦除:mpcli.exe -c com27 -e -A 0x801000 -S 4096 -r
烧录:mpcli.exe -c com27 -p -A 0x801000 -F "filename.bin" -r
验证:mpcli.exe -c com27 -v -A 0x801000 -F "filename.bin" -r
-
参数说明:
-e:使能擦除功能。
-p:使能烧录功能。
-v:使能验证功能。
-A:指定设备的 Flash 地址,必须以十六进制字符串格式填写,例如 0x801000。
-S:指定擦除范围,向上对齐到最近的 4K 边界。
-F:指定烧录文件。
备注
如果确认设备上的 Flash 区域为空,可以跳过擦除 -e 以节省时间。
修改指定位置内容
mpcli.exe 支持修改设备 Flash 中的指定位置起始的连续字节内容。
命令示例:mpcli.exe -c com27 -m 01:02:03:04:05:06 -A 0x801409 -r
-
参数说明:
-c:指定设备的串口号,确保选择正确的端口号。
-m:定义要写入的内容。以英文冒号分隔的十六进制数值,每个数值由两位字符表示。单次命令执行的最大修改长度为 32 字节。
-A:指定修改操作在 Flash 的起始地址。地址需用十六进制字符串格式表示,如 0x801409。
-r:用于在操作完成后重启设备。
保存指定位置内容文件
mpcli.exe 支持将设备 Flash 中指定地址的连续内容保存到指定文件中。
命令示例:mpcli.exe -c com27 -s -A 0x801000 -S 128 -F "output.bin" -r
-
参数说明:
-c:指定设备的串口号,确保选择正确的端口号。
-s:指示进行保存操作,将指定的 Flash 内容保存到文件中。
-F:指定将读取的数据保存到的文件名(包含路径)。确保路径有效且有写入权限。
-A:指定要保存的 Flash 内容的起始地址。用十六进制格式表示起始地址,以确保读取正确的内存位置。
-S:指定要读取和保存的数据长度(以字节为单位)。在此示例中为 128 字节,可根据实际需要进行调整。
显示指定位置内容
mpcli.exe 支持将设备 Flash 中一段连续内容显示在命令提示符窗口。
命令示例:mpcli.exe -c com27 --dump_data -A 0x801000 -S 64 -r
-
参数说明:
-c:指定设备的串口号,确保选择正确的端口号。
--dump_data:指示把内容显示在命令提示符窗口。
-A:指定显示 Flash 内容的起始地址。用十六进制格式表示起始地址,以确保读取正确的内存位置。
-S:指定要数据长度(以字节为单位)。在此示例中为 64 字节,可根据实际需要进行调整。
显示指定位置内容
修改蓝牙地址
mpcli.exe 支持修改设备 Flash 中的蓝牙地址。
命令示例:mpcli.exe -c com27 -x 01:02:03:04:05:06 -r
修改蓝牙地址
备注
参数格式: 确保蓝牙地址的每个字节都用两位的十六进制数表示,字节之间使用英文冒号进行分隔。
更新限制: 如果 Flash 中的配置区域(config region)为空,则无法进行蓝牙地址的修改操作。
更新逻辑: 若配置区域已初始化但尚未包含蓝牙地址项,则会新增该项;如果已存在地址项,则只需替换其中的 6 字节蓝牙地址即可。
参数搭配: 可以和烧录镜像文件一起选用,提升生产效率。
修改 XTAL Internal Cap Calibration
mpcli.exe 支持修改设备 Flash 中的 XTAL Internal Cap Calibration。
命令示例:mpcli.exe -c com27 -T 3F -r
-
参数说明:
-c:指定设备的串口号,确保选择正确的端口号。
-T:设定频偏值,需为长度为 2 的十六进制字符,范围应在 00 至 7F 之间。
修改 XTAL Internal Cap Calibration
备注
更新限制: 如果 Flash 中的配置区域(config region)是空的,则无法进行修改操作。
参数搭配: 可以和烧录镜像文件一起选用,提升生产效率。
修改 TX Power
mpcli.exe 支持修改设备 Flash 中的 TX Power。
命令示例:mpcli.exe -c com27 --set_tx_power 7.5 -r
-
参数说明:
-c:指定设备的串口号,确保选择正确的端口号。
--set_tx_power:设定 TX Power(以 dBm 为单位),保证参数值在设备支持范围内,以免影响设备性能。
修改 TX Power
备注
更新限制: 如果 Flash 中的配置区域(config region)是空的,则无法进行修改操作。
Password 调试
mpcli.exe 支持解锁被锁定的芯片,芯片以启用调试功能。
mpcli.exe 通过 HCI UART 传入 16 字节 Password ,然后 IC 会自动重启并检查 Password 是否正确,如果正确则打开该功能。
命令示例:mpcli.exe -c com27 -D 00:01:02:03:04:05:06:07:08:09:0A:0B:0C:0D:0E:0F -r
-
参数说明:
-c:指定设备的串口号,确保选择正确的端口号。
-D:设定密码,以冒号分隔的 16 字节十六进制数据格式输入。
Password 调试
备注
每次 IC 重启都需要重新输入 Password 才能打开该功能。
全片擦除命令
mpcli.exe 支持将设备的 Flash 的内容全部擦除。
命令示例:mpcli.exe -c com27 -E -r
-
参数说明:
-E 选项可用于多个独立镜像文件烧录模式和包文件烧录模式。在这些模式下,
mpcli.exe将优先执行全片擦除操作。
备注
使用 mpcli.exe -c com27 -C -r 可以从 Flash 的起始处偏移 4K 的位置开始执行全片擦除操作。
控制串口流的配置
mpcli.exe 支持解析位于其目录中的 serial.ini 文件,无需手动操作即可自动控制指定串口引脚的高低电平,从而轻松实现特定动作。
下图是 demo_serial.ini 文件的内容示例。
具体配置步骤如下:
在
mpcli.exe所在目录下新建serial.ini文件。配置所需的模块动作,如 RTS、DTR 和 sleep 操作。
当
mpcli.exe打开串口时,将自动解析serial.ini文件如果不需要相关功能,可以重命名或删除
serial.ini文件。
serial.ini 配置说明
备注
可以在红色方框内添加或删除条目。
仅支持以下三个关键字:RTSControl、DTRControl 和 sleep。
写 eFuse 文件
eFuse 文件采用 JSON 格式,用于记录需烧录到设备中的数据,包括安全机制和 Flash 上电参数的设置。其文件格式可参考以下 EfuseWriteFile.json 示例。
mpcli.exe 支持将eFuse文件中的数据烧写至设备。
在将 EfuseWriteFile.json 的内容写入设备之前,FW Loader 会执行空白检查以验证当前的密钥是否有效。如果当前的密钥被认定为有效,程序将提示通过,并且不会写入任何字节。如果当前密钥无效,程序将提示失败,同样不会写入任何字节。
命令示例:mpcli.exe -c com27 -u EfuseWriteFile.json -r
写 eFuse 文件
备注
使用 eFuse json 格式,可以在
EfuseWriteFile.json配置多个节点,从而实现一次性写入多个信息的效率提升。EfuseWriteFile.json的节点类型必须是设备支持的类型,否则写入操作将失败。请在 JSON 文件中仅使用支持的节点类型,以确保配置正确应用。适合批量配置和快速应用多项参数设置。
写 eFuse as OTP
mpcli.exe 支持将 eFuse 数据烧写到指定地址。烧写完成后, mpcli.exe 会在命令提示符窗口显示目标位置的数据,便于用户进行验证和检查。
命令示例:mpcli.exe -c com27 -U 010203040506 -A 0x8800119 -r
-
参数说明:
-U: 指定 eFuse 数据,字符数必须为偶数,即完整的字节。
-A:指定烧写地址。如果目标地址的现有内容与待烧写内容完全一致,系统将提示已有有效的 eFuse 内容,表示操作成功并正常退出;若内容不一致,则提示发生冲突,导致操作失败并退出。
备注
此操作需要指定写入 eFuse 的具体地址,这意味着需要明确在哪个位置进行数据的烧写。
每次操作只能写入单条信息,这要求用户在进行多次写入时,需要逐个指定和操作。
适合精准和个性化地写入特定信息。
该功能只有 RTL8762C/D 两颗芯片支持。
在 RTL8762C 板上进行烧写时,eFuse 数据的长度限制为 32 字符(16 字节)。
RTL8762C/D 两颗芯片具有较大的 eFuse 空间,可以为 APP 保留最大36字节,记录只写一次的数据,例如 Serial Number。
显示蓝牙地址
mpcli.exe 支持读取 EUID 和设备 Flash 中的蓝牙地址,并将读取结果以固定格式显示在命令提示符窗口,便于用户提取和解析。
命令示例:mpcli.exe -c com27 -I -r
显示蓝牙地址和 EUID
备注
图中 EUID 的值仅作打印式样,无含义。
-I 选项没有使用限制,可以与其他选项在同一条命令中使用。
读回蓝牙地址并烧录
mpcli.exe 支持使用 -B 选项,在烧录镜像文件时保护设备的蓝牙地址不被覆盖。
工具的具体做法如下:
在擦除 Flash 之前,
mpcli.exe先从 Flash 中读取出设备当前的蓝牙地址。读取待烧录文件的内容,并将设备的原始蓝牙地址替换到
configFile.bin中的相应位置。执行擦除,烧录,验证的操作。
命令示例:mpcli.exe -c com27 -a -f mptoolconfig.json -B -r ,工具执行日志如下。
读回蓝牙地址并烧录
备注
使用要求: 当选用 -B 但未选用烧录选项时,无法完成读回并写入的动作。
使用要求: 当选用 -B 且选用烧录选项时,但烧录文件中不包含
configFile.bin时, -B 选项无效。内容检查: 在读取 Flash 的配置区(config region)时,如果蓝牙地址为空,程序提示错误日志后退出。
替换原则: 在
mpcli.exe运行过程中实现蓝牙地址的替换,但不修改原始文件
读回 XTAL Internal Cap Calibration 并烧录
mpcli.exe 支持使用 --get_back_xtal_calibration 选项,在烧录镜像文件时保护设备的频偏校准值不被覆盖。
工具的具体做法如下:
mpcli.exe先从 Flash 中读取出设备当前的频偏校准值。读取待烧录文件的内容,并将设备的原始频偏校准值替换到
configFile.bin中的相应位置。执行擦除,烧录,验证的操作。
命令示例:mpcli.exe -c com27 -a -f mptoolconfig.json --get_back_xtal_calibration -r ,工具执行日志如下。
读回 XTAL Internal Cap Calibration 并烧录
配置 SPI Flash PIN
mpcli.exe 支持使用 ----spi_pin_config_json 选项,在文件中配置 SPI Flash Pin 实现烧录。
用户的配置步骤如下:
打开
SPI_PIN_config.json文件,更新其中 SCLK、MISO、MOSI 和 CS 对应的引脚配置使用
mpcli.exe完成烧录操作。
-
命令示例:
mpcli.exe –c comX –P packedimage.bin --spi_pin_config_json SPI_PIN_config.json –r
mpcli.exe –c comX –a –f fileconfig.json --spi_pin_config_json SPI_PIN_config.json –r
-
参数说明:
--spi_pin_config_json: 指定
SPI_PIN_config.json文件,内容如下图所示。必须和烧录镜像文件选项一起选用。
配置 SPI Flash PIN
注意事项
烧录参数说明
-
烧录地址
烧录地址必须是 4 字节对齐的。
-
擦除范围
烧录镜像文件时,如果命令行选项中未包含 -E 或者 -C ,那么擦除的 Flash 大小会根据待烧录文件的大小向上扩展,达到 4KB 对齐。
-
烧录固件
mpcli.exe根据 IC 类型自动从fw文件夹中加载固件文件,用户不得修改或删除发布包中fw文件。
跨平台使用问题
在 Linux 平台或者 macOS 上使用 mpcli 时应注意下列内容:
-
注意串口的格式设置。
命令示例:./mpcli -c /dev/tty.usbserial-XXXX -r
-
如果遇到串口无法访问或打开失败的问题,可以通过更改设备文件的权限来解决。参考如下:
使用 chmod 命令授予对串口设备的读写权限 sudo chmod 777 /dev/ttyXXXX
使用 adduser 命令将当前用户添加到 dialout 组 sudo adduser username dialout
错误码
mpcli.exe 工具执行完成后会返回一个整数值(错误码),用于指示程序的运行状态。
用户可以通过 捕获错误码 来判断 mpcli.exe 的执行结果,并对照如下 错误码 分析错误原因。
错误码表
Error Code |
Indication |
原因 |
|---|---|---|
0 |
success |
|
1 |
parameter error |
用户需要确保传入的参数、文件路径和选项等内容的准确性 |
2 |
port number error |
用户输入的串口号不正确或串口已被占用 |
3 |
open file error |
首先,请检查文件路径是否存在,然后确认文件是否完整无损 |
4 |
IC type error |
无法匹配到相应的固件或者是该工具不支持此 IC 类型的选项功能 |
5 |
no ready error |
由于未加载运行的固件或者串口未打开所导致的 |
6 |
hci Event error |
常见原因是 DUT 未进入烧录模式 |
7 |
mp event error |
烧录传输过程中出现的错误 |
8 |
crc check error |
UART 传输数据时出现 CRC 校验不正确的情况 |
9 |
timeout error |
超时通常是由于串口连接不稳定所致 |
10 |
flash read error |
读取 Flash 内容失败 |
11 |
flash verify error |
写入 Flash 后的校验错误通常是由于数据没有正确写入导致的 |
12 |
configuration signature error |
校验 Flash Config Region 时不符合预期 |
13 |
packed image parse error |
解析打包文件时出现错误,可能是由于文件长度错误或者文件内容存在问题 |
14 |
make temp dir error |
创建临时文件路径时出现失败 |
15 |
alloc error |
申请堆内存时发生失败 |
16 |
save error |
保存文件时出现错误 |
17 |
delete error |
删除文件时发生失败 |
18 |
dump data error |
显示 Flash 内容时失败 |
捕获错误码
以下是几种捕获错误码的方式,用户可以自行参考。
-
日志文件
解析
mpcli.exe的运行日志:执行成功时,打印出日志 Task executed successfully
执行失败时,打印错误码,并打印出日志 Task execution failure
-
批处理脚本
可以使用 %errorlevel% 获取返回值。
-
PowerShell
可以使用 $LASTEXITCODE 获取返回值。
-
Python
可以使用 subprocess 模块获取返回值。
-
VS 解决方案
可以使用获取进程返回值的方式得到,示例:Process.ExitCode