sm32的bootloader一般是通过开机时设置boot0=1来实现的。下面是通过程序来实现:

原来的startup文件是直接把flash的数据加载到ram里面然后跑main函数循环

bootloader的程序在0x1FFF D800

那只要在进入main函数之前先判断是否要进入bootloader,如果要进入bootloader,就载入0x1fff d800这个地址就好了。否则就继续未修改之前的操作。

void systemReset(void)
{// Generate system resetSCB->AIRCR = AIRCR_VECTKEY_MASK | (uint32_t)0x04;
}void systemResetToBootloader(void)
{/*修改在RAM里面的标志位*/*((uint32_t *)0x20009FFC) = 0xDEADBEEF; // 40KB SRAM STM32F30X,    0x20009FFC=0x20000000+40*1024-4(ram的最后一个字)/*产生复位信号*/systemReset();
}

修改startup 的Reset_Handler

原来的:

**********************************************************************

Reset_Handler:/* Copy the data segment initializers from flash to SRAM */movs  r1, #0b  LoopCopyDataInit

修改后的:

***********************************************************************

Reset_Handler:ldr r0, =0x20009FFC         ldr r1, =0xDEADBEEF         ldr r2, [r0, #0]            str r0, [r0, #0]            cmp r2, r1                  beq Reboot_Loader           /* Copy the data segment initializers from flash to SRAM */movs  r1, #0b  LoopCopyDataInitReboot_Loader:                // Reboot to ROM            ldr     r0, =0x1FFFD800     ldr     sp,[r0, #0]        ldr     r0,[r0, #4]        bx      r0                

stm32 复位到内部bootloader相关推荐

  1. STM32 IAP升级--内部FLASH和外部FLASH两种方式实现

    芯片型号STM32F103RET6,flash大小512K,起始地址0x08000000 一般说STM32内部FLASH就是指主存储器区域 [注]此实验中启动方式设置为复位后从主闪存存储器启动(BOO ...

  2. STM32-F407入门学习专题(二) STM32复位和中断

    系列文章目录 第2章 STM32复位启动和中断控制 目录 系列文章目录 前言 1 NVIC-嵌套向量中断控制器 1.1 NVIC寄存器 1.2 中断优先级分组 1.3 NVIC相关函数 2 中断配置实 ...

  3. STM32复位死机(无法启动)

    STM32复位死机(无法启动) 嗯,不知道怎么说,stm32的看门狗死机了,下面是仿真时报错信息: The processor has escalated a configurable-priorit ...

  4. STM32 跳转系统BootLoader

    STM32 跳转系统BootLoader STM32 进入系统 bootLoader 主要有两种方法: (1)一种是设置 boot 引脚,进入系统 bootLoader. (2) 一种是应用程序跳转到 ...

  5. atmega8a如何烧写程序_快捷又安全!如何利用芯片内部Bootloader烧写程序?

    CC2640 R2是德州仪器推出的面向 Bluetooth Smart 应用的低功耗无线 MCU.该芯片运行TI的BLE协议栈,具有功耗低,外设种类丰富,射频性能好等特点.利用它可以实现许多有趣的应用 ...

  6. stm32 U盘升级 bootloader程序 基于stm32f407 将升级包下载到U盘中,插入到设备中,完成对主程序的升级

    stm32 U盘升级 bootloader程序 基于stm32f407 将升级包下载到U盘中,插入到设备中,完成对主程序的升级,无需上位机操作. 清单: u盘升级的bootloader源码. YID: ...

  7. STM32复位与时钟、定时器

    复位与时钟     1>复位         1,上电复位:MCU当NRST为低电平时产生复位,而C35电容在上电瞬间,快速充电,相当于短路,GND的0v提供给NRST,MCU处于复位状态,当C ...

  8. STM32 W5500 OTA功能 - bootloader及app的设计和实现

    通过W5500的网络功能,到文件服务器下载STM32要更新的固件(可执行bin文件),存储到STM32片内FLASH的APP备份区中,以待bootloader拷贝到APP代码执行区,以实现OTA在线升 ...

  9. STM32复位源判断

    在项目中有时候会遇到单片机莫名奇妙复位的情况,为了判断是那种原因引起复位,就需要对单片机的复位源进行判断.现用STM32F103C8T6单片机进行测试. 先看看单片机复位源都有哪些? 在STM32中文 ...

最新文章

  1. oracle+linux+oel+6.9,用SecureCRT+Xming轻松远程实现linux的X DISPLAY
  2. 【数学和算法】奇异值分解在【图像压缩】中的应用
  3. flutter 图片转base64_京东技术中台的Flutter实践之路
  4. 51nod 1027 大数乘法
  5. 五、实例:在波士顿房价数据集上用随机森林回归填补缺失值
  6. 信息学奥赛一本通(1403:素数对)
  7. 01-SpringMVC 原理
  8. Eclipse 下载安装
  9. 原来,我一直都不会用Windows
  10. 计算机网络布线总结,网络综合布线实训总结
  11. 计算机操作系统(汤小丹)慕课版课后题答案第五章:储存器管理
  12. e01文件镜像SHA1值
  13. 图像处理入门系列之对比度增强
  14. 7.3 pgfplots点集
  15. 不得不佩服下自己:关于正反双面打印的问题分析
  16. 常用控件 — 列表视图
  17. 哪个linux系统最安全,Linux系统是不是最安全的系统?
  18. jmeter 使用beanshell 编写脚本
  19. H3C 单臂路由(路由器代替虚拟PC)
  20. 学生宿舍管理项目开发计划书_1学生信息管理系统项目开发计划书

热门文章

  1. SAP Spartacus delivery mode continue button enable与否的逻辑
  2. SAP CRM interactive report的各种输入字段
  3. Some Fiori offline screenshot in Mac
  4. this.byId(SupplierForm).bindElement in SAP UI5
  5. smart filter无法从smart business应用获得值的问题分析
  6. nodejs里socket.on和socket.once的单步调试
  7. SAP Cloud Platform创建Destination时Additional properties属性的维护
  8. Unable to install breakpoint in Modify compiler options to generate line number attributes
  9. 如何在Java代码中使用SAP云平台CloudFoundry环境的环境变量
  10. sqlplus连接不上oracle,环境变量设置错误导致sqlplus 连接不上oracle