3. 详细功能介绍

3.1. 烧录设置

../../_images/基础设置.png

3.1.1. 速度

脱机烧录器与开发板的通信质量与烧录速度和烧录线的长度有关。越高的烧录速度和越长的烧录线会影响烧录稳定性。

因此,当烧录状态不稳定时,可以试试调低烧录速度。请尽量缩短烧录线的长度,不要使用多根首尾巴衔接在一起的线连接来烧录器与开发板。

3.1.2. 烧录协议

脱机烧录器Mini只支持SWD协议,此处应选SWD IDCODE。

3.1.3. 对外供电

当此处选择为外部输入时,则必须使用typeC接口给脱机烧录器额外供电。

当此处选择了与要烧录的芯片对应的电压时,可以在脱机烧录器本身无额外供电的情况下给开发板下载程序(此时必须接VREF线),也可在脱机烧录器有额外供电时,不接VREF线。

3.1.4. 复位模式

当选择了硬件复位以外的选项时,脱机烧录器则可以不接RST线。但当要烧录的芯片进入了低功耗模式或已关闭SWD接口,则必须要接RST线,否则会连接不上目标芯片。

提示

当烧录线只有tms tck gnd三根可以连接时,需要:
  • 对外供电选择了对应芯片的电压

  • 复位模式选择了硬件复位以外的选项

  • 脱机烧录器在typeC接口接上了对应的供电

3.1.5. 解除读保护

当此处选择为开时,脱机烧录器将会在烧录数据前先解除开发板的读保护功能。

注意,只有1级的读保护是可以被解除的,2级的读保护是不可解除的。

提示

本脱机烧录器不支持写保护相关功能,因此,若是对应芯片设置了写保护导致烧录失败,则需要使用芯片对应的可以解写保护的工具。 如,使用ST-LINK,通过STM32 ST-LINK Utility软件可以用来解除STM32的写保护。

3.1.6. 读保护设置

可在此处给能支持设置读保护的芯片设置对应读保护等级,防止他人从外部直接读取芯片的内部代码。当给芯片设置了1级以上的读保护时不支持烧录后自动运行,需要上电复位。

读保护等级

效果

0级读保护

默认保护级别,它没有任何读保护

1级读保护

此等级的读保护可以被解除到0级,STM32的芯片降级前将会擦除内部代码

2级读保护

【谨慎使用!】最高级的读保护,不可被解除,除IAP方式,其他方式均不能读写FLASH

注意:部分芯片不支持2级读保护,因此会出现无2级读保护可选的情况。

提示

可以使用芯片对应的专门工具和软件来检查读保护是否生效,如使用ST-LINK,通过STM32 ST-LINK Utility软件可以用来检查STM32的读写保护情况。

3.1.7. 擦除模式

可以选择不擦除、区域擦除和全部擦除。

其中,不擦除仅能在芯片对应数据位置还未烧录任何数据的情况下使用。

区域擦除则会擦除芯片中将要烧录的固件所在的FLASH扇区。全部擦除则会擦除整个FLASH中的内容。

3.1.8. 蜂鸣器提示

当选择关闭蜂鸣器提示时,仅烧录时的鸣叫提示将会关闭,其他例如进入自动启停模式、串口模式下机台信号的蜂鸣器提示依然会响起。

3.2. 高级设置

3.2.1. 综合

3.2.1.1. 烧录次数

配置了该项后,脱机烧录器将只能烧录对应固定次数,若是途中出现烧录失败情况,失败的次数不会计入已烧录次数。

3.2.1.2. UID限制

可以通过限制UID(unique device ID 芯片的唯一码)的范围,来限定可烧录程序的芯片范围,UID为超出设定范围的芯片将无法使用脱机烧录器烧录,以达到防止程序被偷偷盗用的效果。

填写结束ID与起始ID的关系

效果

结束ID大于起始ID

只有起始ID到结束ID范围的芯片能烧录程序

结束ID等于起始ID

只能给当前填写UID对应的芯片烧录程序

结束ID小于起始ID

填写错误

3.2.1.3. 信号模式

脱机烧录器Mini 支持使用机台信号功能,可以级联(级联时注意共地),方便用户进行二次拓展。

3.2.1.3.1. 日志输出

当串口模式选择为 日志输出 时,机台信号为串口模式,可在脱机烧录器给开发板下载时通过查看串口输出信息实时了解与控制烧录情况。

此模式下若是要级联,可以使用USB转TTL模块进行连接。 将多个脱机烧录器的 TXD 都接到USB转串口模块的 RXD 位置,对应的 RXD 都接到 TXD , 然后将它们的 GND 连在一起来保证共地即可。

