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
    +关注

    关注

    2305

    文章

    11120

    浏览量

    371116
  • keil
    +关注

    关注

    69

    文章

    1224

    浏览量

    171797

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    飞凌嵌入式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

    N76E0003调试器驱动程序keil失败了的原因?

    N76E0003调试器驱动程序 keil 失败
    发表于 08-25 07:20

    Keil / IAR 开发环境下的 Debug 模式下,用户是否可以空闲 ru 期间立即添加新的断点?

    Keil / IAR 开发环境下的 Debug 模式下,用户是否可以空闲 ru 期间立即添加新的断点
    发表于 08-21 07:56

    请问如何在 Keil μVision 或 IAR EWARM 中使用观察点进行调试?

    如何在 Keil μVision 或 IAR EWARM 中使用观察点进行调试?
    发表于 08-20 06:29

    AT32 IAP using the USART

    跳转到地址 0x08000004 中断向量表处,而不是新程序的中断向量表,如图标号④所示;程序再根据我们设置的中断向量表偏移量,跳转到对应中断源新的中断服务
    发表于 07-11 10:51

    AD7745使用,需要进行偏移校准和系统校准吗?

    ①AD7745使用,需要进行偏移校准和系统校准吗,规格书上面有描述,但不确定是否需要校准,目前是差分测量电容,能提供一份校准示例代码吗,谢谢。 ②贵司是否有AD7745寄存器配置示例代码,如果有
    发表于 06-17 06:22

    IAR Arm开发工具链--function_sections编译选项的使用

    本文主要介绍IAR Arm开发工具链不修改源代码的情况下使用‑‑function_sections编译选项把函数放到单独的section。
    的头像 发表于 06-13 13:53 1508次阅读
    <b class='flag-5'>在</b><b class='flag-5'>IAR</b> Arm开发工具链<b class='flag-5'>中</b>--function_sections编译选项的使用

    CUEBIDE生成的APP程序写入FLASH之后无法正常跳转怎么解决?

    实现IAP的功能,使用CUEBIDE生成的APP程序的bin文件,写入到FLASH之后,无法正常跳转。 程序卡在/ 检查栈顶地址是否合法 / 但是用KEIL生成的bin文件写入后可以正
    发表于 06-09 06:43

    Keil MDK到IAR EWARM:通过工程迁移实现项目资产的更好管理

    对于需要统一开发环境或涉及多核架构(如Cortex-A/R)的项目,越来越多的用户选择从Keil MDK迁移到IAR EWARM。这就会面临着需要将之前的Keil MDK工程迁移到IAR
    的头像 发表于 05-08 09:03 998次阅读
    从<b class='flag-5'>Keil</b> MDK到<b class='flag-5'>IAR</b> EWARM:通过工程迁移实现项目资产的更好管理

    开发5744的Bootloader时,为flashdriverram中指定了一块的空间?

    你好,我开发5744的Bootloader时,为flashdriverram中指定了一块的空间,我想要将flashdriver放在这块地址
    发表于 04-02 07:07

    Keil uVision 5安装包下载,详细安装教程~

    Simulator\",IARDebugger→Setup→Driver中指定第三方驱动Vdmcspy.dll。 点击IDE的Debug进入联合仿真模式。 ADS工程可通过少量修改迁移至
    发表于 03-15 12:10

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

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