您好!
由于软件的发展、我无意中通过删除 链接器脚本中在 RAM 中找到 API 的一行、将闪存编程 FAPI 函数从 RAM 移动到闪存:
.TI.ramfunc:{-l F021_API_F2837xD_FPU32.lib }
负载= FLASHC、PAGE = 0
RUN = RAMD0_1、PAGE = 0、
Load_start (_RamfuncsLoadStart)、
Load_Size (_RamfuncsLoadSize)、
Load_End (_RamfuncsLoadEnd)、
RUN_START (_RamfuncsRunStart)、
RUN_SIZE (_RamfuncsRunSize)、
RUN_END (_RamfuncsRunEnd)、
表(BINIT)
我只剩下以下内容:
.TI.ramfunc:load = FLASH
运行= RAMD0_1、
表(BINIT)
通过 FAPI 在闪存中 、我看到闪存编程已成功执行。
以下是相关条件:
- 数据在扇区 C 中编程、
- 编程的闪存位置为空白(仅 FFs)、
- 主 FAPI 代码位于另一个闪存扇区(例如扇区 G)中
- RAM 中仍有三个次要函数(即:Fapi_setupEepromSectorEnable Fapi_User、Fapi_setupBankSectorEnable、Fapi_serviceWathcdogTimer)、它们位于 Functions.c 中。
- 等待编程结束的循环位于 RAM 中:while (Fapi_checkFsmForReady ()== Fapi_Status_Fsm);
- 该程序不只执行擦除命令 program-auto-ECC
- 中断被禁用
- CPU 由 DCSM 进行保护(所有闪存扇区、RAMD、RAMLS 均安全)
我想问:
- 如果它会一直在我的条件下工作,或者有一个有时出错的风险?
- 如果出现问题、可能会出现哪些错误:
- NMI、
- 在闪存中编程了错误的数据
- 还是在其他位置(甚至扇区)编程数据?
如果代码能够正常工作、我不希望更改、因此我正在寻找相关确认。
此致、
Piotr Romaniuk