串口通信参数为:波特率- 115200 ;数据位- 8 ;停止位- 1 ;校验位-

通过给脱机烧录器的串口发送对应命令行,可以使脱机烧录器执行不同的烧录动作。

命令行的发送为16进制

帧头

地址

命令

长度

校验(CRC32)

55

XX(范围1-255)

XX

XX

XX XX XX XX

其中,校验内容填的是根据前面命令的填写内容通过CRC校验出的结果。 如,当命令行中 帧头-地址-命令-长度 对应内容为 55 01 01 00 时,根据此数字,通过计算即可得到对应校验内容。 可使用 http://www.metools.info/code/c15.html 来帮助计算校验内容。

../../_images/校验码.png

使用方式:

1、设定从机地址,对应命令为01

例如需要设定从机地址为01,则 帧头-地址-命令-长度 为 55 01 01 00 ,由此得到校验内容为 92 5A DB 64 ,发送设置成HEX 输入 55 01 01 00 92 5A DB 64 到串口中后,所有连接串口的烧录器的蜂鸣器会响一声并灯光闪烁,按下需要设定地址的烧录器的按键即可设置地址为01, 此烧录器灯光不再闪烁,不在进入设置地址模式。

接着,若需要设置下一个脱机烧录器的地址为02,只需再发送 55 02 01 00 即可,不需要发送对应校验内容,按下对应烧录器按键, 即可设置地址为02,此烧录器灯光不再闪烁,不在进入设置地址模式。其他脱机烧录器情况以此类推。

当发现设定地址过程中搞错了地址,可以使用 55 00 01 00 93 82 77 E3 来重新设定脱机烧录器的地址, 设定过地址的烧录器会进行响应发出一段音乐来提示之前的地址已经重新划0(本来就没有设定地址的烧录器不会响应这个命令)。

2、查询烧录次数,对应命令为02

例如对从机地址为01的脱机烧录器查询当前已烧录次数,可以由 55 01 02 00 得到校验内容为 E0 B1 84 B7 ,发送设置成HEX输入 55 01 02 00 E0 B1 84 B7 到串口中后,串口会返回当前烧录器烧录的次数。

3、开始烧录命令,对应命令为03

例如需要通过串口命令控制地址为01的脱机烧录器开始烧录,可以由 55 01 03 00 得到校验内容为 32 A8 45 6B ,发送设置成HEX输入 55 01 03 00 32 A8 45 6B 到串口中后,对应烧录器会开始烧录程序。注意此命令情况下烧录完成后并不会主动返回烧录状态,需要发送查询命令查询烧录的状态。

4、查询烧录状态,对应命令为04

例如需要查看地址为01的脱机烧录器的烧录状态,可以由 55 01 04 00 得到校验内容为 05 67 3B 11 ,发送设置成HEX输入 55 01 04 00 05 67 3B 11 到串口中后,串口会返回4种状态,分别是烧录成功、烧录失败、空闲状态、忙碌状态。

其中,空闲代表没进行过烧录,忙碌代表正常进行烧录或者在做指令模式。

5、进入指令模式,对应命令为05

例如需要使地址为01的脱机烧录器进入指令模式,可以由 55 01 05 00 得到校验内容为 D7 7E FA CD ,发送设置成HEX输入 55 01 05 00 D7 7E FA CD 到串口中后,即能进入指令模式。

进入指令模式后,需要换成字符串指令(即发送设置改成ASCII),此模式中只有发送对应指令或者输入exit才能退出该模式。 因此每次进入该模式下只能执行一次指令,指令执行完就会退出,若需要执行多个指令,则需要多次进入指令模式。可以输入的指令如下:

c0xXXXXXXXX 擦除指定地址,XXXXXXX为要擦除的地址。如c0x08000000就是擦除8000000地址对应的FLASH扇区

w0xXXXXXXXXSxxxxxxxxx 用户自定义数据写入,XXXXXXXX为写入内容对应的地址,xxxxxxxxx为需要写入的内容, 此内容需要控制在200字节以内。如w0x08000000S123456就是在8000000地址开始写入字符串123456

注意

关于命令:

  • 只需发送对应字符即可,命令后面不能带回车及空格。

关于指令模式:

  • 发送命令时使用的是HEX模式,发送指令时使用的是ASCII模式,只有输入正确内容时串口才有对应操作。

  • 填写对应地址时地址需要写齐,否则指令发送无效

  • 当使用用户自定义数据写入指令超出200字节范围后,再输入任何指令都会无响应,需将脱机烧录器重新上电解决。

3.2.1.3.2. 机台信号

