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

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

3天内不再提示

Keil、IAR中如何让程序存储在指定的偏移地址?

strongerHuang 来源:strongerHuang 作者:strongerHuang 2021-04-02 11:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

有时候,我们不想让程序存储在起始的位置,比如我们有一段bootloader,对应的app(应用程序)存储的位置就会有一个偏移地址。

那么,我们如何让程序存储在指定的偏移地址呢?

下面结合STM32,讲述在Keil和IAR开发环境中设置起始地址0x08010000的方法。

1

Keil配置方法

打开工程目标选项:

Project -》 Options for Target -》 Target。

修改目标ROM起始地址。如下图:

5691fd5c-92ed-11eb-8b86-12bb97331649.png

说明:1.勾选的IROM即对应的存储区域;2.起始地址(Start)和大小(Size)根据你实际情况进行配置;

1

IAR配置方法

类似方法,进入配置界面:

A.进入配置界面:Pooject -》 Options -》 Linker -》 Config;B.勾选上“Override default”;C.点击“Edit”,修改ROM起始地址为;D.点击“Save”保存(第一次修改后,xxx.icf文件名和路径都选择默认)。具体如下图:

56bec436-92ed-11eb-8b86-12bb97331649.png

3

验证代码存储地址

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

如下图:

56dda1f8-92ed-11eb-8b86-12bb97331649.png

从上图可以看见,代码是从0x08010000 起始存储的。查看前面的存储区域,可以发现数据全是0xFFFF,也就是说没有被代码占用这些扇区。

原文标题:Keil、IAR改变代码(程序)存储地址的方法

文章出处:【微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

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

    关注

    2319

    文章

    11289

    浏览量

    378398
  • keil
    +关注

    关注

    71

    文章

    1233

    浏览量

    174811

原文标题:Keil、IAR改变代码(程序)存储地址的方法

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Step7使用ET200MP/SP PTP模块时Modbus RTU通讯程序

    轮询不那么快 3.对于WORD型数据(功能码3,4,6,16),将数据读/写到”BufferWordDB”接口指定的DB,对于BOOL型数据(功能码1,2,5,15)将数据读/写到
    发表于 07-30 06:46

    差分线的时序偏移与相位偏移:成因、影响与应对策略

    高速数字电路设计,差分信号传输凭借抗干扰能力强、时序精度高的优势,成为实现高速数据交互的核心技术。然而,差分线对的时序偏移与相位偏移
    的头像 发表于 07-27 15:06 228次阅读
    差分线<b class='flag-5'>中</b>的时序<b class='flag-5'>偏移</b>与相位<b class='flag-5'>偏移</b>:成因、影响与应对策略

    瑞萨RA MCU如何将常量和函数放在Code Flash/ROM指定地址

    RA生态工作室关注我们前言嵌入式系统应用,有时需要将常量或者函数放在代码闪存(CodeFlash)的指定地址,以便后续的功能扩展或代码更新。本文基于EK-RA4M2,详细介绍了如何
    的头像 发表于 06-02 18:55 7699次阅读
    瑞萨RA MCU如何将常量和函数放在Code Flash/ROM<b class='flag-5'>指定</b><b class='flag-5'>地址</b>

    瑞萨RA MCU如何将常量和函数放在Code Flash/ROM指定地址

    嵌入式系统应用,有时需要将常量或者函数放在代码闪存(Code Flash)的指定地址,以便后续的功能扩展或代码更新。
    的头像 发表于 06-01 09:57 5560次阅读
    瑞萨RA MCU如何将常量和函数放在Code Flash/ROM<b class='flag-5'>指定</b><b class='flag-5'>地址</b>

    块RAM存储地址冲突场景

    块 RAM 是基于 FPGA 的系统设计的关键组件,通常用于其高速数据存储功能。然而,地址冲突可能会带来重大挑战,影响系统的可靠性和性能。本文我们将探讨简单双端口 RAM 模块
    的头像 发表于 04-24 09:59 7407次阅读
    块RAM<b class='flag-5'>存储</b>器<b class='flag-5'>中</b>的<b class='flag-5'>地址</b>冲突场景

    Keil Studio现已支持GitHub Codespaces运行

    Keil Studio 现已支持 GitHub Codespaces 运行,通过你的浏览器即可将 Arm 量产级、兼容 CMSIS 的开发工作流,融入全托管、容器化的云端工作空间。数秒内即可搭建纯净且可复用的开发环境,
    的头像 发表于 04-21 14:38 777次阅读
    <b class='flag-5'>Keil</b> Studio现已支持<b class='flag-5'>在</b>GitHub Codespaces<b class='flag-5'>中</b>运行

    SPI NOR闪存中加载文件的偏移地址是多少?

    我们 QorIQ SDKv2.0 中加载了使用自定义 RCW 字修改 RCW 字生成的u-boot-with-spl-pbl.bin,错误为“无法重置目标(T2080 内核无响应)”并且没有 UART 控制台消息 SPI NOR闪存中加载文件的
    发表于 04-08 06:38

    Keil中进行C代码与汇编代码的混合编程

    LOOPLOOP_END MOV R0,#12 ; R0 作为返回结果 BXlr ; BX lr 是返回的标志语句,lr 通常存储了返回地址 END 测试结果,成功地将返回值取回到C代码: 4.
    发表于 01-23 06:36

    CW32F030 FLASH 存储器的注意事项

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

    LAT1185+一个地址未对齐引起的 HardFault 异常应用笔记

    客户使用 STM32G070 的时候,KEIL MDK 为编译工具,当编译优化选项设置为Level0 的时候,程序会出现 Hard Fault 异常,而当编译优化选项设置为 Level1 的时候
    发表于 01-11 17:28 0次下载

    Keil如何调试程序变量的值变化呢?

    Keil,如何调试程序变量的值变化呢
    发表于 12-22 16:16

    飞凌嵌入式ElfBoard-文件I/O的深入学习之存储映射I/O

    ,假定系统页大小为1000字节,那么剩余的900字节全部填充为0,虽然可以通过映射地址访问剩余的这些字节数据,但不能在映射文件反应出来,由此可知,使用存储映射I/O进行大数据量操作
    发表于 12-06 16:39

    Keil5查看栈大小

    为需要的大小,然后保存并重新编译工程,新的栈大小即可生效。 2、查看.map文件: 方法说明:Keil MDK编译工程后,会生成一个.map文件,该文件包含了内存分配和使用的详细信息。 操作步骤
    发表于 11-14 06:32

    请问e203定义的地址空间是虚拟地址还是物理地址

    蜂鸟e203实现的是物理地址,硬件端与软件端的地址分配相同,从而确定软件开发过程能操作底层寄存器。 硬件端:总线分发模块sirv_icb1to16_bus定义好各个端口寄存器的
    发表于 11-11 06:20

    编译器如何指定代码的地址段?

    官方 gcc 的基础上添加了自定义指令,目前可以正确编译出汇编代码,但是我该如何指定汇编结果的地址段,生成的代码符合蜂鸟的地址分配呢?
    发表于 11-10 06:06