《尿不湿级》STM32 F103C8T6最小系统板搭建(五)BOOT

2024-05-05 15:04

本文主要是介绍《尿不湿级》STM32 F103C8T6最小系统板搭建(五)BOOT,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、BOOT是什么?
大多数初学者第一次接触BOOT总是对这个词感到不解,从哪冒出一个奇奇怪怪的东西还要接跳线帽,为什么要配置它才能进行串口程序的下载?为什么不正确配置会导致单片机无法正常启动……
boot,及物动词,指“通过使操作系统加载到内存中启动计算机”,源自 bootstrap(动词),该动词源自 bootstrap(名词),意为“加载计算机操作系统的固定指令序列”(1953年)。那bootstrap为什么被指做“加载计算机操作系统的固定指令序列”呢?
boot-strap,最开始指男靴后部顶部的一个小环或小圈,穿着者可以用手指钩住它来穿上靴子。到1871年,在斯蒂尔的《流行物理学》教科书第一章的最后的“实际问题”中,有一个问题是:“30.为什么一个人不能通过拉起靴带来抬起自己?”,所以后来它被用来比喻一个不可能的任务,也被用来暗示“通过严格的、不依赖他人的努力来改善自己”。这正好切合了计算机系统的引导启动程序的功能————第一个加载的程序通过 bootstrap 来拉起自己。计算机系统就是通过BOOT来拉着自己的靴带来抬起自己。
在STM32中,BOOT是引导加载器(Bootloader)的缩写。引导加载器是位于芯片内部的一段特殊代码,它负责在单片机启动过程中执行一些初始化操作,并加载用户应用程序或固件。

二、STM32的BOOT
STM32的BOOT被BOOT0和BOOT1的引脚电平高低所控制 

BOOT0和BOOT1是如何控制BOOT的?
在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1
和BOOT0引脚的状态,来选择在复位后的启动模式
在从待机模式退出时,BOOT引脚的值将被被重新锁存;因此,在待机模式下BOOT引脚应保持
为需要的启动配置。在启动延迟之后,CPU从地址0x0000 0000获取堆栈顶的地址,并从启动
存储器的0x0000 0004指示的地址开始执行代码。

从Flash启动:
这是最常用的启动方式。在该模式下,复位向量和应用程序代码存储在主Flash存储器中。当微控制器复位时,CPU从Flash的起始地址(通常为0x0800 0000)开始执行代码。Flash存储器通常用于存储固件、应用程序和其他常用数据。
特点和用处:

  • 适用于大多数应用场景,特别是需要长期运行的应用程序。
  • 提供了较大的存储容量,可以容纳较大的代码和数据。
  • 代码和数据可以在开发过程中通过编程器烧录到Flash存储器中。

从系统存储器(System Memory)启动:
STM32微控制器的一些型号具有内置的系统存储器,通常是一小段Flash存储器。在该模式下,复位向量和应用程序代码存储在系统存储器中。当微控制器复位时,CPU从系统存储器的起始地址(通常为0x1FFF 0000)开始执行代码。
启动地址:0x1FFF0000从系统存储器启动,系统存储器是芯片内部的一块特定区域,在出厂时由ST(STMicroelectronics)在该区域内预置了一个Bootloader,也称为ISP(In-System Programming)程序。这个Bootloader是一个只读存储器(ROM),无法在出厂后进行修改。

当将BOOT0设置为1,BOOT1设置为0,并按下复位键时,微控制器会从系统存储器中的Bootloader开始执行。这个Bootloader具有串口下载程序的功能,可以通过串口将程序下载到微控制器的Flash存储器中。

使用这种启动模式时,通常需要执行以下步骤:

将BOOT0设置为1,BOOT1设置为0,并按下复位键,使微控制器从系统存储器启动Bootloader。
在Bootloader的帮助下,通过串口将程序下载到Flash存储器中。
程序下载完成后,将BOOT0设置为GND(地),手动复位微控制器,使其从Flash存储器中启动。
确实,通过串口下载程序相对来说比较繁琐,需要进行引脚配置和手动操作,不太方便。因此,这种启动方式在实际应用中并不常用,除非特定的需求需要通过串口下载程序。一般情况下,从Flash启动是更常见和方便的方式。
特点和用处:

点击《尿不湿级》STM32 F103C8T6最小系统板搭建(五)BOOT - 古月居可查看全文

 

这篇关于《尿不湿级》STM32 F103C8T6最小系统板搭建(五)BOOT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961984

相关文章

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

如何使用Spring boot的@Transactional进行事务管理

《如何使用Springboot的@Transactional进行事务管理》这篇文章介绍了SpringBoot中使用@Transactional注解进行声明式事务管理的详细信息,包括基本用法、核心配置... 目录一、前置条件二、基本用法1. 在方法上添加注解2. 在类上添加注解三、核心配置参数1. 传播行为(

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

Spring Boot Actuator使用说明

《SpringBootActuator使用说明》SpringBootActuator是一个用于监控和管理SpringBoot应用程序的强大工具,通过引入依赖并配置,可以启用默认的监控接口,... 目录项目里引入下面这个依赖使用场景总结说明:本文介绍Spring Boot Actuator的使用,关于Spri

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加