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

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

3天内不再提示

FLASH编程与改变程序(代码) 存储地址的问题

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-20 14:07 次阅读

写在前面 Ⅰ

对于在STM32F2或F4开发的朋友而言,有部分数据需要在内部FLASH编程,程序(代码)又比较大,资源空间又有限的情况下,代码默认的存储地址就可能需要搬移。

为什么是F2或F4系列的芯片呢?因为Main memory扇区(或块)分布不均匀,看下面FLASH模块构成:

当然,像STM32F0、F1它们的FLASH数据块分布均匀,这类芯片就没必要改变程序存储地址。

为什么要改变代码存储地址 Ⅱ

假如芯片的FALSH大小为512KB,RAM大小为128KB。而代码大小为400KB(甚至更大),又需要在内部FLASH编程,那么代码的存储地址就不能从默认的起始地址(Sector 0)开始存储。

原因很简单:最后一扇区有代码,不能被用户编程。

还有一种原因:用户RAM大小有限(假如只剩15K未用,RAM用于缓存FLASH数据),而用户编程FLASH的数据有20K,这样就需要分多块(扇区)来操作,这样就需要将小的扇区拿出来给用户编程(即前面16K大小的扇区)。

上面举例的总结就是:需要将代码的存储起始地址从Sector 0搬移至Sector 3或者Sector 4,把前面小扇区(Sector 1 --- 3)用于数据编程。(注意:Sector 0扇区存储启动的部分代码,不能用于编程)。

改变代码存储地址的方法 Ⅲ

代码存储的地址是由编译器决定的,因此这里简单讲述一下Keil和IAR如何配置改变代码存储起始地址。下面以起始地址从0x08010000 (Sector 4)举例说明。

1.Keil配置方法

打开工程目标选项:Project -> Options for Target -> Target。修改目标ROM起始地址。如下图:

2.IAR配置方法

配置步骤分如下几步:

A.进入配置界面:Pooject -> Options -> Linker -> Config;

B.勾选上“Override default”;

C.点击“Edit”,修改ROM起始地址为;

D.点击“Save”保存(第一次修改后,xxx.icf文件名和路径都选择默认)。

具体如下图:

验证代码存储地址 Ⅳ

对于STM32芯片来说,可以直接使用STM32 ST-LINK Utility工具读取FLASH数据验证代码是否存储在相应地址位置,其他芯片也可以使用对应可以读取FLASH数据的工具来验证。如下图:

从上图可以看见,代码是从0x08010000 (Sector 4)起始存储的。查看Sector 1-3扇区,可以发现数据全是0xFFFF,也就是说没有被代码占用这些扇区。

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

    关注

    10

    文章

    1652

    浏览量

    150070
  • 编译器
    +关注

    关注

    1

    文章

    1646

    浏览量

    49588
  • STM32F0
    +关注

    关注

    0

    文章

    61

    浏览量

    17282
