2022-Supercon6-Badge 固件编译与烧录
前言
Hackaday Superconference 2022 Badge (Voja4) 是一个模拟的 4 位处理器,项目地址。目前在国内由无序熵增进行了小批量复刻。该教程仅教授如何使用 MPLAB X IDE 进行固件编译与烧录,不涉及源码部分(主要是我看不太懂)。
固件编译
下载
- 下载 MPLAB X IDE 并安装。
- 下载 Badge Berlin 2023.zip 并解压。
配置
- 打开 MPLAB X IDE。
- 点击
File -> Open Project
。 - 导入解压后的 Badge Berlin 2023 文件夹。
- 右键项目,点击
Properties
。 - 在弹出的窗口中,选择编译工具链为
PIC24F-GA-GB_DFP,1.2.101
,下面的编译器选择为XC16 (v2.10)
。 - 点击
确定
保存配置。
修改编译信息
- 在项目文件夹中找到
badge22.O
文件。 - 修改
badge22.O
文件中的第 20-24 行:.equ Ver, 1 .equ Rev, 1 .equ Year, 24 .equ Month, 8 .equ Day, 13
为对应的信息(这里是已修改的信息)。
编译
- 点击
Production
。 - 选择
清除并编译项目
。 - 编译成功后,在项目文件夹
dist\default\production
中会生成.hex
文件。
转换并剪切
如果你有 PICKIT3/4 可以直接烧录并跳过这一部分
- 下载我编写的 hex2bin.py 脚本。
- 使用
python3
运行脚本,将.hex
文件转换为.bin
文件。
烧录
使用 PICKIT3/4
- 将 PICKIT3/4 与 Badge Berlin 2023 连接。
- 打开 MPLAB X IDE。
- 点击
Tools -> PICkit 3/4 Programmer
。 - 点击
Program
。 - 等待烧录完成。
使用 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 中的说明。
重新刷写徽章所需的步骤如下:
- 将 USB/UART 转换器的 TX 端(通常是绿色的)连接到徽章上 I/O 连接器的第 3 针。黑色线缆是地线连接,接到第 1 针。Rx 和 Vcc 线缆应保持不连接状态。
- UART 设置为
9600, N, 8, 1
。在 SFR 0xF3(SerCtrl)中的设置不会影响引导加载模式下或程序保存/加载的波特率。 - 用一根导线或镊子短接第 10 针(地)和第 12 针(复位)以复位徽章,同时按住 ALT 和 SAVE 按钮。松开按钮。SAVE 指示灯应快速闪烁 5 秒。
- 复位徽章,同时按住 ALT 和 LOAD 按钮。松开按钮。LOAD 指示灯应慢速闪烁。
- 通过串行端口从计算机发送附加文件 “Badge Berlin 2023.bin”。传输开始时,LOAD 指示灯应快速闪烁。
- 大约 30 秒后,文件传输完成,两个指示灯(SAVE 和 LOAD)应保持常亮。
- 按下 MODE 按钮进入正常模式(或复位徽章)。内存转储显示的前两行应为
00000001, 00000001
,表示版本 1,修订版 1。
如果徽章无法启动,只需重复第 2 步一次。这将恢复之前的程序内容。
按下任意按钮开始正常操作。
也可参考:官方指南。
- 如果使用 Linux,将串行端口设置为 “raw” 模式:
stty -F /dev/ttyUSB1 raw
。 - 按住 ALT + LOAD 并接地复位引脚(12 针连接器的最右侧):此时 LOAD 指示灯应缓慢闪烁。
- 释放按钮。
- 开始发送数据,此时 LOAD 指示灯闪烁得更快。
- 大约 20-30 秒后,SAVE 和 LOAD 指示灯都会常亮,表示结束。
- 按下 MODE 按钮可进入版本/校验和显示界面。
- 再次按下 MODE 即可完成!