当串口模式选择为 机台信号 时,机台信号模式为GPIO模式,串口不输出内容,STA引脚高电平触发一次烧录操作。可以通过查看BUSY和OK这两个引脚的输出情况来判断烧录状态。

此模式下若是要级联,可以将所有脱机烧录器共地后,使用一个机械按键,此按键一端接高电平,一端接所有的STA引脚,按下按键即可使STA引脚导通高电平,触发一次烧录操作。

BUSY

OK

烧录状态

0

0

空闲

1

0

忙碌

0

1

错误

3.2.2. 序列号

序列号即滚码功能。启用此功能,可在批量生产产品时对产品进行编号,方便对产品的管理。

../../_images/序列号.png

使能序列号功能: 下方配置好各项后,可以通过此项整体开关功能。

使能0、1、2、3: 最多支持四组序列号。

烧录地址: 填写当前序列号存放的地址。

字节数: 每次写入值的字节长度。

起始值: 填写序列号的初始值,要对应选择的字节数。

步进值: 填写每烧录一块芯片后序列号会增加的值。

3.2.3. UID

../../_images/UID.png

通过对UID使用特定算法加密,由于UID的唯一性,即使他人使用非法复制了当前芯片上的程序,此程序也将无法在另一个芯片上通过密钥检测,从而判定程序是否被盗版使用,需要该芯片型号支持包含UID。

脱机烧录器烧录时,从该芯片型号的UID地址获取UID,将UID结合key通过指定的算法计算出一个值烧录到指定烧录地址,用户的程序中也执行同样的计算过程,将计算值与读取指定烧录地址值做判断。

提供与野火脱机烧录器上位机算法对应的检验程序文件,可以方便用户将其添加进自己的工程代码。

参考提供的【F103_霸道_uid加密】工程,找到main.c文件中顶端的宏定义位置。

../../_images/UID加密测试工程定义位置.png

此工程会根据地址为0x08020000对应的内容为 01 02 03 04 的UID密钥和芯片内已有的UID来检查密钥是否正确,当检查到当前UID和烧录芯片时对应的UID一致,且设定UID密钥也一致时,串口会打印 密钥正确 字样。

使能UID加密: 下方配置好各项后,可以通过此项整体开关功能。

算法: 选择不同的算法进行加密,目前暂时仅有算法0。

端序: 读取烧录地址处的端序方式。

烧录地址: 填写UID加密密钥存放的地址,由用户自行设定。

字节数: 为UID加密密钥的长度。

Key: 此处用于填写UID加密密钥,16进制,当前软件版本key仅为小端模式添加,个数要对应选择的字节数。

3.2.4. 随机数

../../_images/随机数.png

点击“随机数管理”,通过设置,即可在芯片中的设定地址插入对应数量的随机数。 每个随机数长8bit,最高可以设置四组4096个随机数插入到芯片中。

使能随机数功能: 下方配置好各项后,可以通过此项整体开关功能。

使能0、1、2、3: 最多支持四组随机数。

烧录地址: 填写要写入随机数数组的首地址。

字节数: 每组从烧录地址起最多可以设置生成4096字节随机数。

3.3. 设备操作

3.3.1. 固件信息

../../_images/固件信息.png

从日志信息框打印当前连接设备保存的固件信息,如固件名字,注释信息等等。

3.3.2. 生成固件 & 导入固件

../../_images/导入与生成固件.png

当用户希望工厂不直接使用固件源文件进行脱机下载的时候,可以使用我们的远程文件功能。我们会将要生成的固件经过加密生成专属的 .fire 文件,可有效防止文件被反编译破解。

1.负责烧录用户将持有的设备连接上位机,获取设备ID复制提供给负责生成固件用户。

../../_images/获取设备ID.png

2.生成固件用户设置好所有配置和添加好固件后,填入用作烧录设备的ID,生成的 .fire 文件发送给烧录方。

../../_images/生成固件.png

3.烧录用户点击导入固件,选择 .fire 文件,对脱机烧录器Mini的作用等同于一键烧录此固件。

3.3.3. 删除固件

../../_images/删除固件.png

删除设备里保存的固件。

3.3.4. 固件注释

../../_images/固件注释.png

在此填好固件注释对应内容,并将加载对应配置的固件下载到脱机烧录器后,可点选“固件信息”看到对应的注释。

3.3.5. 配置设置 & 重置配置

../../_images/配置设置与重置配置.png

1.配置设置项包含导入配置文件、生成配置文件功能。此功能主要为方便工程师调试,选择导出路径后生成配置,此配置为明文记录与不包含固件信息, 之后便可以选择导出的配置文件点击覆盖配置。

2.重置配置为重置上位机所有配置项。

3.3.6. 清除日志

../../_images/清除日志.png

清空日志信息框内容。