3. 详细功能介绍

3.1. 关于烧录配置框的介绍

../../_images/烧录配置.png

3.1.1. 速度

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

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

3.1.2. 烧录协议

由于fireFlasher MINI只支持SWD协议,此处应选SWD IDCODE。

3.1.3. 对外供电

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

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

3.1.4. 复位模式

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

提示

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

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

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

3.1.5. 擦除模式

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

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

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

3.1.6. 解除读保护

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

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

提示

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

3.1.7. 串口模式

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

3.1.7.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.1.7.2. 机台信号

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

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

BUSY

OK

烧录状态

1

1

空闲

0

1

忙碌

1

0

错误

3.1.8. UID限制

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

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

效果

结束ID大于起始ID

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

结束ID等于起始ID

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

结束ID小于起始ID

填写错误

3.1.9. 读保护等级

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

读保护等级

效果

0级读保护

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

1级读保护

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

2级读保护

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

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

提示

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

3.1.10. 烧录次数

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

3.1.11. 蜂鸣器提示

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

3.1.12. 固件注释

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

3.2. 随机数、UID加密、序列号

../../_images/随机数、UID加密、序列号位置.png

3.2.1. 随机数

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

../../_images/随机数管理.png

使用数组: 此处可选择要使用的数组数量。

编辑: 根据使用数组的填写情况,选择对应数组号后,可设定对应的烧录地址和随机数数量。 如,选择了使用数组数为2后,编辑处选择1,则下面填写的烧录地址和随机数数量为数组1的配置,编辑处选择2,则为数组2的配置。

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

随机数数量: 此处用于填写要写入的随机数数量。

3.2.2. UID加密

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

../../_images/UID加密.png

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

长度: 为UID加密密钥的长度,单位为8bit。

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

Key: 此处用于填写UID加密密钥,16进制,当前软件版本key仅为小端模式添加。

我们有提供与野火脱机烧录器上位机算法对应的检验程序文件,可以方便用户将其添加进自己的工程代码,从而通过检测密钥是否正确,增加相对应防止盗用的措施。

同时,我们也有提供对应的工程文件方便用户简要了解UID检测程序的使用方法和效果。

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

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

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

用户拿到工程后,也可根据自己要在上位机填入的UID加密内容来更改我们提供的工程来检查。

3.2.3. 序列号

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

../../_images/序列号管理.png

使用数组: 选择1以上的数组数量后,即可在芯片的不同地址中写入不同设定情况的序列号,可支持在四个不同的地址分别填入对应序列号。

当前数组: 根据使用数组的填写情况,选择对应数组号后,可设定对应的序列号长度、烧录地址、起始号和号步进。

长度: 此处可选择当前数组的序列号长度,单位为8bit。

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

起始号: 此处用于填写序列号的初始值。

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

3.3. 远程文件

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

本地使用步骤如下:

1、在固件栏中放好要生成固件所包含的可执行文件,填写并确认好对应首地址,配置好烧录配置相关内容。

2、点击 生成固件 ,手动填写要生成的文件名,点击保存,即可生成对应的fire文件。

3、然后点击 生成固件 旁的 烧录固件 ,在弹出的文件显示窗口中找到刚才生成的.fire文件,即可将此文件下载到脱机烧录器当中。

../../_images/远程文件.png

用户使用时,只用在操作第二步之后,将生成的fire文件交给工厂,然后工厂执行第三步,也就是在收到文件后,直接点击 烧录固件 ,找到对应文件,即可给脱机烧录器下载文件。