ZHCUBW5 April 2024
设置数据并向有效的闪存或 OTP 存储器地址发出 512 位(32 个 16 位字)AutoEcc 生成模式编程命令。
Fapi_StatusType
Fapi_issueAutoEcc512ProgrammingCommand (
uint32 *pu32StartAddress,uint16*pu16DataBuffer,
uint16u16DataBufferSizeInWords
)
pu32StartAddress [in] | 闪存中的起始地址,用于对数据和 ECC 进行编程。 |
pu16DataBuffer [in] | 指向数据缓冲区地址的指针。数据缓冲区的地址应为 512 位对齐。 |
u16DataBufferSizeInWords [in] | 数据缓冲区中 16 位字的数量。最大数据缓冲区大小(以字为单位)不应超过 32。 |
此函数会自动为用户提供的 512 位数据(第二个参数)生成 8 个字节的 ECC 数据,并在用户提供的 512 位对齐闪存地址(第一个参数)处将数据和 ECC 一起编程。发出此命令时,闪存状态机将对所有 512 位以及 ECC 进行编程。因此,使用该模式时,未提供的数据全部视为 1 (0xFFFF)。针对 512 位数据计算 ECC 并对其进行编程后,即使在该 512 位数据中将位从 1 编程为 0,也无法对此类 512 位数据进行重新编程(除非扇区被擦除),因为新的 ECC 值将与先前编程的 ECC 值相冲突。
SECTIONS
{
.text : > FLASH, ALIGN(32)
.cinit : > FLASH, ALIGN(32)
.const : > FLASH, ALIGN(32)
.init_array : > FLASH, ALIGN(32)
.switch : > FLASH, ALIGN(32)
}
如果不在闪存中对齐这些段,则需要跟踪段中不完整的 512 位字,并将这些字与其他段中的字组合在一起,从而使 512 位字变得完整。这一点很难做到。因此,建议在 512 位边界上对段进行对齐。
某些第三方闪存编程工具或 TI 闪存编程内核示例 (C2000Ware) 或任何自定义闪存编程解决方案可能假定传入数据流全部为 512 位对齐,并且可能没有预想到某段可能从未对齐的地址开始。因此,假设提供的地址进行了 512 位对齐,其可能会尝试一次对最大可能的(512 位)字进行编程。当地址未对齐时,这可能会导致出现故障。因此,建议在 512 位边界上对齐所有段(映射到闪存)。
有关该函数允许的编程范围,请参阅表 3-3。
闪存 API | 主阵列 | DCSM OTP | ECC | 链路指针 |
---|---|---|---|---|
Fapi_issueAutoEcc512ProgrammingCommand() | 允许 | 允许 | 允许 | 不允许 |
将在下一个 C2000ware 版本中发布此功能的示例实现。