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

    文章

    1759

    浏览量

    155912
  • 编译器
    +关注

    关注

    1

    文章

    1672

    浏览量

    51915
  • STM32F0
    +关注

    关注

    0

    文章

    61

    浏览量

    17897
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SPI NOR Flash和SPI NAND Flash存储芯片的区别

    SPI NOR Flash与SPI NAND Flash并非相互替代,而是互补关系。SPI NOR胜在读取速度快、使用简单、可靠性高,是代码存储的理想选择。SPI NAND则以其大容量
    的头像 发表于 01-29 16:58 869次阅读
    SPI NOR <b class='flag-5'>Flash</b>和SPI NAND <b class='flag-5'>Flash</b><b class='flag-5'>存储</b>芯片的区别

    Vivado+Vitis将程序固化的Flash的操作流程

    ZYNQ 的程序固化是指将程序代码永久存储到非易失性存储器中,使系统上电后能自动加载运行的过程。主要固化方式:QSPI Flash固化:常用
    的头像 发表于 01-20 16:17 883次阅读
    Vivado+Vitis将<b class='flag-5'>程序</b>固化的<b class='flag-5'>Flash</b>的操作流程

    CW32F030 FLASH 存储器的注意事项

    FLASH_CR1.BUSY 标志位变成 0 后方可执行后续的任务。 •使用寿命基于嵌入式 FLASH 的特性,FLASH 的操作次数和存储时间是有限的,用户在应用
    发表于 01-12 06:26

    单片机Flash是什么类型

    存储器)。 在过去,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,Flash的出现,全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作
    发表于 01-04 07:10

    国产SPI NOR Flash接口闪存介绍

    在当今各类电子设备对存储性能要求日益提升的背景下,SPI NOR Flash凭借其高速读取、低功耗及灵活接口等优势,成为嵌入式系统代码存储的关键元件。GT25Q系列SPI NOR
    的头像 发表于 12-26 11:51 654次阅读

    CW32F030片上FLASH闪存存储器物理区域的划分

    域主要用于存放应用程序代码和用户数据,用户可编程。 2、启动程序存储器,共 2.5KB,地址空间为 0x0010 0000 - 0x0010
    发表于 12-23 08:28

    CW32L052 FLASH存储器介绍

    概述CW32L052内部集成了64KB嵌入式FLASH供用户使用,可用来存储应用程序和用户数据。 芯片支持对 FLASH 存储器的读、擦除和
    发表于 12-05 08:22

    FLASH中的代码是如何得到运行的呢

    。 ARM-cortex-A系列的SOC(比如Exynos4412):该类SOC更加复杂,通常有内存管理单元(MMU),代码存储在nand flash中,程序运行时,需要先将
    发表于 12-04 08:06

    芯源的片上存储器介绍

    域主要用于存放应用程序代码和用户数据,用户可编程。 ●● 启动程序存储器,共 2.5KB,地址空间为 0x0010 0000 - 0x001
    发表于 11-12 07:34

    STM32C011开发(3)----Flash操作

    STM32C011 系列微控制器内置 Flash 存储器,支持程序存储与数据保存,具备页面擦除、双字写入、读写保护等功能。本文将简要介绍 STM32C011 的
    的头像 发表于 09-18 16:48 5279次阅读
    STM32C011开发(3)----<b class='flag-5'>Flash</b>操作

    SPI NOR FLASH是什么,与SPI NAND Flash的区别

    单元存储一位数据 (0或1) ,可以直接寻址,寻址速度非常快。SPI NOR FLASH支持全双工、单工以及半双工传输方式,被广泛应用于嵌入式系统中,如Bootloader、操作系统内核等程序
    的头像 发表于 08-21 09:26 1873次阅读

    TLE9893是否支持在FLASH1上运行代码来擦除和编程FLASH1?

    芯片TLE9893是否支持在FLASH1上运行代码来擦除和编程FLASH1。在NVM-PROG_UCODE中,代码
    发表于 08-13 08:14

    嵌入式系统中,FLASH 中的程序代码必须搬到 RAM 中运行吗?

    嵌入式系统里,FLASH 中的程序代码并非必须搬到 RAM 中运行,这得由硬件配置、实际性能需求和应用场景共同决定。就像很多低端单片机,无论是依赖片内 Flash 还是外挂的 SPI NOR
    的头像 发表于 08-06 10:19 1534次阅读
    嵌入式系统中,<b class='flag-5'>FLASH</b> 中的<b class='flag-5'>程序代码</b>必须搬到 RAM 中运行吗?

    FLASH烧写/编程白皮书

    白皮书:如何烧写Flash——不同场景不同需求下的选择认识Flash NAND vs. NOR如何烧写/编程不同方案比较
    发表于 07-28 16:05 0次下载

    MCU片上Flash

        MCU片上Flash是微控制器内部集成的非易失性存储器,主要用于存储程序代码、常量数据及系统配置信息。其核心特性与功能如下: 一、定义与类型‌ 片上
    的头像 发表于 05-06 14:26 1559次阅读