发新帖我要提问
12
返回列表
打印
[其他ST产品]

如何在STM32中实现自定义的Bootloader来更新固件?

[复制链接]
楼主: v26g7l
手机看帖
扫描二维码
随时随地手机跟帖
21
风凉| | 2024-4-12 14:00 | 只看该作者 回帖奖励 |倒序浏览
一般就是指针的设置,跳转,就是BootLoader

使用特权

评论回复
22
西洲| | 2024-4-12 16:00 | 只看该作者
你得有变量标记的,标记这个固件是否是新的

使用特权

评论回复
23
ccook11| | 2024-4-12 17:54 | 只看该作者
应该能够将固件文件转换为Bootloader可以理解的格式,并通过UART、SPI等接口发送给STM32。

使用特权

评论回复
24
捧一束彼岸花| | 2024-4-12 18:00 | 只看该作者
你想用什么方式升级APP的固件?

使用特权

评论回复
25
未说出口的像你| | 2024-4-12 20:00 | 只看该作者
一般都要写代码的,就是MCU原来的ISP不要用,自己再写一套IAP的

使用特权

评论回复
26
月亮一键变蓝| | 2024-4-12 22:00 | 只看该作者
网上搜搜在线升级呗,应该有好多的吧

使用特权

评论回复
27
将爱藏于深海| | 2024-4-13 02:00 | 只看该作者
你可以在程序初始运行BootLoader,然后检查是否有新固件,有的话跳转升级,没有就直接跳转到固件里

使用特权

评论回复
28
一只眠羊| | 2024-4-13 06:00 | 只看该作者
自定义的BootLoader?能细说说吗?是怎么个自定义?

使用特权

评论回复
29
温室雏菊| | 2024-4-13 12:00 | 只看该作者
一般用BootLoader的话就是自己写个跳转指针程序吧

使用特权

评论回复
30
mollylawrence| | 2024-4-15 20:06 | 只看该作者
如果需要远程升级,可以实现OTA(Over-The-Air)技术,通过无线网络接收新固件。这通常需要一个服务器来存放固件镜像,并通过串口或其他通信方式与客户端设备进行数据传输。

使用特权

评论回复
31
hilahope| | 2024-4-16 13:29 | 只看该作者
在完成Bootloader的编写后,需要进行充分的测试和验证,确保Bootloader能够正确地识别新固件、下载固件、切换到新固件运行,并且在更新失败时能够回滚到旧版本或进入安全模式。

使用特权

评论回复
32
uptown| | 2024-4-16 15:31 | 只看该作者
在最终部署前,需要对Bootloader进行彻底的测试,以确保它能够正确地接收、验证和编程固件图像,并且在更新过程中保持设备的稳定性。

使用特权

评论回复
33
uiint| | 2024-4-16 21:31 | 只看该作者
在上电或复位后,STM32会从Flash的前4个字节开始执行程序,这通常是Bootloader的入口点。Bootloader随后可以执行各种任务,如检查固件完整性、更新固件等。

使用特权

评论回复
34
jkl21| | 2024-4-17 10:50 | 只看该作者
将固件映像烧写到Flash中主应用程序的区域。

使用特权

评论回复
35
macpherson| | 2024-4-17 16:33 | 只看该作者
编写Bootloader程序,它将在设备的Boot模式下运行。Bootloader的主要任务是接收固件更新数据,验证其完整性,并将固件加载到内存中执行。

使用特权

评论回复
36
tifmill| | 2024-4-19 23:09 | 只看该作者
编程完成后,Bootloader需要更新必要的指针,如栈顶指针和Reset_Handler指针,然后跳转到新固件的开始处执行。

使用特权

评论回复
37
belindagraham| | 2024-4-20 13:24 | 只看该作者
编写代码以接收固件更新数据。这可以通过UART、SPI、I2C等接口实现。
实现闪存写入逻辑。STM32 HAL库提供了闪存编程函数,如HAL_FLASH_Unlock(), HAL_FLASH_Program(), 和 HAL_FLASH_Lock()等。

使用特权

评论回复
38
usysm| | 2024-4-20 20:05 | 只看该作者
在Bootloader中,初始化必要的硬件,如时钟、GPIO、串口等,以便与外部世界进行通信。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则