晟矽微电ISP烧录工具 (版本 {SystemVersion}) 简要介绍:

  1. 本工具主要实现 MCU 中内存(SRAM)/闪存(Flash)的擦除,导出,烧录, 读/写保护. 并能读系统内存区(System Memory)的除自举程序区(Boot Loader)外的地址, 但不能改写系统内存区.
  2. 串口连接参数中,须设: 偶校验,8位数据位,1位停止位。 波特率,尽量选高速度,除非出现稳定性问题。 对MS32F031, 已测过最高速 115200, 通讯正常.
  3. 如果用 JLink 工具连接芯片, 连接速度不一定要设很高 (太高,如 4M, 也许会造成写入/读出不太稳定). 并且,测试中碰到杜邦线连接性能不太稳定, 请尽量用硅胶线。
  4. MCU对指令的回答,经常有:成功 ACK (0x79, 即字符y), 与 失败 NACK (0x1F).
  5. 对MS32F031, 选项字开头两字节, 决定了主闪存区的读保护等级 (详见芯片文档, 选项字页,永远不会读保护,永远可读可写):
    • 0xAA55: 0级(未读保护).
    • 0xCC33: 2级(强读保护,类似砖头样).
    • 其它 (如 0xBB44 等): 是1级(普通读保护).
  6. 摩拖罗拉的S记录(S Record, 或叫S文件, S File), 实际上有三种不同的格式: S19 (两字节地址), S28(三字节地址), S37(四字节地址). 但有不少用户统称这三种格式为 S19. 我们根据用户习惯, 在这个工具里, 也将泛指 S37 为 S19. 实际上,对32位芯片 4-字节的 S37, 比 2-字节的 S19 更适合。
  7. 导出文件的格式:
    • 建议使用 Hex 或 S19.
    • Bin文件格式,完全不包含地址信息。 如果出于特殊原因, 要用 bin 格式,请从主闪存区(或选项字区)的物理起始地址开始。
    • Hex可使用2或4字节地址.
    • 对 S19/Hex , 连续的4个0xFF, 会被略过,不会被导出。因为后续烧录所导出的文件时, 特定页总是会先被擦除到0xFF状态。
    • 对 Bin/S19/Hex 三种格式, 靠近导出区末端(高地址)的连续 0xFF 的部分,不会被导出.
    • 按页导出时, 可以将 选项字 与 主闪存 的内容合并成一个文件 (只能存为 S19 或 Hex 格式).
    • 原则上 S19/Hex 的行的不连续(空白)区域,应认为是0xFF. 但个别第三方转换软件在转成bin格式时, 有可能会以0x0填充, 造成错误, 请主人明察秋毫.
  8. 对MS32F031, 擦除一页,与擦除全部页, 耗时基本相同,最长都是40ms. 详见芯片文档.
  9. 对选项字页,不须要手动擦除,因为芯片上的修改选项字功能, 会先读出页的内容,修改相关内容,然后擦除整页,再写入. 并重启(约需1秒), 以实现选项字的功能配置。
  10. 页(Page)的大小是固定的, 1024 字节。但"(扇)区/区域" (Sector)的大小,在ARM的文档里, 不同的地方,可能有不同的意思。
  11. 烧录时, 若数据长度不是4的倍数,会以 0xFF 来填充.

已知问题:

  1. 有进度条的长时任务, 实际是第二线程执行,因为进度条得在主线程。 不要在任务结束前打开其它页面,会让 MCU 乱套的. 我们已尽量避免。
  2. 暂时未实现: 停止进度条,取消导出/烧录任务.
  3. 暂时未实现: 从特定地址烧录bin文件.