ZHCU875Z August 2001 – October 2023 SM320F28335-EP
ROMS 指令将系统的物理存储器配置指定为地址范围参数列表。每个地址范围都会生成一组文件,其中包含与该地址范围对应的十六进制转换实用程序输出数据。每个文件可用于对一个 ROM 器件进行编程。
ROMS 指令与链接器的 MEMORY 指令类似:两者都定义目标地址空间的存储器映射。ROMS 指令中的每一行条目都定义了一个具体的地址范围。通用语法为:
ROMS { | |||
romname: | [origin=value,] [length=value,] [romwidth=value,] [memwidth=value,] [fill=value] [files={filename1, filename2, ...}] | ||
romname: | [origin=value,] [length=value,] [romwidth=value,] [memwidth=value,] [fill=value] [files={filename1, filename2, ...}] | ||
... | |||
} |
ROMS | 开始指令定义。 |
romname | 标识存储器范围。存储器范围的名称长度可为一到八个字符。名称对程序来说无关紧要;它只用于标识范围,但如果输出用于加载映像,它可表示段名。(允许存储器范围名称重复。) |
origin | 指定存储器范围的起始地址。它可输入为 origin(原点)、org 或 o。关联值必须为十进制、八进制或十六进制常量。如果省略原点值,则原点默认为 0。下表总结了可用于指定十进制、八进制或十六进制常量的表示法: |
常量 | 表示法 | 示例 |
---|---|---|
十六进制 | 0x 前缀或 h 后缀 | 0x77 或 077h |
八进制 | 0 前缀 | 077 |
十进制 | 无前缀或后缀 | 77 |
length | 指定存储器范围的长度为 ROM 器件的物理长度。可输入为 length(长度)、len 或 l。值必须为十进制、八进制或十六进制常量。如果省略长度,默认为整个地址空间的长度。 |
romwidth | 指定范围的物理 ROM 宽度,以位为单位(请参阅节 12.3.3)。此处指定的任何值均会覆盖 --romwidth 选项。值必须为十进制、八进制或十六进制常量,为大于或等于 8 的 2 的幂。 |
memwidth | 指定范围的存储器宽度,以位为单位(请参阅节 12.3.2)。您指定的任何值均可覆盖 --memwidth 选项。值必须为十进制、八进制或十六进制常量,为大于或等于 8 的 2 的幂。使用 memwidth 参数时,必须同时在 SECTIONS 指令中指定每个段的 paddr 参数。(请参阅节 12.5。) |
fill | 指定范围使用的填充值。在映像模式中,十六进制转换实用程序使用此值填充范围中任何段之间的所有空洞。空洞是两个输入段之间的区域,会形成不包含实际代码或数据的输出段。fill 值必须为十进制、八进制或十六进制常量,其宽度等于目标宽度。您指定的任何值均可覆盖 --fill 选项。使用 fill 时,必须同时使用 --image 命令行选项。(请参阅节 12.9.2。) |
files | 标识此范围对应的输出文件的名称。将名称列表置于大括号中,并按从最低有效 到最高有效 输出文件的顺序排序,期中存储器字的位从右到左进行编号。文件名的数量必须等于该范围生成的输出文件的数量。若要计算输出文件的数量,请参阅节 12.3.3。如果列出的文件名过多或过少,实用程序会发出警告。 |
除非使用 --image 选项,否则定义范围的所有参数都是可选的;逗号和等号也是可选的。没有原点或 长度的范围定义了整个地址空间。在映像模式中,所有范围均需要原点和长度。
范围不能互相重叠,必须按地址升序列出。