《尿不湿级》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 @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构