STM32 简易Bootloader

这篇具有很好参考价值的文章主要介绍了STM32 简易Bootloader。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言:

一、flash分配

二、起始地址设置方法

三、设置app生成bin文件

四、下载程序 

五、合并hex


前言:

        主要实现bootloader串口读取app程序 ,将app程序拷贝到对应运行的flash区域,跳转到对应的区域执行代码。本文没有复杂的显示,app只点亮一个灯做测试用。

一、flash分配

        本文使用的是stm32f103ve,flash有512k(如果你使用的大于512k可以使用此程序,如果小于512k那么就需要调整flash区域),分为两个程序,app程序在0x08000000运行,因此将app程序放在0x08000000处,上电就运行app程序,如果串口通知有需要拷贝程序,那么再跳转到bootloader程序。flash分配图解如下:

stm32 bootloader程序,stm32,单片机,嵌入式硬件

二、起始地址设置方法

        打开keil设置app程序起始地址和大小,点击stm32 bootloader程序,stm32,单片机,嵌入式硬件

stm32 bootloader程序,stm32,单片机,嵌入式硬件

 设置bootloader程序起始地址和大小

stm32 bootloader程序,stm32,单片机,嵌入式硬件

 因为app程序没有偏移所以程序中不需要设置,但是需要设置bootloader程序中断向量表的偏移

在system_stm32f10x.c中找到systemInit函数,修改如下

stm32 bootloader程序,stm32,单片机,嵌入式硬件

将VECT_TAB_OFFSET 修改为0x70000,因为bootloader从0x08070000开始。

三、设置app生成bin文件

stm32 bootloader程序,stm32,单片机,嵌入式硬件

E:\keil\ARM\ARMCC\bin\fromelf.exe   --bin -o  .\OBJ\demo.bin .\OBJ\demo.axf

 需要找准目录

E:\keil\ARM\ARMCC\bin\fromelf.exe是keil的安装目录下的工具

.\OBJ\demo.axf是编译生成的axf文件

.\OBJ\demo.bin是需要生成的bin文件

四、下载程序 

因为下载的是两个文件,所以一定要擦除的是扇区,不能是整个flash,将app和boorloader全部下载就好。

stm32 bootloader程序,stm32,单片机,嵌入式硬件

 打开sscom,发送OK,进入到bootloader

stm32 bootloader程序,stm32,单片机,嵌入式硬件

 然后点击发送需要升级的bin文件

stm32 bootloader程序,stm32,单片机,嵌入式硬件

可以看到程序已经更新,可以拿改变灯的状态或者输出不同字符串查看程序是否更新成功。

本文只是做一个简易的demo,如果需要更多的应用可以将串口拷贝作成一个上位机。

五、合并hex

         如果bootloader和app都已经写好了,那么如果想要更方便的拷贝升级,那么可以将bootloader和app合并为一个文件,那么拷程序的时候只需要拷贝一个文件就可以。

打开bootloader的hex文件,和app的hex文件

stm32 bootloader程序,stm32,单片机,嵌入式硬件

 将bootloader的hex文件所有内容都拷贝到app的hex文件的前面,如果他们之间存在空行的话需要删除掉。合并完成之后将合并之后的hex文件烧写到芯片中即可使用。

代码地址:GitHub - clcmotta/bootloader: bootloader demobootloader demo. Contribute to clcmotta/bootloader development by creating an account on GitHub.https://github.com/clcmotta/bootloader.git文章来源地址https://www.toymoban.com/news/detail-534099.html

