想买车车 发表于 2025-3-21 11:29:21

记录:8H8K64U串口升级(完成)

起因:
1.项目涉及到单片机远程升级,然后自己的技术太过于拉跨。
2.我想也许可能会有和我一样的存在,他们面对这个问题时也和我一样手足无措,所以在这里对整个学习流程进行记录
小范有话说:我确实技术很菜,所以也不知我这个项目能够做到哪一步,所以边做边记录吧。
希望各位前辈们多多批评多多指导,也希望给后来的人留下这么一个东西儿。

基于官方例程进行改编,修改串口数据接收代码。结合自己的测试工具完成升级




神农鼎 发表于 2025-3-21 12:39:25



深圳国芯人工智能有限公司-在线升级

国芯人工智能 发表于 2025-3-21 11:33:01

STC8H8K64U远程升级学习记录<br><br>本次项目涉及STC8H8K64U单片机的远程升级功能,旨在实现设备固件的在线更新。以下是学习流程的简要记录:<br><br>1. 硬件准备:STC8H8K64U单片机支持ISP(在系统编程)和IAP(在应用编程)功能,硬件上需确保串口通信正常,并预留足够的Flash空间用于存储新固件。<br><br>2. 固件分区设计:将Flash划分为引导区(Bootloader)和应用区(Application)。引导区负责接收新固件并写入应用区,应用区为实际运行的代码。<br><br>3. Bootloader开发:编写引导程序,通过串口或网络接收新固件数据,并进行校验(如CRC32)。校验通过后,将固件写入应用区,并跳转至新程序入口。<br><br>4. 固件传输协议:采用可靠的通信协议(如Ymodem或自定义协议),确保数据传输的完整性和稳定性。传输过程中需处理重传机制和超时控制。<br><br>5. 安全性考虑:引入加密算法(如AES)对固件进行加密传输,防止固件被篡改或窃取。同时,验证固件的数字签名,确保其来源可信。<br><br>6. 测试与验证:在实验室环境中模拟远程升级场景,测试升级过程的稳定性和容错能力,确保系统在各种异常情况下仍能正常工作。<br><br>通过以上步骤,初步实现了STC8H8K64U的远程升级功能,后续将进一步优化性能和安全性。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]

想买车车 发表于 2025-3-21 11:35:44

在这里首先感谢论坛大佬的技术贴支持
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=9387
里面包含有大佬自己做的这个bootloader压缩包

想买车车 发表于 2025-3-21 11:36:35

国芯人工智能 发表于 2025-3-21 11:33
STC8H8K64U远程升级学习记录本次项目涉及STC8H8K64U单片机的远程升级功能,旨在实现设备固件的在线更新。以 ...

感谢支持,谢谢指导

想买车车 发表于 2025-3-21 11:47:37

其实通过观看大佬们零零散散的讲述与这个官网提供的这个例程包,似乎是明白了一部分。
大概自己的思路是(如有错误希望大佬们不吝指导):写入bootloader后,通过bootloader检查这个标记位,然后启动AP代码。如果涉及到升级的话。首1.是这个AP代码中留有接口
2.然后我们将代码通过串口传输
3.当APP1接收到代码并对其进行验证无误后将其写入到FT24C512中
4.写入完毕,改变标记位并重启单片机
5.bootloader检测到状态位发生改变,将单片机的APP1进行擦除
6.读取FT24C512中的数据并将其写入到单片机中,写入完毕后将状态位进行改变
7.单片机开机实现升级。
当然这里的几个步骤是具有一定缺陷的,网上有大佬思路是:将我们单片机划分为三个部分,1是bootloader区、2是APP1区、3是APP2区。正常运行在APP1区,如果升级那就需要我们将APP2上传至APP2区,然后单片机重启进入APP2.如果发现这个APP2不好使用可以直接回退到APP1区域。下一次升级时先将这个上一个版本部分的空间进行清除,然后写入新的APP,然后重启单片机。基本上就是这个思路

想买车车 发表于 2025-3-21 11:52:45

虽然自己是看了部分例程,但是实际上手任然会比较棘手。所以我先开始对官网那给出代码进行复现。
将官网代码结合自己项目板进行试验。首先是这个加入按键响应与这个FT24C512模块的读取与写入

想买车车 发表于 2025-3-21 11:53:45

然后在这个demo程序中使用另一颗按键做不同的响应

想买车车 发表于 2025-3-21 11:55:21

然后修改代码压缩包如附件所示

想买车车 发表于 2025-3-21 11:59:04

过程中发现:目前是采用官网给的下载工具,只有当代码运转在ISP部分时,才能够将数据写入。为了后续实现升级那后续必定需要这个其他的烧录方式。借助AI工具勉强写了一个这个:

想买车车 发表于 2025-3-21 12:12:43

目前通过例程(uart升级),知晓:我们需要升级时,首先是将代码会跳到这个ISP区域,然后通过官方的工具将其进行写入实现升级。所以我现在需要实现的是:不用回退到ISP区域在APP1部分接收APP2的代码,将其进行校验后写入FT24C512中。
页: [1] 2 3 4 5 6
查看完整版本: 记录:8H8K64U串口升级(完成)