企业网站开发费是固定资产吗,网页生成长图 iphone,个人类网站有哪些,购物网站的设计思路背景
前段时间用MicroPython开发了一个项目#xff0c;硬件是ESP32-C3#xff0c;目前准备量产#xff0c;我需要提供固件以供加工厂批量烧录#xff0c;需要把我有程序的板子里的程序读出来#xff0c;然后下到别的板子上#xff0c;以下做这件事情的过程记录。
1.固件…背景
前段时间用MicroPython开发了一个项目硬件是ESP32-C3目前准备量产我需要提供固件以供加工厂批量烧录需要把我有程序的板子里的程序读出来然后下到别的板子上以下做这件事情的过程记录。
1.固件读取烧录
在准备ESP32-C3硬件的量产过程中将MicroPython程序固化到设备中有以下步骤
1.读出固件
对于已经烧录到某个ESP32-C3板子上的固件要读出并复制到其他板子上可以使用esptool.py或其他串行通信工具来做这个工作。以下是使用esptool.py读取固件的一个基本示例
esptool.py --chip esp32c3 --port /dev/ttyUSB0 read_flash 0x10000 0x100000 firmware.bin
--chip esp32c3指定了芯片类型
--port /dev/ttyUSB0指定了ESP32-C3连接到计算机的串行端口
read_flash是要执行的操作0x10000是开始读取的起始地址0x100000是要读取的长度这个长度需要您根据实际的固件大小来决定
firmware.bin是读取的内容保存到的文件
2.烧录到新的ESP32-C3板子
在获取了固件镜像文件后您可以使用esptool.py将这个镜像烧录到新的ESP32-C3板子上。烧录命令类似于
esptool.py --chip esp32c3 --port /dev/ttyUSB0 write_flash 0x10000 firmware.bin
在这里write_flash是烧录操作0x10000是烧录的起始地址firmware.bin是固件文件。
2.烧录图形界面
接下来要用PysimpleGUI来做个烧录界面,包含串口设置,文件选择,擦除和烧录的按钮,用于执行以上的烧录代码。
要使用 PySimpleGUI 创建一个图形界面用于设置串口选择文件以及执行擦除和烧录操作可以参考下面的代码示例。这个示例提供了一个基本的界面框架并使用了 esptool.py 的命令行操作。 要用到 PySimpleGUI 和 pyserial 库。如果没有安装可以使用 pip 进行安装
pip install PySimpleGUI pyserial
接下来是代码示例
import os
try:import PySimpleGUI as sgimport serial
except:os.system(pip install PySimpleGUI pyserial)import PySimpleGUI as sgimport serial
import subprocess
from serial.tools import list_ports # 修正导入# 获取系统中的串口列表
def get_serial_ports():ports list_ports.comports() # 修正使用list_portsreturn [port.device for port in ports]# 获取系统中的串口列表
def get_serial_ports():ports list_ports.comports() # 修正使用list_portsreturn [port.device for port in ports]# 执行esptool的命令
def run_esptool_cmd(cmd):try:process subprocess.run(cmd, shellTrue, checkTrue, stdoutsubprocess.PIPE, stderrsubprocess.PIPE)return process.stdout.decode()except subprocess.CalledProcessError as e:return e.stderr.decode()# GUI Layout
layout [[sg.Text(串口:), sg.Combo(get_serial_ports(), size(10, 1), keyPORT), sg.Button(刷新串口)],[sg.Text(固件文件:), sg.Input(./firmware.bin,size(25, 1), keyFIRMWARE), sg.FileBrowse(浏览)],[sg.Button(读取), sg.Button(擦除), sg.Button(烧录)],[sg.Output(size(60, 5))]
]# Create the window
window sg.Window(ESP32-C3 烧录工具, layout)# Event Loop
while True:event, values window.read()if event sg.WIN_CLOSED:breakelif event 刷新串口:window[PORT].update(valuesget_serial_ports())elif event 擦除:if values[PORT]:cmd fesptool.py --chip esp32c3 --port {values[PORT]} erase_flashprint(发送擦除指令cmdrun_esptool_cmd(cmd)我想用PYSIMPLEGUI来做个烧录界面,包含串口设置,文件选择,擦除和烧录的按钮,用于执行以上的烧录代码,请给出代码示例)else:print(请先选择一个串口)elif event 读取:if values[PORT] and values[FIRMWARE]:cmd fesptool.py --chip esp32c3 --port {values[PORT]} read_flash 0x10000 0x100000 {values[FIRMWARE]}print(读取返回cmdrun_esptool_cmd(cmd))else:print(请先选择一个串口和文件保存路径)elif event 烧录:if values[PORT] and values[FIRMWARE] and os.path.exists(values[FIRMWARE]):firmware_path values[FIRMWARE]cmd fesptool.py --chip esp32c3 --port {values[PORT]} write_flash 0x10000 {firmware_path}print(发送烧录指令cmdrun_esptool_cmd(cmd))else:print(请确保选择了串口和固件文件并且固件文件路径正确)# Close the window
window.close()
代码说明 list_ports.comports() 函数用来获取当前系统上可用的串口。 run_esptool_cmd 函数用来执行 esptool.py 的相关命令并捕捉输出。 界面布局定义了串口选择、文件选择和操作按钮。 事件循环在接收到事件时执行相关操作比如刷新串口列表执行擦除和烧录操作。
如果有任何疑问可以微信联系我全网同名。