收藏 人收藏

    相关推荐

    存储技术探秘 NAND Flash vs NOR Flash:藏在芯片里的"门道之争"

    门电路玄机 NOR Flash:Intel 1988 年革命性突破,终结 EPROM/EEPROM 垄断时代 NAND Flash:东芝 1989 年发布,开创 "低成本比特" 存储新纪元 共性特征
    的头像 发表于 03-18 12:06 154次阅读

    Stm32CubeIDE能像Keil一样指定不同文件下的代码编译到不同的FLASH地址吗?

    Stm32CubeIDE能像Keil一样指定不同文件下的代码编译到不同的FLASH地址吗?比如部分代码存放到内部FLASH,另一部分存放到外
    发表于 03-07 08:09

    AN-881: 通过LIN—协议4进行Flash/EE存储编程

    电子发烧友网站提供《AN-881: 通过LIN—协议4进行Flash/EE存储编程.pdf》资料免费下载
    发表于 01-14 16:12 0次下载
    AN-881: 通过LIN—协议4进行<b class='flag-5'>Flash</b>/EE<b class='flag-5'>存储</b>器<b class='flag-5'>编程</b>

    基于NXP MCXA153 MCU实现RT-Thread的MTD NOR Flash驱动

    在嵌入式系统中,片上Flash存储器是一个关键组件,用于存储程序代码和关键数据。本文将详细介绍如何在NXPMCXA153 MCU上实现RT-Thread的MTD (Memory Tec
    的头像 发表于 11-09 14:00 841次阅读
    基于NXP MCXA153 MCU实现RT-Thread的MTD NOR <b class='flag-5'>Flash</b>驱动

    使用SD Flash为TMS320C28x器件编程外部非易失性存储

    电子发烧友网站提供《使用SD Flash为TMS320C28x器件编程外部非易失性存储器.pdf》资料免费下载
    发表于 10-15 11:48 0次下载
    使用SD <b class='flag-5'>Flash</b>为TMS320C28x器件<b class='flag-5'>编程</b>外部非易失性<b class='flag-5'>存储</b>器

    物联网行业存储方案详解_SPI NOR Flash

    SPI NOR FLASH存储器在初始响应和启动时提供高可靠性,并具有低时延。这一特性对于物联网设备至关重要,因为物联网设备通常需要快速启动并稳定运行,以确保数据的实时传输和处理。 2、直接执行代码的能力 SPI NOR
    的头像 发表于 09-24 14:39 668次阅读
    物联网行业<b class='flag-5'>存储</b>方案详解_SPI NOR <b class='flag-5'>Flash</b>

    EEPROM的地址怎么确定

    关于EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)的地址确定,涉及多个方面,包括设备地址存储
    的头像 发表于 09-05 10:53 2789次阅读

    编程的只读存储器是否可以改写

    不可更改。这与可擦写可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM)和闪存(Flash Memory)等其他类型的非易失性存储器不同,后者可以
    的头像 发表于 08-06 09:25 1048次阅读

    ESP32C3通过QSPI flash来片外运行代码,如果频繁地存储录音音频数据,会影响程序运行吗?

    ESP32C3通过QSPI flash 来片外运行代码,如果频繁地存储录音音频数据,会影响程序运行吗?有这个风险吗?
    发表于 06-20 08:28

    贴片式tf卡 Nand flash芯片试用体验

    ,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码
    发表于 06-05 17:57

    EEPROM与Flash存储器的区别

    编程只读存储器)和Flash存储器是两种常见的非易失性存储器,它们具有各自的特点和应用场景。本文将深入分析和比较EEPROM与Flash
    的头像 发表于 05-23 16:35 7731次阅读

    求助,关于SPC560D单片机flash代码分段存储问题求解

    flash区域,把程序内一些模块放在不能跳转的flash区域,但这样做导致了用户程序不能运行,请问这样做为什么不可行?代码必须连续
    发表于 04-07 08:13

    stm32g030f6p6 flash快速编程总是失败的原因?

    _INDEX_SIZE; if(end_addr > g_my_flash.flash_end_addr || init==FLASH_ERASER)/*如果如果地址大于存储
    发表于 04-07 07:32

    Flash存储芯片:NOR Flash、NAND Flash、UFS和eMMC的比较与解析

      NOR Flash是可编程存储器的一种,因其具有直接运行应用程序的能力而广受欢迎,由于存储容量较小,一般只有几MB~几十MB,因此适合
    发表于 04-03 12:05

    Flash存储芯片:NOR Flash、NAND Flash、UFS和eMMC的比较与解析

    博客将详细介绍Flash存储芯片中的NOR Flash、NAND Flash、UFS和eMMC,分析它们的用途、优缺点,并对其进行比较。 1.Nor
    的头像 发表于 04-03 12:02 5106次阅读
    <b class='flag-5'>Flash</b><b class='flag-5'>存储</b>芯片:NOR <b class='flag-5'>Flash</b>、NAND <b class='flag-5'>Flash</b>、UFS和eMMC的比较与解析