首页 > 系统相关 >关于STM32存储、内存分析(为何从0x8000起始)

关于STM32存储、内存分析(为何从0x8000起始)

时间:2024-11-25 16:35:10浏览次数:9  
标签:烧录 映射 32 存储器 STM32 地址 内存 0x8000

关于图上的几个问题(图从左往右看)
1.为什么STM32的理论地址范围(寻址范围)为4G?

STM32的地址总线为32位,32位可以理解为物理的引脚,32只引脚通过拉高拉低,也就是选择0或者1,32位2进制=2的32次方=4294967296组地址,一个地址对应一个字节,即:

4294967296字节=4194304KB=4096MB=4GB

地址总线体现了STM32的寻址能力,最大能使用的存储空间大小;

2.STM32的32是否是因为地址线32条?

【明解STM32】一文读懂STM32芯片总线_stm32总线-CSDN博客

不是,这只是一个巧合;

STM32的32表示的是arm核能够一次处理的数据的位宽为32位,也就是数据总线的宽度;

寄存器宽度与数据总线宽度一致;

3.存储器的映射是什么意思?

存储的映射是指STM32通过32位地址总线定义的4294967296组地址,与存储器上的每个存储分区经行一一对应,也就是每个字节分区进行排序对应;(给存储器的每个字节存储空间取名字,需要使用的时候喊名字就行);

4.关于Keil或其他烧录工具,对STM32的烧录起始地址设置为0x0800 0000的解答

首先分析下图,关于STM32上4G寻址空间(部分)的分配

如图,第一段内存空间起始地址位0x0000 0000 -0x001F FFFF,空间大小为1M

系统启动的的起始地址,该地址里面存放的应为系统启动代码,正常来说我们编写的代码应存放在该处;

但是,我们知道,STM32除了启动进入我们编写的程序外,还有其他启动模式,比如烧录模式,调试模式(芯片上编程);

烧录模式:

(1)串口烧录:需要从STM公司提前烧录在系统存储器上的Bootloader进行引导进入烧录模式,此时系统的必须要将0x0000 0000重映射(再次映射)到系统存储器之前被映射的0x1fff ffff-0x1fff 7a0f存储位置。这样系统在启动时就会从系统存储器进行启动进入烧录模式了;

但此时如果我们设置的为0x0000 0000为起始烧录地址,则将代码烧录到了系统存储器上去了,这是错误的,并且是不被允许的;

所以我们按原先规划的主Flash空间起始地址0x0800 0000进行下载,下载完成后,重新设置启动模式,从主Flash启动,将0x0000 0000重映射(再次映射)到原先定义的0x0800 0000上就可以正常从主Flash上启动了;

调试模式:

(2)从SRAM上进行启动

感谢STM32寄存器版的基础知识—内存映射_51CTO博客_stm32寄存器操作详解

标签:烧录,映射,32,存储器,STM32,地址,内存,0x8000
From: https://blog.csdn.net/weixin_41564872/article/details/144019021

相关文章

  • GaussDB内存过载分析
    问题现象数据库进程内存占比较高长时间占比较高观察监控平台内存占用的变化曲线,无论当前数据库是否有业务在运行,数据库进程内存占总机器内存的比例长时间处于较高状态,且不下降。执行作业期间占比较高数据库进程在没有业务执行时,内存使用持续处于较低的状态,当有业务执行时,内......
  • GaussDB内存过载分析
    问题现象数据库进程内存占比较高长时间占比较高观察监控平台内存占用的变化曲线,无论当前数据库是否有业务在运行,数据库进程内存占总机器内存的比例长时间处于较高状态,且不下降。执行作业期间占比较高数据库进程在没有业务执行时,内存使用持续处于较低的状态,当有业务执行时,内......
  • 成为点灯大师的日志一——STM32之按键控制LED
    1、接线图展示注:图片来源江科大,此处3口也要接一个LED注:OLED用于检测说明按键按下2、原理说明利用按键按下过程检测到的电平变化来判断按键是否按下,通过改变Num的值来改变LED的状态利用Num的变化来实现LED多模式转换。3、代码实现Key.h#ifndef__KEY_H#define__KE......
  • 指针的奥秘:深入探索内存的秘密
    前言在计算机编程的广阔天地中,指针作为一种独特的数据类型,它不仅是C语言的核心,也是理解计算机内存管理的基石。指针的概念虽然强大,但对于初学者来说,它常常是学习过程中的一个难点。本文旨在揭开指针的神秘面纱,带你一探究竟,从基础概念到高级应用,全面解析指针的奥秘。 指针:......
  • 内存与缓存区别
    缓存用途:缓存的主要目的是为了减少对内存或更慢的存储设备的访问次数,将频繁访问的数据暂存起来,以便下次使用时能够更快地获取,从而提升系统的整体性能。内存用途:内存主要用于存储正在运行的程序和数据,为CPU提供快速的数据访问,以保证程序的正常运行。区别解释一内存是计算机......
  • JavaScript有几种类型值?能否画出它们的内存图?
    JavaScript有七种原始数据类型和一种引用类型:原始数据类型(PrimitiveDataTypes):存储在栈(Stack)内存中,值直接存储在变量访问的位置。Boolean:true或falseNull:只有一个值null,表示空或不存在的值。Undefined:变量声明了但未赋值时的默认值undefined。Number:所......
  • STM32定时器中断原理及模板代码
    ———————————————————————————————————————————主要关注预分频器和中断重装载寄存器和计数器,这三个寄存器合称为时基单元基本定时器只能使用内部时钟(频率为72MHz)预分频器:        可以用预分频器将72MHz分频    ......
  • 自定义类型:结构体(一)(含内存对齐细解)
    今天和大家分享自定义类型结构体,话不多说,正文开始:首先在c语言中我们见到过不少类型,比如:int,char,float等等,他们叫做内置类型,但他们所包含的内容是比较单一的,倘若我需要一个类型既能放整形又能放浮点型,那以上的内置类型都满足不了我的需求,因此就有了自定义类型,结构体。1.结构体......
  • 【数据库】无法启动数据库:内存不足
    最近在打计算机系统能力大赛的数据库创新设计赛道,不得不说学到了很多东西。比赛用的是PolarDB(套皮PG),最近上华为云用的是OpenGuass(也是套皮PG)(PG简直是开源之神在实践中,由于服务器资源有限,经常遇到的一个问题是:FATAL:couldnotcreatesharedmemorysegment:Cannotalloc......
  • STM32 CAN的HAL库简单使用
    一、CAN的基本知识1.物理层差分信号ISO11898标准:高速、短距离“闭环网络”,它的总线最大长度为40m,通信速度最高为1Mbps,总线的两端各要求有一个“120欧”的电阻。ISO11519-2标准:低速、远距离“开环网络”它的最大传输距离为1km,最高通讯速率为125kbps,两根总线是独立的、不形......