ZHCU875Z August 2001 – October 2023 SM320F28335-EP
若要生成 ECC,请向存储器映射添加一个单独的存储器范围,用于存放 ECC 数据并指示哪个存储器范围包含与此 ECC 数据对应的闪存数据。如果闪存数据有多个存储器范围,用户应为每个闪存数据范围分别添加 ECC 存储器范围。
ECC 存储器范围的定义也可为生成 ECC 数据的方式提供参数。
支持闪存 ECC 的器件的存储器映射与如下示例类似:
MEMORY {
VECTORS : origin=0x00000000 length=0x000020
FLASH0 : origin=0x00000020 length=0x17FFE0
FLASH1 : origin=0x00180000 length=0x180000
STACKS : origin=0x08000000 length=0x000500
RAM : origin=0x08000500 length=0x03FB00
ECC_VEC : origin=0xf0400000 length=0x000004 ECC={ input_range=VECTORS }
ECC_FLA0 : origin=0xf0400004 length=0x02FFFC ECC={ input_range=FLASH0 }
ECC_FLA1 : origin=0xf0430000 length=0x030000 ECC={ input_range=FLASH1 }
}
ECC 存储器范围的规范语法如下:
MEMORY {
<memory specifier1> : <memory attributes> [ vfill=<fill value> ]
<memory specifier2> : <memory attributes> ECC = {
input_range = <memory specifier1>
[ input_page = <integer> ]
[ algorithm = <algorithm name> ]
[ fill = [ true, false ] ]
}
}
附加到 ECC 存储器范围的“ECC”说明符指示 ECC 范围涵盖的数据存储器范围。ECC 说明符支持以下参数:
input_range = <range> | 此 ECC 数据范围涵盖的数据存储器范围。必需。 |
input_page = <page number> | 输入范围的页数。仅在输入范围名称有歧义时才必需。 |
algorithm = <ECC alg name> | 稍后在命令文件中使用 ECC 指令定义的 ECC 算法名称。如果只定义了一种算法,此参数则为可选项。(请参阅节 8.5.10.2。) |
fill = true | false | 对于输入范围的初始化数据中的空洞,是否生成 ECC 数据。默认值为“true”。使用 fill=false 生成的行为与 nowECC 工具类似。输入范围可正常填充,或使用虚拟填充(请参阅节 8.5.10.3)。 |