This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LS3137:使用 FO21 API 进行闪存编程

Guru**** 2595805 points
Other Parts Discussed in Thread: TMS570LS3137, UNIFLASH

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/738458/tms570ls3137-flash-programming-using-fo21-api

器件型号:TMS570LS3137
主题中讨论的其他器件: UNIFLASH

您好!

我正在尝试使用 F021 API 库对 TMS570LS3137片上闪存进行编程。 我有不同类型的图像、一个图像将加载到 Bank0的 Sector0 (od 大小32KB)上、另一个图像将驻留在 Bank0的 Sector14 (大小128KB)上。 我可以对 Bank0的 Sector0进行编程、而不会出现任何问题、但当使用相同的代码对 Sector14进行编程时、数据不会进行编程。 我尝试对 Sector4、Sector10 (大小128KB)进行编程、发现了相同的问题、最终无法对大小为128KB 的扇区进行编程。

下面是我用于编程的 API 命令。 是否有任何其他 API 可用于对 Bank0大小为128KB 的扇区进行编程?

使用的示例 API 命令:

Fapi_initializeFlashBanks (180)

Fapi_setActiveFlashBank (Fapi_FlashBank0);

Fapi_enableMainBankSectors (0xFFFF);
Fapi_enableEprom 组安全器(0xFFFFFFFF、0xFFFFFFFF);

Fapi_issue19dCommandWithAddress (Fapi_EraseSector、0x160000);

fapi_issueProgrammingCommand (0x160000、char_array、8、0、0、fapi_AutoEccGeneration);

您能帮我找出问题吗?

谢谢、

Kalyan

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Kalyan、

    1.启用 MainBankSectors 后、您需要等待 FSM 准备就绪才能使用(非忙)
    Fapi_enableMainBankSectors (0xFFFF);
    while (fapi_check_FSM_ready_busy!= fapi_Status_FsmReady);
    2.发出擦除和编程命令后、请检查 FSM 状态、例如
    Fapi_issue19dCommandWithAddress (Fapi_EraseSector、0x160000);
    while (fapi_check_FSM_ready_busy =fapi_Status_FsmBusy);
    while (fapi_get_FSM_status!= fapi_Status_Success);

    不能在 bank0中执行闪存 API 来擦除/编程 bank0中的扇区。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、

    感谢您的快速响应。

    我的代码中有这些 while 循环、用于检查闪存状态机状态。 仍然无法擦除/编程组0的扇区4、5、6、7、8、9、10、11、12、13和14。

    我的应用正在从 RAM 执行、我正在尝试使用闪存 API 对闪存组#0进行编程。

    谢谢、
    Kalyan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Kalyan、

    您如何将第一个映像编程到扇区0? 它是由 CCS/uniflash 编程还是由您在 SRAM 中执行的代码进行编程?

    您可以与我分享您的代码吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、

    我们使用 CCS 将第一个映像编程到 Bank0的 sector0。 我们遵循 F021 API 文档对闪存扇区进行编程。

    大小为32KB 和128KB 的编程扇区是否存在差异?

    您能否共享用于编程的示例代码、以便我们轻松进行测试?

    谢谢、
    Kalyan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Kalyan、

    对32KB 扇区和128KB 扇区进行擦除/编程没有不同之处。 封闭函数用于闪存操作并在引导加载程序中使用。

    e2e.ti.com/.../5165.bl_5F00_flash.h

    e2e.ti.com/.../2705.bl_5F00_flash.c