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.

[参考译文] TMS570LS1224:F021 API、用于在 IAR Workbench IDE 和引导加载程序中的 RAM 中加载和运行、以及用户应用链接器重定位

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/610284/tms570ls1224-f021-api-to-load-and-run-in-ram-in-iar-workbench-ide-and-bootloader-s-user-application-linker-relocation

器件型号:TMS570LS1224
主题中讨论的其他器件:HALCOGEN

您好!

我们正在开发 TI TMS570LS1224PGE MCU 并使用 IAR Workbench IDE、TI Halcogen F021_API_CortexR4_BE_V3D16.lib、即 F021闪存 API。

我们有以下几个问题:

1.如何在 RAM 上加载和运行此 F021闪存 API、因为引导加载程序代码将擦除并写入组0的扇区。

2.如何在用户应用程序中重新定位中断矢量、让我们假设它在组0扇区7中、如果您有任何示例用户应用程序链接器脚本文件或 IAR 工作区、将会有所帮助。

3.要从引导加载程序跳转到用户应用程序,我们是否需要采取任何预防措施?

 

谢谢、

哈迪克·沙阿

 

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

    您好、Hardik、

    在闪存中为闪存 API 相关代码创建一个段。 为了使用 TI CCS、这在链接器命令文件中定义。

        示例(请参阅 TI Hercules 引导加载程序示例项目中的 BL_LINK_cmd)

     闪存 API:

     {

      fapi_UserDefinedFunctions.obj (.text)

      bl_flash.obj (.text)

      --library=...\..\lib\F021_API_CortexR4_be.lib (.text)

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

    2.在引导加载程序中完成器件初始化后、将本节中的代码复制到 SRAM。

       TI Hercules 引导加载程序中使用的示例

    ;将闪存 API 从闪存复制到 SRAM。

    .def _APIcopy2RAM_

    asmfunc

    copyAPI 2RAM_

    .ref API_load

    FLASH_LOAD .word API_LOAD

    .ref API_run

    FLASH_run .word API_run

    .ref API_size

    FLASH_SIZE .word API_SIZE

    LDR r0、FLASH_LOAD

    LDR R1、FLASH_RUN

    LDR R2、FLASH_SIZE

    添加 R2、R1、R2

    COPY_Loop1:

    LDR R3、[r0]、#4

    STR R3、[R1]、#4

    CMP R1、R2

    BLT COPY_LOOP1

    BX LR

    endasmfunc

    启动加载程序需要检查闪存中是否存在应用程序代码、如果需要更新、如果不需要、只需跳转到应用程序代码:

        ((void (*)(void)) g_ulApplicationAddress)();

     

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

    您好、Q J Wang、

    您能否与我们分享如何与 IAR Workbench IDE 配合使用?

    谢谢、

    哈迪克·沙阿

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

    我对 IAR 工作台不是很熟悉。 HALCoGen 可以为 IAR 工作平台生成代码、您可以将其用作参考。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、

    我关注这个线程、并且能够制作 IAR 链接器脚本来重新定位 RAM 上的闪存 API
    作者:Riccardo Capponi -"您必须将所有闪存 API 复制到 RAM 中、方法是在链接器文件(.ICF)中添加此行:

    通过复制{对象 xxxxxxxxx.lib }进行初始化;

    其中 xxxxxxxxx 是您的库的名称。 例如、在 TMS470中、库为"pf035a_api_eabi.lib"、要在 linekr 文件中添加的行为:

    通过复制{对象 pf035a_api_eabi.lib}进行初始化;
    " Thread 链接
    e2e.ti.com/.../472399
    但我仍然无法读取和写入 Bank0、任何一个都可以帮助。

    谢谢、
    哈迪克·沙阿