打印

STM32F103中IAP设置IROM1有什么用呢?

[复制链接]
6264|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
l科科1987|  楼主 | 2017-5-25 17:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
原味_郭| | 2017-5-26 11:55 | 只看该作者
IROM1应该是个寄存器吧,你看看数据手册就知道了

使用特权

评论回复
板凳
ahhsyf| | 2017-5-26 11:59 | 只看该作者
IROM1应该是要写入地址的,应该是跳转的地址

使用特权

评论回复
地板
enginezhong| | 2017-5-26 16:23 | 只看该作者
我记得MDK的配置中有这样的选项,配置IROM和IRAM的。

使用特权

评论回复
5
liutongda| | 2017-5-26 16:29 | 只看该作者
应该是分散加载代码的标准用法。

使用特权

评论回复
6
myidear| | 2017-5-26 20:05 | 只看该作者
什么是分散加载代码呢

使用特权

评论回复
7
gaoxiansheng| | 2017-5-26 20:09 | 只看该作者
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x00000400 0x00001C00 { ; load region size_region
ER_IROM1 0x00000400 0x00001C00 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x40000040 0x00003FA0 { ; RW data
.ANY (+RW +ZI)
}
}
这段代码显示出Bootloader程序从0x00000400处开始执行,最多占用0x1C00字节的Flash空间。另外,该程序的RAM从0x40000040开始,长度为0x3FA0个字节。这样RAM的低64字节保留给中断向量映射使用,高32字节保留给IAP编程使用。

使用特权

评论回复
8
新人求带| | 2017-5-27 17:11 | 只看该作者

IROM1 地址 即为当前程序下载到flash的地址的起始位置

使用特权

评论回复
9
lt1231| | 2017-5-27 17:14 | 只看该作者
我一般都是这么设置的
设置编译器keil 中的  options  for target 的target选项中的 IROM1地址 为0x0800 0000 大小为 0x20000即128K;
  IRAM1地址为0x2000 0000  大小为0x2000;

使用特权

评论回复
10
在路上的程序猿| | 2017-5-28 07:53 | 只看该作者

默认的条件下,IROM1的起始地址(Start)一般为0X08000000,大小(Size)为0X80000,即从0X08000000开始的512K空间为我们的程序存储(因为我们的STM32F103ZET6的
FLASH大小是512K)。而图中,我们设置起始地址(Start)为0X08010000,即偏移量为0X10000(64K字节),因而,留给APP用的FLASH空间(Size)只有0X80000-0X10000=0X70000
(448K字节)大小了。设置好Start和Szie,就完成APP程序的起始地址设置。

使用特权

评论回复
11
merry_zsp| | 2017-5-28 07:58 | 只看该作者
myidear 发表于 2017-5-26 20:05
什么是分散加载代码呢

ARM的连接器提供了一种分散加载机制,在连接时可以根据分散加载文件(.scf文件)中指定的存储器分配方案,将可执行镜像文件分成指定的分区并定位于指定的存储器物理地址。这样,当嵌入式系统在复位或重新上电时,在对CPU相应寄存器进行初始化后,首先执行ROM存储器的Bootloader代码,根据连接时的存储器分配方案,将相应代码和数据由加载地址拷贝到运行地址,这样,定位在RAM存储器的代码和数据就在RAM存储器中运行,而不再从ROM存储器中取数据或取指令,从而大大提高了CPU的运行速率和效率。

使用特权

评论回复
12
大白农| | 2017-5-28 21:09 | 只看该作者
对于分散加载的概念,在《ARM体系结构与编程》书中第11章有明确介绍。

使用特权

评论回复
13
hello牟| | 2017-5-28 21:13 | 只看该作者
分散加载文件(即scatter file 后缀为.scf)是一个文本文件,通过编写一个分散加载文件来指定ARM连接器在生成映像文件时如何分配RO,RW,ZI等数据的存放地址。如果不用SCATTER文件指定,那么ARM连接器会按照默认的方式来生成映像文件,一般情况下我们是不需要使用分散加载文件的。
但在某些场合,我们希望把某些数据放在指定的地址处,那么这时候SCATTER文件就发挥了非常大的作用。而且SCATTER文件用起来非常简单好用。
举个例子:比如像LPC2378芯片具有多个不连续的SRAM,通用的RAM是32KB,可是32KB不够用,我想把某个.C中的RW数据放在USB的SRAM中,那么就可以通过SCATTER文件来完成这个功能。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

214

帖子

1

粉丝