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.

[参考译文] RM48L950:擦除闪存扇区0会导致 Fapi_BlockEras()中的挂起

Guru**** 2473260 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/680543/rm48l950-erasing-flash-sector-0-results-in-a-hang-in-fapi_blockerase

器件型号:RM48L950

您好!

我正在开发一个引导加载程序、它可以更新应用程序代码以及引导加载程序映像本身。  我从 spna190.zip 代码库开始。  如文档所述、要对闪存扇区0进行重新编程、必须找到包含 F021 API 等的闪存 API 部分、以便从 RAM 运行。  我可能是从旧版本的 spna190.zip 开始的、因为我发现需要进行3个额外的更改才能成功擦除和重新编程引导加载程序:

在 BL_FLASH.c 中、对 Fapi_enableMainBankSectors (0xFFFE)的调用必须替换为 0xFFFF 的参数以允许扇区0擦除。

在 bl_link.cmd 中、必须将 bl_flash.obj (.const)段添加到 flashAPI 段中。  这是因为 bl_flash.c 使用了 flash_sector[]数据表(常量数据)  除非.const 段也位于 RAM 中、否则执行将在以下行的 BL_FLASH.c 中挂起:

while (fapi_get_FSM_status!= fapi_Status_Success);

3. bl_ymodem.c 调用 memcpy。  这意味着 memcpy 也必须位于 RAM 中。  我在 BL_YMODEM 中创建了我自己的 memcpy 版本、以避免将某些运行时库移动到 RAM。

我的问题:我现在可以使用此功能、但是否有支持引导加载程序映像重新编程的更最新版本的 spna190.zip 文件(已经过测试并可以正常工作?)  我想确保我没有错过任何东西。

谢谢、

Keith

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

    感谢您分享非常有用的信息。

    我们没有引导加载程序及其文档的更新。