主题中讨论的其他部件:UNIFLASH、 C2000WARE
您好!
我已经使用闪存 API 很长时间了、直到现在、它一直都很好地工作。 我 一直以同步方式使用闪存 API,使用 Fapi_issueProgrammingCommand()函数,后跟 while (Fapi_checkFsmForReady()!= Fapi_Status_FsmReady)。 为了减少我的闪存访问 时间、 我已决定分开对 Fapi_issueProgrammingCommand()的调用,并检查 Flash 存储器控制器是否已准备好执行下一个命令,以便发出编程命令,然后轮询 FMC,直到它准备好以非阻塞的方式接收新命令。 在我的程序运行到一个在闪存中写入许多数据的路径之前、它也一直运行得很好、在该路径中、我忘记了添加新函数来检查闪存 API 的读数以获得新命令。 此时,我基本上执行了一个 for 循环,其中基本上有 Fapi_issueProgrammingCommand()函数,当然也没有 while (Fapi_checkFsmForReady() != Fapi_Status_FsmReady)。 如下所示:
for ( i=0; i<200;i++) {
Fapi_StatusType apiResult = Fapi_issueProgrammingCommand(
(uint32_t *)address, FLASH_AlignedBuffer, 4, 0, 0, Fapi_AutoEccGeneration);
}
我的程序在 core1上运行、初始化期间所有函数都加载到 RAM 中。 现在、程序仍在运行、但所有闪存访问都被拒绝。 程序不再写入闪存、我也无法对 core1进行编程。 我在2 TMS320F28388D 上尝试了该操作。 在第一个示例中、我失去了通过 UniFlash 或 CCS 对您可以想到的每个闪存控制的访问权限。 但我仍然可以通过 JTAG 进行连接(针对 exemple 分步运行代码)、但即使我仍然可以读取闪存、我也无法擦除闪存或对其重新编程。 我已经检查了我能想到的所有内容:尝试解锁 DCSM、但它看起来没有被锁定、使用 CCS 片上闪存的擦除功能、使用 UniFlash 的擦除功能。 当我尝试上传代码时、我从 GEL 文件中获得以下输出:
C28xx_CPU1: Error initializing flash programming: Interface returned from dll, but flash is not available on this device.
C28xx_CPU1: GEL Output: ... DCSM Initialization Start ... C28xx_CPU1: GEL Output: ... DCSM Initialization Done ... C28xx_CPU1: GEL Output: CPU2 is out of reset and configured to wait boot. (If you connected previously, may have to resume CPU2 to reach wait boot loop.) C28xx_CPU1: GEL Output: CM is out of reset and configured to wait boot. (If you connected previously, may have to resume CM to reach wait boot loop.) C28xx_CPU1: Loader: One or more sections of your program falls into a memory region that is not writable. These regions will not actually be written to the target. Check your linker configuration and/or memory map. C28xx_CPU1: Trouble Removing Breakpoint with the Action "Finish Auto Run" at 0x18368: (Error -1066 @ 0x18368) Unable to set/clear requested breakpoint. Verify that the breakpoint address is in valid memory. (Emulation package 9.2.0.00002)
并且、CCS 片上闪存实用程序中的任何操作都会导致一个弹出窗口、通知我:"Target is not connected or does not support current Flash operation"、而我是通过 JTAG 连接并逐步运行代码的。 另一个有趣的事情是、当我未通过 JTAG 连接时、代码不会运行。 事情是、要在调试模式下运行我的代码、我必须运行"emu boot Flash"脚本。 当我为微控制器加电时、它将无法自行启动。 core2仍然是完全正常的、我可以将代码加载到其中、一切运行正常。
在第2个 TMS320F28388D 上、运行错误代码后、似乎一切正常、因此我刚刚拔下 JTAG 连接。 从那时起、无法连接到该微控制器、代码就不会运行(可能与另一个代码的启动问题相同)、但我甚至无法再连接到 JTAG 中的两个内核中的任何一个。
我的想法已经用完了、但我需要让这两个微控制器恢复工作、因此任何提示都将受到极大的赞赏。
此致、
昆廷











