学习STM32(二)之STM32内存管理(三)STM32内存管理以及堆和栈的理解.pdf

学习STM32(二)之STM32内存管理(三)STM32内存管理以及堆和栈的理解.pdf

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学习STM32 (⼆)之STM32内存管理 (三)STM32内存管理 以及堆和栈的理解 ⾸先,先看⼀下stm32的存储器结构。。 以下两种 法都⼀样的,各有着重⽽已,可单看第⼀个 法,第⼆个知道就⾏ 第⼀个 法: 原⽂ : STM32的的存存储储器器映映射射详详解解 存储器映射是指把芯⽚中或芯⽚外的FLASH,,外设,BOOT,BLOCK等进⾏统⼀编址。即⽤地址来表⽰对象。 这个地址绝⼤多数是由⼚家规定好的,⽤户只能⽤⽽不能改。⽤户只能在挂外部RAM或FLASH的情况下可进⾏ ⾃定义。 Corx-M3⽀持4GB的存储空间,它的存储系统采⽤统⼀编址的⽅式; 程序存储器、数据存储器、被组织在4GB的线性地址空间内,以⼩端格 式(little-endian)存放。由于Cortex-M3是32位的内核,因此其PC指针可以指向2^32=4G的地址空间,也就是0x0000_0000—— 0xFFFF_FFFF这⼀⼤块空间。见图1: 图1:Cortex-M3的存储器映射 Cortex-M3内核将0x0000_0000——0xFFFF_FFFF这块4G⼤⼩的空间分成8⼤块 :代码、SRAM、外设、外部RAM、外部设备、专⽤ 外设总线-内部、专⽤外设总线-外部、特定⼚商 (见图1)。这就导致了,使⽤该内核的芯⽚⼚家必须按照这个进⾏各 ⾃芯⽚的存储器结构 设计,如。 图2 :Cortex-M3与中密度stm32的存储器映射对⽐ 图三: 图2中可以很清晰的看到,STM32的存储器结构和Cortex-M3的很相似(这是因为stm32本来就是按照cortex_m3内核来设计硬件的),不 同的是,STM32加⼊了很多实际的东西,如 :Flash、SRAM等。只有加⼊了这些东西,才能成为⼀个拥有实际意义的、可以⼯作的处理 芯⽚——STM32。STM32的存储器地址空间被划分为⼤⼩相等的8块区域,每块区域⼤⼩为5 12MB(如 : 00。对STM32存储器知识的掌握,实际上就是对Flash和SRAM这两个区域知识的掌握。 不同类型的STM32的SRAM⼤⼩是不⼀样的,但是他们的起始地址都是0x2000 0000,终⽌地址都是0x2000 0000+其固定的容量⼤ ⼩。SRAM的理解⽐较简单,其作⽤是⽤来存取各种动态的输⼊输出数据、中间计算结果以及与外部存储器交换的数据和暂存数据。设备断 电后,SRAM中存储的数据就会丢失。 STM32的Flash,严格 ,应该是Flash模块。三个分区的称呼与datasheet保持⼀致。该Flash模块包括 : Flash主存储区 (Mn memory)Flash:存放代码的地⽅,如图2中的FLASH区域 :128KB (有的是 1M) (00x080 1ffff) (不同容量的Flash终⽌地址不同) ; Flash信息区 (Informaon block),该区域⼜可以分为Option Bytes和System Memory区域 ; System Memory :STM32在出⼚时,已经固化了⼀段程序在System memory (medium-density devices的地址为 : 0x 1FFF_F000,⼤⼩为2KB)存储器中。这段程序就是⼀个固定好的,并且没法修改的Boot Loader (见编程⼿册PM0042这种描 述)。 Option Bytes :可以按照⽤户的需要进⾏配置 (如配置为硬件实现还是软件实现) ;该区域除了互联型所⽤型号地址都⼀样 : (0x 1fff_f000~0x 1fff_f80f)图中终⽌地址有误 :应为0x 1fff_f80f,正好 16个字节。 Flash存储接⼝寄存器区 (Flash memory interface),⽤于⽚上外设。是图2中从0始的PERIPHERALS区域。也称作外 设存储器映射,对该区域操作,就是对相应的外设进⾏操作。 第⼆个 法: 原⽂ : STM32采⽤的Crotex_M3内核存储使⽤哈佛结构,程序存储器,数据存储器,寄存器,外设都被分配在4G_bytes(32bits总线宽度)的线性 空间上,但并不是所有的空间都是有效的。 存储器采⽤⼩端模式。 ⼩端模式和⼤端模式 定义 : a) Little-Endian就是低位字节排放在内存的低地址端,⾼位字节排放在内存的⾼地址端。 b) Big-Endia

文档评论(0)

zhanghaoyu888 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档