到了这里,关于STM32 简易Bootloader的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 IAP应用开发--bootloader升级程序

    原文链接:https://blog.csdn.net/ShenZhen_zixian/article/details/129424077 什么是IAP? IAP(In-Application Programming) 指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。在应用编程(IAP)是用户的应用代码对片内Flash存储器进行擦除/编程的方法。这种方式的典型应用就

    2024年01月17日
    浏览(77)
  • STM32 usart bootloader 源代码 STM32 usart bootloader 源代码 STM32 usart bootloader 原代源码

    STM32 usart bootloader 源代码   STM32 usart bootloader 源代码  STM32 usart bootloader 原代源码,上位机C#,下位机c。 简单修改可以支持stm32全系列芯片。 支持串口升级 该版本为优化过的版本, 1.支持代码段保护; 2.支持烧写失败重置; 3.兼容我公司生产的配套wifi模块和w5500模块远程更新

    2024年01月23日
    浏览(44)
  • STM32duino-bootloader:STM32的开源Bootloader深入解析

    STM32微控制器广泛应用于各种嵌入式系统。一个常见的需求是能够远程更新固件,而这通常是通过Bootloader来实现的。在本文中,我们将深入解析一个叫做STM32duino-bootloader的开源项目,它为STM32微控制器提供了一个USB DFU (Device Firmware Upgrade) bootloader。 STM32duino-bootloader简介 STM32d

    2024年02月11日
    浏览(42)
  • 【单片机】STM32单片机频率计程序,外部脉冲计数程序,基于脉冲计数的频率计程序,STM32F103

    两种方法用于在单片机中实现频率计的功能。 第一种方法是通过定时器来衡量信号的周期,然后将周期转换为频率。在这种方法中,你可以使用单片机的定时器模块来测量输入信号的周期,定时器会产生一个计数值,你可以根据这个计数值来推算出输入信号的周期,并通过简

    2024年02月11日
    浏览(48)
  • STM32 ——bootloader IAP

    本文使用单片机型号:STM32F104xx IAP(In Application Programming) 是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。为了实现 IAP 功能,系统将分为 bootloader 和 app 两部分。bo

    2023年04月09日
    浏览(32)
  • STM32 Bootloader开发记录

    编写一个基础的Bootloader,记录一下开发过程及遇到的问题。 1、基本思路 作为一个Bootloader,它首先需要具备跳转功能,能够跳转到我们的APP地址空间中运行APP。 其次,它还需要有能够读写FLASH的能力。除了启动APP,另外还有对APP进行升级的操作,这个功能需要用到读写FLAS

    2024年02月08日
    浏览(40)
  • 【STM32】制作一个bootloader

    工作环境:STM32CubeMX+Keil 相关环境准备这里就不介绍了。 bootloader是什么 bootloader就是单片机启动时候运行的一段小程序,这段程序负责单片机固件的更新,也就是单片机选择性的自己给自己下载程序。可以更新,可以不更新,更新的话,boot loader更新完程序后,跳转到新程序

    2024年02月08日
    浏览(55)
  • 【单片机】STM32单片机的各个定时器的定时中断程序,标准库,STM32F103

    高级定时器和普通定时器的区别(https://zhuanlan.zhihu.com/p/557896041): TIM1是高级定时器,使用的时钟总线是RCC_APB2Periph_TIM1,和普通定时器不一样。 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用

    2024年02月07日
    浏览(55)
  • 基于STM32的简易电子秒表仿真设计(仿真+程序+设计报告+讲解)

    仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号:C0078 基于STM32的简易电子秒表proteus仿真设计 结合实际情况,基于STM32F103单片机设计一个电子秒表。该设计应满足的功能要求为: 1、以STM32为最小系统电路进行连接,用四位数码管显示计时时间。 2、三个按键作为

    2024年02月11日
    浏览(49)
  • stm32 Bootloader设计(YModem协议)

    原文链接:https://blog.csdn.net/qinrenzhi/article/details/82771527 相信很多人都希望,不开盖就可以对固件进行升级吧,就像手机那些。下文中的bootload就来实现这样的功能。 前段时间有项目关于Bootload设计。所以就仔细的去了研究了一翻。以前都是用的stm32官方的,没有去深入了解。这

    2024年02月03日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包