H7-TOOL串口脱机烧录操作说明,支持TTL串口,RS232和RS485(2022-06-30)

标签:
bootloaderbspspistm32flash |
分类: STM32 |
通过Lua小程序,我们可以方便方便的在线方式做串口固件烧录,也可以离线方式运行Lua小程序做烧录。
本次是说明是采用H7-TOOL串口方式连接我们V7板子做的操作说明。
【协议说明】
1、发送固件大小:符号‘*’ 来同步,然后发送固件大小,板子收到后,回复0x30表示擦除相应扇区大小成功,回复0x60表示擦除失败。
2、发送固件数据:符号‘$’ 来同步,然后发送固件数据,每次224字节大小,板子收到后,回复0x30表示数据编程成功,回复0x60表示擦除失败。如此反复,一直到发送完毕。
3、发送结束命令:符号‘#’ 表示传输结束,目标板可以加载到APP运行了。
【硬件接线】
【准备工作】
当前上位机还没有做专门的串口脱机烧录一键下载界面,需要手动将Lua文件和app固件存到
1、H7-TOOL进入虚拟U盘
上电首界面长按S键 -> 系统设置 -> USB eMMC磁盘, 进入eMMC模拟U盘后,在如下路径新建文件夹串口脱机烧录
app.bin (50.03 KB)
uartfirmware.lua (3.04 KB)
【在线方式操作说明】
H7-TOOL可以采用USB,以太网或者WiFi方式连接上位机。
将前面lua小程序uartfirmware.lua的内容复制到如下窗口:
操作TOOL显示屏,进入Lua小程序界面:
执行效果如下:
【Lua小程序简单说明】
注释非常详细:
-------------------------------------------------------
--
--
--
-------------------------------------------------------
local str
local len
local bytes
local bin
local offset
local value
local count
local filesize
local byte0
local byte1
local byte2
local byte3
local filepath = "0:/H7-TOOL/Lua/串口脱机烧录/app.bin" --
表示串口脱机烧录文件夹下存的文件
local filepath1 =
"0:/H7-TOOL/Lua/串口脱机烧录"
-------------------------------------------------------
--
-------------------------------------------------------
f_dir(filepath1)
print()
-------------------------------------------------------
--
-------------------------------------------------------
uart_cfg(1, 115200, 0, 8, 1)
-------------------------------------------------------
--
-------------------------------------------------------
-- 获取固件大小
filesize=f_size(filepath)
print("============================================")
str= string.format("固件大小:%d",filesize)
print(str)
-- 将固件大小转换成四个字节
byte0 = ((filesize >> 0) & 0xFF)
byte1 = ((filesize >> 8) & 0xFF)
byte2 = ((filesize >> 16) & 0xFF)
byte3 = ((filesize >> 24) & 0xFF)
-- 发送固件大小给目标板
uart_send(1,
"*")
uart_send(1, string.char(byte0))
uart_send(1, string.char(byte1))
uart_send(1, string.char(byte2))
uart_send(1, string.char(byte3))
print("执行扇区擦除.....")
-- 等待返回数据,返回0x30表示擦除成功
len, str = uart_recive(1, 1, 10000)
if(str == '\x30') then
else
end
-------------------------------------------------------
--
-------------------------------------------------------
offset = 0
-- 第1个参数是路径,第2个参数的偏移地址,第3个参数读取大小
-- 返回值bytes表示读取的字节数,bin表示都回的数据
bytes, bin = f_read(filepath, 0, 224)
offset = offset + bytes
-- 读取数据为0,表示传输完毕
while(bytes > 0)
do
end
-------------------------------------------------------
--
-------------------------------------------------------
uart_send(1, "#")
print("固件传输完成")
-------------------------------------------------------
--
-------------------------------------------------------
【目标板程序简单说明】
最关键的就是串口程序处理:
void DemoUartUpdate(void)
{