主题中讨论的其他器件:UNIFLASH
工具与软件:
您好!
我正在尝试使用 FlashApi 覆盖在 OTP 扇区0中编程的 AJSM 密钥。 我确保与先前编程的密钥相比、新的128位密钥只会将位从1翻转为0。
启用 OTP 编程并发出编程命令后、FSMSTAT 寄存器的位14设置为1、对应于 ILA"非法地址"。 有没有我忘记考虑的副作用?
以下是我当前使用闪存 API 的代码:
#include <F021.h>
#define AJSM_KEY_LEN 16u ///< The length of the AJSM key in bytes
#define AJSM_KEY_ADDRESS (0xF0000000u)
bool write_ajsm_key(const uint8_t ajsm_key[AJSM_KEY_LEN])
{
const uint8_t unlockOtpBank0 = 1u;
Fapi_StatusType fret = Fapi_enableBanksForOtpWrite(unlockOtpBank0);
if ((fret != Fapi_Status_Success) || (FAPI_GET_FSM_STATUS != 0))
{
return false;
}
fret = Fapi_issueProgrammingCommand((uint32_t*)AJSM_KEY_ADDRESS, ajsm_key, AJSM_KEY_LEN, NULL, 0u, Fapi_AutoEccGeneration);
while (FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmBusy)
{
;
}
if ((fret != Fapi_Status_Success) || (FAPI_GET_FSM_STATUS != 0))
{
Fapi_disableBanksForOtpWrite();
return false;
}
Fapi_disableBanksForOtpWrite();
Fapi_FlashStatusWordType fsw;
return Fapi_doVerifyByByte((uint8_t*)AJSM_KEY_ADDRESS, AJSM_KEY_LEN, ajsm_key, &fsw) == Fapi_Status_Success;
}
感谢你的帮助。
Br、Aaron