0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

处理器的Flash空间分配

CHANBAEK 来源:头条号科G栈 作者:头条号科G栈 2023-03-23 10:10 次阅读

在一个实际的项目中,Flash的使用会进行专门的安排,分成不同的区域供不同的目的使用。最常见的是分成bootloader区和主程序区。对于有些需要在掉电后保存数据的,还会分配一段区域保存这些重要的数据,这一块儿我们就叫它eeprom吧。

通常bootloader会放在flash最开始的地方,eeprom放在flash最后,具体大小需要根据实际的项目需要分配。

poYBAGQbtRCAP8u9AABZAwojrrY456.jpg

这种情况下需要对链接文件进行修改,主要是改一下main app的起始地址,否则默认情况下都是存放在flash最开始的地方,main app就会把bootloader覆盖掉。

linux下,后缀为ld的就是链接文件,它里边有这么一段内容:

poYBAGQbtRGASrRCAABxQ4AKZ9c935.jpg

MEMORY就是用来给系统分配存储空间的,包括RAM、FLASH、外部存储等等。上图中是main app的分配情况。这个示例中,flash的起始地址是0x08000000,给bootloader留了4k(0x1000)的空间,所以main app的起始地址ORIGIN就是0x08001000,长度的话32k减去4k剩下27k。这样在链接的时候就以0x08001000为基准往后安排。

另外还有一种情况需要在链接文件中修改。我们在开发的时候有时候想要某些特定的数据或代码保存在特定的flash地址处,这个时候就可以通过在链接文件中添加这个特定的段空间来搞定。比如下面的例子

pYYBAGQbtRKAZiu7AADBPXFRF3c982.jpg

它在main app的最开始存放向量表,之后存放软件版本信息,接下来才是代码段。

分配好空间后,需要给自定义的段起一个名字,以便在程序中调用。

pYYBAGQbtROAWkEQAACeboKz1Fw846.jpg

关键字SECTIONS下就是各个数据段的具体分配情况,段名.isr_vector指定的内容放在FLASH_VECTAB下,.firmware_info指定的内容放在FLASH_VERSION下。在KEEP后括号内的名称就是代码中用来指定的段名。具体使用方法如下:

汇编

poYBAGQbtRSAEW9vAAAH_nJXhhc603.jpg

这个很少用到,除非你用汇编写代码。

C:

poYBAGQbtRWAAPLlAAATwEKVvfo320.jpg

通过上面的操作,就可以把指定的数据放到flash特定的地方。

!!!:不同的编译器实现的细节和用到的关键字不一样,需要查看其具体的帮助手册。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18224

    浏览量

    221963
  • FlaSh
    +关注

    关注

    10

    文章

    1547

    浏览量

    146630
  • Linux
    +关注

    关注

    87

    文章

    10981

    浏览量

    206690
  • 编译器
    +关注

    关注

    1

    文章

    1573

    浏览量

    48604
  • bootloader
    +关注

    关注

    2

    文章

    230

    浏览量

    45042
