stm32 复位到内部bootloader
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相关推荐
- STM32 IAP升级--内部FLASH和外部FLASH两种方式实现
芯片型号STM32F103RET6,flash大小512K,起始地址0x08000000 一般说STM32内部FLASH就是指主存储器区域 [注]此实验中启动方式设置为复位后从主闪存存储器启动(BOO ...
- STM32-F407入门学习专题(二) STM32复位和中断
系列文章目录 第2章 STM32复位启动和中断控制 目录 系列文章目录 前言 1 NVIC-嵌套向量中断控制器 1.1 NVIC寄存器 1.2 中断优先级分组 1.3 NVIC相关函数 2 中断配置实 ...
- STM32复位死机(无法启动)
STM32复位死机(无法启动) 嗯,不知道怎么说,stm32的看门狗死机了,下面是仿真时报错信息: The processor has escalated a configurable-priorit ...
- STM32 跳转系统BootLoader
STM32 跳转系统BootLoader STM32 进入系统 bootLoader 主要有两种方法: (1)一种是设置 boot 引脚,进入系统 bootLoader. (2) 一种是应用程序跳转到 ...
- atmega8a如何烧写程序_快捷又安全!如何利用芯片内部Bootloader烧写程序?
CC2640 R2是德州仪器推出的面向 Bluetooth Smart 应用的低功耗无线 MCU.该芯片运行TI的BLE协议栈,具有功耗低,外设种类丰富,射频性能好等特点.利用它可以实现许多有趣的应用 ...
- stm32 U盘升级 bootloader程序 基于stm32f407 将升级包下载到U盘中,插入到设备中,完成对主程序的升级
stm32 U盘升级 bootloader程序 基于stm32f407 将升级包下载到U盘中,插入到设备中,完成对主程序的升级,无需上位机操作. 清单: u盘升级的bootloader源码. YID: ...
- STM32复位与时钟、定时器
复位与时钟 1>复位 1,上电复位:MCU当NRST为低电平时产生复位,而C35电容在上电瞬间,快速充电,相当于短路,GND的0v提供给NRST,MCU处于复位状态,当C ...
- STM32 W5500 OTA功能 - bootloader及app的设计和实现
通过W5500的网络功能,到文件服务器下载STM32要更新的固件(可执行bin文件),存储到STM32片内FLASH的APP备份区中,以待bootloader拷贝到APP代码执行区,以实现OTA在线升 ...
- STM32复位源判断
在项目中有时候会遇到单片机莫名奇妙复位的情况,为了判断是那种原因引起复位,就需要对单片机的复位源进行判断.现用STM32F103C8T6单片机进行测试. 先看看单片机复位源都有哪些? 在STM32中文 ...
最新文章
- oracle+linux+oel+6.9,用SecureCRT+Xming轻松远程实现linux的X DISPLAY
- 【数学和算法】奇异值分解在【图像压缩】中的应用
- flutter 图片转base64_京东技术中台的Flutter实践之路
- 51nod 1027 大数乘法
- 五、实例:在波士顿房价数据集上用随机森林回归填补缺失值
- 信息学奥赛一本通(1403:素数对)
- 01-SpringMVC 原理
- Eclipse 下载安装
- 原来,我一直都不会用Windows
- 计算机网络布线总结,网络综合布线实训总结
- 计算机操作系统(汤小丹)慕课版课后题答案第五章:储存器管理
- e01文件镜像SHA1值
- 图像处理入门系列之对比度增强
- 7.3 pgfplots点集
- 不得不佩服下自己:关于正反双面打印的问题分析
- 常用控件 — 列表视图
- 哪个linux系统最安全,Linux系统是不是最安全的系统?
- jmeter 使用beanshell 编写脚本
- H3C 单臂路由(路由器代替虚拟PC)
- 学生宿舍管理项目开发计划书_1学生信息管理系统项目开发计划书
热门文章
- SAP Spartacus delivery mode continue button enable与否的逻辑
- SAP CRM interactive report的各种输入字段
- Some Fiori offline screenshot in Mac
- this.byId(SupplierForm).bindElement in SAP UI5
- smart filter无法从smart business应用获得值的问题分析
- nodejs里socket.on和socket.once的单步调试
- SAP Cloud Platform创建Destination时Additional properties属性的维护
- Unable to install breakpoint in Modify compiler options to generate line number attributes
- 如何在Java代码中使用SAP云平台CloudFoundry环境的环境变量
- sqlplus连接不上oracle,环境变量设置错误导致sqlplus 连接不上oracle