2022-Supercon6-Badge firmware compilation and burning

 

2022-Supercon6-Badge 固件编译与烧录

前言

Hackaday Superconference 2022 Badge (Voja4) 是一个模拟的 4 位处理器,项目地址。目前在国内由无序熵增进行了小批量复刻。该教程仅教授如何使用 MPLAB X IDE 进行固件编译与烧录,不涉及源码部分(主要是我看不太懂)。

固件编译

下载

  1. 下载 MPLAB X IDE 并安装。
  2. 下载 Badge Berlin 2023.zip 并解压。

配置

  1. 打开 MPLAB X IDE。
  2. 点击 File -> Open Project
  3. 导入解压后的 Badge Berlin 2023 文件夹。
  4. 右键项目,点击 Properties
  5. 在弹出的窗口中,选择编译工具链为 PIC24F-GA-GB_DFP,1.2.101,下面的编译器选择为 XC16 (v2.10)
  6. 点击 确定 保存配置。

修改编译信息

  1. 在项目文件夹中找到 badge22.O 文件。
  2. 修改 badge22.O 文件中的第 20-24 行:
    .equ Ver, 1
    .equ Rev, 1
    .equ Year, 24
    .equ Month, 8
    .equ Day, 13
    

    为对应的信息(这里是已修改的信息)。

编译

  1. 点击 Production
  2. 选择 清除并编译项目
  3. 编译成功后,在项目文件夹dist\default\production中会生成 .hex 文件。

转换并剪切

如果你有 PICKIT3/4 可以直接烧录并跳过这一部分

  1. 下载我编写的 hex2bin.py 脚本。
  2. 使用 python3 运行脚本,将 .hex 文件转换为 .bin 文件。

烧录

使用 PICKIT3/4

  1. 将 PICKIT3/4 与 Badge Berlin 2023 连接。
  2. 打开 MPLAB X IDE。
  3. 点击 Tools -> PICkit 3/4 Programmer
  4. 点击 Program
  5. 等待烧录完成。

使用 BIN 文件

参考官方的烧录教程:https://github.com/Hack-a-Day/2022-Supercon6-Badge-Tools/blob/main/firmware/README.md

Windows 可以使用 win_flash.py,推荐我的脚本 com_tool.py,带进度条。

烧录教程翻译

推荐 来源: Reflash.txt 中的说明。

重新刷写徽章所需的步骤如下:

  1. 将 USB/UART 转换器的 TX 端(通常是绿色的)连接到徽章上 I/O 连接器的第 3 针。黑色线缆是地线连接,接到第 1 针。Rx 和 Vcc 线缆应保持不连接状态。
  2. UART 设置为 9600, N, 8, 1。在 SFR 0xF3(SerCtrl)中的设置不会影响引导加载模式下或程序保存/加载的波特率。
  3. 用一根导线或镊子短接第 10 针(地)和第 12 针(复位)以复位徽章,同时按住 ALT 和 SAVE 按钮。松开按钮。SAVE 指示灯应快速闪烁 5 秒。
  4. 复位徽章,同时按住 ALT 和 LOAD 按钮。松开按钮。LOAD 指示灯应慢速闪烁。
  5. 通过串行端口从计算机发送附加文件 “Badge Berlin 2023.bin”。传输开始时,LOAD 指示灯应快速闪烁。
  6. 大约 30 秒后,文件传输完成,两个指示灯(SAVE 和 LOAD)应保持常亮。
  7. 按下 MODE 按钮进入正常模式(或复位徽章)。内存转储显示的前两行应为 00000001, 00000001,表示版本 1,修订版 1。

如果徽章无法启动,只需重复第 2 步一次。这将恢复之前的程序内容。

按下任意按钮开始正常操作。

也可参考官方指南

  1. 如果使用 Linux,将串行端口设置为 “raw” 模式:stty -F /dev/ttyUSB1 raw
  2. 按住 ALT + LOAD 并接地复位引脚(12 针连接器的最右侧):此时 LOAD 指示灯应缓慢闪烁。
  3. 释放按钮。
  4. 开始发送数据,此时 LOAD 指示灯闪烁得更快。
  5. 大约 20-30 秒后,SAVE 和 LOAD 指示灯都会常亮,表示结束。
  6. 按下 MODE 按钮可进入版本/校验和显示界面。
  7. 再次按下 MODE 即可完成!