收藏 人收藏

    评论

    相关推荐

    一般的汽车ECU处理器是32位的吗?具体的RAM和Flash有多大呢?

    现在一般的汽车ECU处理器是32位的吗,具体的RAM和Flash有多大呢?现在汽车的ECU处理器位数发展到多少了?相应配备的RAM和Flash有多大?
    发表于 02-02 06:08

    [求助]微处理器电路如何工作?

    处理器ELANSC520-100AI是如何工作的?这个处理器通电后是怎么工作的,外部给他提供一个FLASH里面是BOOT程序。起上电复位和开机自检作用。  
    发表于 08-28 17:02

    S3C2410处理器与Nand flash 的问题

    一个64M Nand flash存储与S3C2410处理器的Nand flash相应接口连接,请问这个64M存储空间是否属于8个bank中
    发表于 11-20 21:41

    用于Intel SkyLake(TM)处理器平台的功率调节和分配的参考设计

    `描述TI 经过优化的解决方案可实现功率调节、分配和定序,适用于 Intel SkyLake™ 处理器平台。通过采用高效直流/直流开关稳压和集成负载开关,该设计展示了它可调节 4 个独特的电源轨并
    发表于 03-30 17:41

    Intel SkyLake处理器平台的功率调节、分配和定序方案

    描述TI 经过优化的解决方案可实现功率调节、分配和定序,适用于 Intel SkyLake™ 处理器平台。通过采用高效直流/直流开关稳压和集成负载开关,该设计展示了它可调节 4 个独特的电源轨并
    发表于 12-14 15:13

    两核程序空间分配问题如何解决

    各位好,28377D的两核程序单独编译,那么如何才能保证不会引起程序空间分配冲突呢?此外,CPU1进行了FLASH初始化,CPU2还需进行FLASH初始化的过程吗?(TI
    发表于 07-17 11:47

    单片机程序在内存和FLASH中的空间分配

    这里写目录标题1.ROM、RAM和闪存2.单片机程序在内存和FLASH中的空间分配3.计算机启动过程1.ROM、RAM和闪存ROM、RAM和闪存的区别2.单片机程序在内存和FLASH
    发表于 12-09 07:16

    如何对RAM空间分配操作

    在代码编译过程中,编译会根据配置和代码进行空间分配,包括对内存RAM的空间分配,对RAM空间
    发表于 01-20 08:05

    对微处理器flash以及ram的内存分配进行讲解

    处理器flash以及ram的内存分配进行讲解;在讲解之前先说一下哈佛结构和冯·诺依曼架构一、 哈佛架构和冯·诺依曼架构为什么开题要讲一下这连个架构呢,因为不同的架构决定着实际ram和fla
    发表于 01-26 07:55

    ARM程序在Flash和SRAM空间中是怎样进行分配

    linux操作系统的Flash全部是norflash,但是不绝对。  Flash,SRAM寄存和输入输出端口被组织在同一个4GB的线性地址空间内,可访问的存储
    发表于 05-10 15:26

    在cubemx中的STM32F446微处理器上如何分配多个spi_nss引脚?

    我正在 cubemx 中的 STM32F446 微处理器分配引脚,我想将多个芯片连接到一个 spi 总线上的微处理器。我希望每个芯片都连接到一个单独的芯片选择引脚,又名 spi_nss。当我尝试
    发表于 02-08 07:45

    多寄存器组网络处理器上的寄存器分配技术

    本内容提供了多寄存器组网络处理器上的寄存器分配技术
    发表于 06-28 15:26 28次下载
    多寄存器组网络<b class='flag-5'>处理器</b>上的寄存器<b class='flag-5'>分配</b>技术

    STM32处理器存储空间布局结构说明

    一、Cortex-M3支持最大4GB的存储空间,其地址映射关系如下图 二、存储器映射实例:256KB Flash 48KB SRAM IROM1为片上程序存储器,即片上集成的Flash存储器,对该
    发表于 11-30 01:35 1260次阅读
     STM32<b class='flag-5'>处理器</b>存储<b class='flag-5'>空间</b>布局结构说明

    单片机的程序在内存和FLASH中应该如何进行空间分配

    一句话:基于速度问题,电脑使用硬盘存储程序,运行时,在内存中分配空间给变量,加载程序到内存中,在内存中执行程序。单片机使用FLASH 存储程序,运行时,不会将程序加载到内存中,在FLASH
    发表于 09-18 17:20 3次下载
    单片机的程序在内存和<b class='flag-5'>FLASH</b>中应该如何进行<b class='flag-5'>空间</b><b class='flag-5'>分配</b>

    处理器flash及ram内容详解

    处理器flash以及ram的内存分配进行讲解; 在讲解之前先说一下哈佛结构和冯·诺依曼架构一、 哈佛架构和冯·诺依曼架构 为什么开题要讲一下这连个架构呢,因为不同的架构决定着实际ram和
    发表于 12-02 12:21 0次下载
    微<b class='flag-5'>处理器</b><b class='flag-5'>flash</b>及ram内容详解