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

    文章

    19135

    浏览量

    228926
  • FlaSh
    +关注

    关注

    10

    文章

    1615

    浏览量

    147695
  • Linux
    +关注

    关注

    87

    文章

    11216

    浏览量

    208803
  • 编译器
    +关注

    关注

    1

    文章

    1617

    浏览量

    49026
  • bootloader
    +关注

    关注

    2

    文章

    234

    浏览量

    45521
收藏 人收藏

    评论

    相关推荐

    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

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

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

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

    一、Cortex-M3支持最大4GB的存储空间,其地址映射关系如下图 二、存储映射实例:256KB Flash 48KB SRAM IROM1为片上程序存储,即片上集成的
    发表于 11-30 01:35 1537次阅读
     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>

    EE-311:适用于Blackfin®处理器的VisualDSP++®Flash编程API

    EE-311:适用于Blackfin®处理器的VisualDSP++®Flash编程API
    发表于 04-13 13:55 2次下载
    EE-311:适用于Blackfin®<b class='flag-5'>处理器</b>的VisualDSP++®<b class='flag-5'>Flash</b>编程<b class='flag-5'>器</b>API

    负载均衡处理器的运算资源分配策略

    现代超标量处理器通常设置有多套计算部件攴持指令并行执行,以提高程序的运行效率。运算资源分配策略在很大程度上决定了处理器能否充分利用计算部件并行加速计算,具有重要作用。就指令调度以及运算资源分配
    发表于 05-13 10:44 15次下载

    处理器flash及ram内容详解

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

    对称多处理器系统中的进程分配包括

    在现代计算机系统中,对称多处理器(SMP)架构已经成为主流。这种架构允许多个处理器共享相同的内存地址空间和系统资源,从而提高了系统的处理能力和吞吐量。然而,为了充分利用SMP系统的性能
    的头像 发表于 10-10 16:34 177次阅读