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.

[参考译文] CCS/TMS570LS0432:CAN 引导加载程序示例代码在 CAN_DOWNLOAD_COMMAND 之后卡住

Guru**** 2609845 points
Other Parts Discussed in Thread: TMS570LS0432

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/749722/ccs-tms570ls0432-can-boot-loader-example-code-is-getting-stuck-after-can_download_command

器件型号:TMS570LS0432

工具/软件:Code Composer Studio

您好,

我正在测试 CAN 引导加载程序示例代码。 我没有 NI-CAN 器件、因此我已经编写了 BeagleBone 增强版代码、以发送示例程序文档文件夹中提供的文档中指定的所有命令。 当我发送 ping 命令时,引导加载程序通过 JTAG 放置闪烁应用程序映像而不擦除组0第0至第10节,从而使 ACK 也被重置,运行命令正常工作。

我的问题是、当我提供下载命令时、该命令实际上会将闪存从应用程序起始地址擦除为映像大小、然后它应该会响应 ACK 或 NACK、但在发出此命令后、它会卡住。

我想 CPU 启用擦除组0、因为这将尝试擦除同一组的扇区。

尽管在 main 之前的系统初始化文件中、_Copy2RAM 被调用、但它无法正常工作、并且我没有收到任何 ACK。

什么是解决方案??

谢谢。。。  

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

    您好 Indrajit、

    1.是否正确定义了闪存扇区的闪存地址和大小? 在示例代码中、它们在 flash_defines.h 中定义

    2.调用_copy2RAM_()函数之前,请确保已定义 API_LOAD、API_run 和 API_SIZE 的段。 在示例代码中、它们在链接器命令文件中定义。

     闪存 API:

     {

      fapi_UserDefinedFunctions.obj (.text)

      bl_flash.obj (.text)

      --library=.\flash_api\lib\f021_api_CortexR4_be.lib (.text)

     }load = flash_API、run = RAM、load_start (api_load)、run_start (api_run)、size (api_size)

    3.确保链接了正确的 F021闪存库: F021_API_CortexR4_Be.lib、而不是 F021_API_CortexR4_BE_V3D16.lib 和 F021_API_CortexR4_BE_L2FMC_V3D16.lib

     

     

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

    感谢您的回复、

    因为我使用的是 具有板载 TMS570ls0432的 Hercules Launchpad。 我正在使用以下文件--

    flash_defines.h ----

    我认为闪存的定义是正确的。

    2.链接器 cmd 文件--就像它的原样

    我已经复制   了项目文件夹内的 F021_API_CortexR4_be.lib。

    我认为_copy2RAM_()不起作用、并且由于该引导加载程序无法擦除闪存组0、因为我知道闪存 API 无法在同一组的扇区内工作。

    我需要进行的任何更改???

    e2e.ti.com/.../2251.flash_5F00_defines.h

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

    由于此器件只有一个闪存组、因此必须将闪存 API 和 BL_FLASH.c 复制到 SRAM 并从 SRAM 执行。 否则、闪存将不会被擦除和编程。

    copy2RAM_()使用了在链接器 cmd 文件中定义的变量:api_load、api_run、api_size

    请更改以下内容:

    --library= F021_API_CortexR4_be.lib <FlashStateMachine.obj
    program.obj
    init.obj
    utilities.obj
    ASYNC.obj>(.text)

    至:

    --library= F021_API_CortexR4_be.lib (.text)

    库位于何处? 您需要将库的相对路径放入: --library= F021_API_CortexR4_be.lib (.text)