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.

[参考译文] TMS570LC4357:TMDX570LC43HDK 中的 UART 引导加载程序

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1001228/tms570lc4357-uart-bootloader-in-tmdx570lc43hdk

器件型号:TMS570LC4357
主题中讨论的其他器件:TMDX570LC43HDKHALCOGENTMS570LS1224

大家好、  

用于 Hercules 的 UART 引导加载程序是 TMS570LS12x MCU 支持 TMDX570LC43HDK 所需的  

http://www.ti.com/lit/zip/spna192。 

如何在   HALCoGen 中为  UART 引导加载程序配置 Hercules TMDX570LC43HDK、以及所有修改需要在代码中执行什么操作?

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

    我已经查看了论坛并获得了论坛中提供的用于 LC43x 的 UART 引导加载程序代码  

    "

    封闭的是 TMS570LC43x 器件上的 UART 引导加载程序示例。 引导加载程序在第1个闪存扇区中编程、应用程序在第1组扇区中编程。 这只是一个示例。

    TMS570LC4357_UART_Boot.7z"  

    使用此代码时、我遇到错误  

    支持我调试此错误。

    请确认链接器推荐文件和运行时支持库?

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

    您好、Santhosh、

    我之前在该论坛上发布了一个 LC43x UART 引导加载示例。 我稍后将为您找到链接。

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

    e2e.ti.com/.../compiler-tms570lc4357-boot-loader-lc43x

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

    请使用屏幕截图中突出显示的运行时库。 此库支持浮点。  

    不要使用默认的链接器 cmd 文件。 该工程具有其自己的链接器 cmd 文件。

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

    您好、QJ Wang、

    现在、LC43x UART 引导加载程序工程已完成、但我在 UART 终端中没有收到任何响应  

    警告需要检查?

    确认此警告,终端我看不到任何信息。

    请支持我调试代码。

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

    您的终端中可能有多个串行端口可用。 应使用带有 xds100v2 Application 的端口。

    两侧的波特率(端子、和 TMS570)应该互相匹配。

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

    您好、QJ Wang、

    是的、我使用了相同的端口 xds100v2 (COM7)、但仍然在 COM7终端中收到任何消息

    您能不能就此为我提供指导。

    我看不到 UART 的 HL_SCI.h 驱动程序文件、而不是这个驱动程序。 是的  

    使用了 sci_common.h。 您能向我展示 HALCoGen 驱动程序设置吗?  

    如何在此聊天中共享完整版本?

    提前感谢  

    桑托什

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

    您好、QJ Wang

    帮助我解决此3警告。

    谢谢你

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

    您好、QJ Wang

    我使用了您共享的构建、但我遇到了这个问题  

    请在该调试中帮助我。

    我使用过旧的 TS1224板该代码工作正常、但无法使用 TC43x HDK 板执行相同的操作。

    谢谢你

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

    您好、QJ Wang

    删除了 NULL 声明。

    我已解决上述3个警告  

    请确认为什么在运行调试时此闪存验证失败。

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

    ECC 使用链接器 CMD 文件生成。 在将代码加载到闪存时、需要取消选中"ECC"自动生成"和"验证"。

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

    您好、QJ Wang、

    是的、我为闪存验证设置选择了无。 现在执行项目

    但我无法在 COM7中看到结果  

    之前我使用过 LS1224 UART 引导加载程序、该程序可以正常工作、但在 LC43x 中无法正常工作  

    此问题的主要原因是什么?

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

    LS1224 UART 引导加载程序不使用链接器中的 ECC。

    BTW、如果使用新版本 CCS、则需要在链接器属性中手动启用链接器 ECC:

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

    仍然无法在 COM7中看到 UART 消息  

    您能否在 HDK 电路板中分享 LC43x 的工作项目?

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

    这是 LED 闪烁和 SCI 显示的示例项目。

    e2e.ti.com/.../TMS570LC43x_5F00_rtIBlinky.zip

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

    您好、QJ Wang、

    我已经测试 了 TMS570LC43x_rtIBlinky.zip。 它在 HDK 板中工作正常。  

    我知道该代码将起作用、因为我已经测试了 UART 代码。  

    我不确定 UART 引导加载程序的构建配置是否可用于编辑 UART 构建中的 HALCoGen 设置。  

    那么、您能否为我提供构建、或者我如何在这个论坛中将构建附加到这里?

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

    您好、QJ Wang、

    您能否使用最新的 CCS TI v20.2.LTS 在 HDK 中测试代码?  

    请确认此错误  

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

    我发布的 UART 引导加载程序的示例代码应该起作用。 我测试了示例代码、它可以显示调试信息。

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

    您好、QJ Wang、

    现在、我已经尝试在 TMS570LC43x 电路板 Launchpad 中使用 UART 引导加载程序。  

    而不使用链接器命令文件  

    构建无错误。 我们可以执行或调试它。  

    但是、如果我添加 hL_sys_link 命令文件、那么我在编译器中会遇到此错误

    您能否检查并确认此问题是什么?

    此致、

    桑托什

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

    您好、QJ Wang、

    我是否需要修改链接器的命令文件?

    /**//
    /*------------------ *
    /*用户代码开始(0)*/
    /*用户代码结束*/


    /*------------------ *
    /*链接器设置*/

    --retain="*(.intvecs)"

    /*用户代码开始(1)*/
    /*用户代码结束*/

    /*------------------ *
    /*内存映射*/

    存储器

    /*用户代码开始(2)*/
    /*用户代码结束*/
    引导程序(X):origin=0x00000000 length=0x00000020
    FLASH0 (RX):origin=0x00000020 length=0x001FFFE0
    FLASH1 (RX):origin=0x00200000 length=0x00200000
    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0007EB00

    /*用户代码开始(3)*/
    /*组0 ECC */
    /*
    ECC_VEC (R):origin=(0xf0400000 +(start (vectors)>> 3))
    length=(size (vectors)>> 3)
    ecc={algoL2R5F021、input_range=vectors}

    ECC_FLA0 (R):origin=(0xf0400000 +(开始(FLASH0)>> 3))
    length=(size (FLASH0)>> 3)
    ecc={algoL2R5F021、input_range=FLASH0}
    *
    /*组1 ECC */
    /* ECC_FLA1 (R):origin=(0xf0400000 +(开始(FLASH1)>> 3))
    length=(size (FLASH1)>> 3)
    ecc={algoL2R5F021、input_range=FLASH1}
    *
    /*用户代码结束*/

    /*用户代码开始(4)*/
    /ECC{
    // algoL2R5F021:address_mask = 0xffffff8 //地址位31:3 */
    //汉明_mask = R4 //使用掩码中的 R4/R5构建*/
    //奇偶校验掩码= 0x0c //*设置哪些 ECC 位为偶校验和奇校验*/
    //镜像= F021 //* RM57Lx 和 TMS570LCx 在 F021中编译*/
    //}

    /*用户代码结束*/


    /*------------------ *
    /*段配置*/

    部分

    /*用户代码开始(5)*/
    /*用户代码结束*/
    .intvecs:{}>向量
    .text align (32):{}> FLASH0 | FLASH1
    .const align (32):{}> FLASH0 | FLASH1
    .cinit align (32):{}> FLASH0| FLASH1
    .pinit align (32):{}> FLASH0 | FLASH1
    .bss:{}> RAM
    .data :{}> RAM
    .sysmem:{}>RAM

    /*用户代码开始(6)*/

    /*用户代码结束*/

    /*用户代码开始(7)*/
    /*用户代码结束*/


    /*------------------ *
    /*其他*/

    /*用户代码开始(8)*/
    /*用户代码结束*/
    /*------------------ *

    请检查并确认我是否需要修改它?

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

    该错误消息指示您的项目中有两个链接器 cmd 文件。

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

    您好、QJ Wang、

    现在、我在调试时收到此错误。 但是、如果我执行任何其他项目、它工作正常。

    请告诉我该 UART 引导加载程序代码中的问题。

    提前感谢您。

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

    我使用该引导加载程序进行了测试、它可以正常工作。  

    什么是调试错误?  

    从快照中、应使用 COM6。

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

    您好、QJ Wang、

    您能否确认是否是内存问题?

    我使用的是 Launchpad 或 HDK TMS570LC43x。   

    XDS110 USB 调试探针/CortexR5被挂起。  

    提前感谢您。

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

    您好、QJ Wang、

    最后、我在 UART 引导加载程序中获得了一些结果。 由于 UART 的配置为9600、但在 TMS570LS1224中为11500  

     

    在将应用程序映像下载到内部闪存中仍然存在问题  

    该数据包未运行、 并且从远程系统获取无响应。

    请为我提供同一项目的解决方案和 HALCoGen 软件包  

    谢谢你  

    桑托什

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

    尝试一下、刚刚测试过、没有任何问题。 HAL 配置文件位于 HALCOGen 文件夹中:

    e2e.ti.com/.../TMS570LC4357_5F00_UART_5F00_BootLoader.zip

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

    您好、QJ Wang、

    我在调试模式下遇到以下问题。

    新代码 TMS570LC4357_UART_BootLoader.zip 编译正常、但在调试模式下出现问题。

    请确认调试器未连接的原因?

    谢谢你  

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

    您好、QJ Wang、

    新代码可与 TMS570LC4357 Launchpad 配合使用、但在 HDK 电路板中无法正常工作

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

    它可以在 HDK 上正常工作。

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

    您好、QJ Wang、

    我需要在 SCI2中的 UART 引导加载程序中提供支持、而不是 SCI1驱动程序。

    因此、我必须在 HalCoGen 和代码中更改 SCI2的 UART 配置。  

    我在 config.h 文件 UART 中仅将  sciREG1中的 sciREG2更改为 sciREG2

    请确认我需要对 SCI1至 SCI2进行的任何其他更改。  

    谢谢你。

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

    您好!

    是的、需要在 bl_config.h 中更改 UART 定义。

    BTW、在 HDK 上、没有用于 SCI2的 UART 收发器。

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

    是的、两个电路都是相同的。  

    我在两个位置更改了代码、

    1。  

    2.

    请确认 SCI1在 Launchpad 以及我们的定制板中均有效。  

    相同的代码在 Launchpad 和电路板上的 SCI2中无法正常工作。  

    基本 UART 在 launchpad 和我们的定制板的 SCI1和 SCI2中都工作。

    谢谢你  

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

    HDK 和 Launchpad 上没有用于 SCI2的 UART 收发器。 您如何使 SCI2与 PC 终端通信?

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

    是的、但我已经为 SCI2使用了外部 UART 收发器、它现在在 LC43x 的 Launchpad 中工作。 引导加载程序在 SCI2中也工作正常。

    我遇到的问题是在调试模式下使用闪烁的应用程序 bin 文件、但它正在工作、非调试模式 LED 亮起、但不闪烁。 感谢您的支持。

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

    您好、QJ Wang、

    在 UART 引导加载程序中加载了应用程序代码后、我在其中遇到了一些问题。

    在 调试模式下、当应用代码(LED 闪烁)写入闪存后、跳转应用代码工作正常。 但在首次 nRST 或 PORRST 之后、引导加载程序会输入应用程序代码、但 LED 闪烁不起作用、因为复位源是 NO_RESET。

    2._c_int00  ()函数在 UART 引导加载程序和我的应用程序代码中都是相同的。 我是否需要为 UART 引导加载程序配置 HALCoGen、应用程序应该相同或不同。  

      UART 引导加载程序和应用程序代码中的 hL_sys_link.cmd 文件  

    引导加载程序 sys_intvecs.asm:

    resetEntry
              b _c_int00
    UndefEntry
             b 未定义尝试

              b 0x2000F8 ;0x200100-0x8  for Svc

    应用 sys_intvecs.asm:

    resetEntry
              b _c_int00
    UndefEntry
             b 未定义尝试

              b vPortSWI

    4.  UART 引导加载程序和应用程序代码中需要修改哪些文件?

    请在本节中提供帮助。

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

    您好、QJ Wang

    我是否需要修改 hL_sys_intvecs.asm 文件以及如何修改、因为 UART 引导加载程序和应用程序代码都是相同的。


    .sect ".intvecs"
    ARM

    ;------------------------------------------------------------------
    ;中断例程的导入引用

    .ref _c_int00
    .ref phantomInterrupt
    .def resetEntry

    ;------------------------------------------------------------------
    ;中断向量

    resetEntry
           b _c_int00
    UndefEntry
           b 未定义尝试
    svcEntry
           b svcEntry
    PrefetchEntry
           B prefetchEntry
    DataEntry
           b DataEntry
           b 相位中断
           LDR PC、[PC、#-0x1b0]
           LDR PC、[PC、#-0x1b0]

    hL_sys_link.cmd 文件我需要在引导加载程序和应用程序代码中更改的所有内容都在 FLASH0中使用  

    hL_sys_link.cmd 文件--应用程序

    /*------------------ *
    /*用户代码开始(0)*/
    /*用户代码结束*/


    /*------------------ *
    /*链接器设置*/

    --retain="*(.intvecs)"

    /*用户代码开始(1)*/
    /*用户代码结束*/

    /*------------------ *
    /*内存映射*/

    存储器

    /*用户代码开始(2)*/
    /*用户代码结束*/
    引导程序(X):origin=0x00000000 length=0x00000020
    FLASH0 (RX):origin=0x00000020 length=0x001FFFE0
    FLASH1 (RX):origin=0x00200000 length=0x00200000
    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0007EB00

    /*用户代码开始(3)*/
    /*用户代码结束*/

    /*用户代码开始(4)*/
    /*用户代码结束*/


    /*------------------ *
    /*段配置*/

    部分

    /*用户代码开始(5)*/
    /*用户代码结束*/
    .intvecs:{}>向量
    .text align (32):{}> FLASH0 | FLASH1
    .const align (32):{}> FLASH0 | FLASH1
    .cinit align (32):{}> FLASH0| FLASH1
    .pinit align (32):{}> FLASH0 | FLASH1
    .bss:{}> RAM
    .data :{}> RAM
    .sysmem:{}>RAM

    /*用户代码开始(6)*/
    /*用户代码结束*/

    LC43xLEDBlk.map --应用程序代码

    秘书长的报告
    TI ARM 链接器 PC v20.2.2
    秘书长的报告
    >> 2021年6月15日12:27:39链接

    输出文件名:
    入口点符号:"_c_int00"地址:000045ac


    存储器配置

    名称源长度使用未使用的属性填充
    ------------ ---- ------ ---- ---- --------
    向量00000000 00000020 00000020 00000000 X
    FLASH0 00000020 001fffe0 00004e10 001fb1d0 R X
    FLASH1 00200000 00200000 00000000 00200000 R X
    堆栈08000000 00001500 00000000 00001500 RW
    RAM 08001500 0007eb00 00000000 0007eb00 RW


    段分配映射

    运行 origin load origin length init length atts members
    ------ ------ ------ ------ ---- ----
    00000000 00000000 00004870 00004870 r-x
    00000000 00000000 00000020 00000020 r-x .intvecs
    00000020 00000020 00004850 00004850 r-x .text
    00004880 00004880 000005c0 000005c0 r--
    00004880 00004880 000005c0 000005c0 r-.const

    UART 引导加载程序也是如此  

    hL_sys_link.cmd 文件--引导加载程序

    /**//
    /*------------------ *
    /*用户代码开始(0)*/
    /*用户代码结束*/


    /*------------------ *
    /*链接器设置*/

    --retain="*(.intvecs)"

    /*用户代码开始(1)*/
    /*用户代码结束*/

    /*------------------ *
    /*内存映射*/

    存储器

    /*用户代码开始(2)*/
    #if 0
    /*用户代码结束*/
    引导程序(X):origin=0x00000000 length=0x00000020
    FLASH0 (RX):origin=0x00000020 length=0x001FFFE0
    FLASH1 (RX):origin=0x00200000 length=0x00200000
    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0007eb00

    /*用户代码开始(3)*/
    #endif

    #if 1.
    引导程序(X):origin=0x00000000 length=0x00000020 fill =0xFFFF
    FLASH0 (RX):origin=0x00000020 length=0x001FFFE0 vfill = 0xffffffff
    FLASH1 (RX):origin=0x00200000 length=0x00200000 vfill = 0xffffffff
    /*银行7 (128KB、FEE)*/
    FLASH7 (R):origin=0xF0200000 length=0x00020000 vfill = 0xffffffff

    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0002EB00
    /*组0 ECC */
    ECC_VEC (R):origin=(0xf0400000 +(start (vectors)>> 3))
    length=(size (vectors)>> 3)
    ecc={algoL2R5F021、input_range=vectors}

    ECC_FLA0 (R):origin=(0xf0400000 +(开始(FLASH0)>> 3))
    length=(size (FLASH0)>> 3)
    ecc={algoL2R5F021、input_range=FLASH0}

    /*组1 ECC */
    ECC_FLA1 (R):origin=(0xf0400000 +(开始(FLASH1)>> 3))
    length=(size (FLASH1)>> 3)
    ecc={algoL2R5F021、input_range=FLASH1}

    /*组7 ECC */
    ECC_FLA7 (R):origin=0xF0100000
    length=(size (FLASH7)>> 3)
    ecc={algoL2R5F021、input_range=FLASH7}
    #endif
    /*用户代码结束*/

    /*用户代码开始(4)*/
    #if 1.
    ECC{
    algoL2R5F021:address_mask = 0xfffffff8 //地址位31:3 */
    汉明_mask = R4 /*使用掩码中的 R4/R5构建*/
    奇偶校验掩码= 0x0c //设置哪些 ECC 位是偶校验和奇校验*/
    镜像= F021 //* RM57Lx 和 TMS570LCx 在 F021中编译

    #endif
    /*用户代码结束*/


    /*------------------ *
    /*段配置*/

    部分

    /*用户代码开始(5)*/
    #if 0
    /*用户代码结束*/
    .intvecs:{}>向量
    .text align (32):{}> FLASH0 | FLASH1
    .const align (32):{}> FLASH0 | FLASH1
    .cinit align (32):{}> FLASH0| FLASH1
    .pinit align (32):{}> FLASH0 | FLASH1
    .bss:{}> RAM
    .data :{}> RAM
    .sysmem:{}>RAM

    /*用户代码开始(6)*/
    #endif

    #if 1.
    .intvecs:{} palign =8>vectors
    闪存 API:

    ..\Boot\Fapi_UserDefinedFunctions.obj (.text)
    .\Boot\BL_FLASH.obj (.text)
    --library = F021_API_CortexR4_BE_L2FMC.lib (.text)
    }palign = 8 load = FLASH0 |FLASH1、run = RAM、load_start (apiLoadStart)、run_start (apiRunStart)、size (apiLoadSize)

    .text:{} palign =8>FLASH0 |FLASH1 /*已初始化的可执行代码和常量*/
    .const:{}palign =8 load=FLASH0 |FLASH1、run = RAM、load_start (constLoadStart)、run_start (constRunStart)、size (constLoadSize)/*初始化的常量数据(例如 const flash_sects[.] =)*/
    .cinit:{} palign =8>FLASH0| FLASH1 /*表,用于显式初始化的全局和静态变量*/
    .pinit:{} palign =8>FLASH0|FLASH1 /* C++全局构造函数地址*/
    .bss:{}>RAM /*未初始化的全局和静态变量*/
    .data :{}>RAM /*显式初始化的全局和静态非常量变量。 *
    .sysmem:{}>RAM /*用于动态内存分配的内存池(heap)*/
    #endif

    /*用户代码结束*/

    /*用户代码开始(7)*/
    /*用户代码结束*/

    TMS570LC4357_UART_bootloader.map --引导加载程序

    秘书长的报告
    TI ARM 链接器 PC v20.2.2
    秘书长的报告
    >> 2021年6月15日13:11:25链接星期二

    输出文件名:
    入口点符号:"_c_int00"地址:00008abc


    存储器配置

    名称源长度使用未使用的属性填充
    ------------ ---- ------ ---- ---- --------
    向量00000000 00000020 00000020 00000000 X ffffff
    FLASH0 00000020 001fffe0 00009378 001f6c68 R X (ffFFFF)
    FLASH1 00200000 00200000 00000000 00200000 R X (FFFFFF)
    堆栈08000000 00001500 00000000 00001500 RW
    RAM 08001500 0002eb00 0000197b 0002d185 RW
    ECC_FLA7 f0100000 00004000 00000000 00004000 R
    FLASH7 f0200000 00020000 00000000 00020000 R (ffffff)
    ECC_VEC f0400000 00000004 00000000 00000004 R
    ECC_FLA0 f0400004 0003fffc 00000000 0003fffc R
    ECC_FLA1 f0440000 00040000 00000000 00040000 R


    段分配映射

    运行 origin load origin length init length atts members
    ------ ------ ------ ------ ---- ----
    00000000 00000000 00000020 00000020 r-x
    00000000 00000000 00000020 00000020 r-x .intvecs
    00001498 00001498 00007f00 00007f00 r-x
    00001498 00001498 00007ec0 00007ec0 r-x .text
    00009358 00009358 00000040 00000040 r-.cinit
    08001500 00000020 00001478 00001478 r-x
    08001500 00000020 00000ef0 00000ef0 r-x flashAPI
    080023f0 00000f10 00000588 00000588 r-.const
    08002978 08002978 00000506 00000000 Rw-
    08002978 08002978 00000439 00000000 rw-.data
    08002db4 08002db4 000000ca 00000000 rw-.bss

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

    引导加载程序和应用程序不应使用相同的链接器 cmd 文件。 VECTROS 和闪存的存储器地址中的值不同。

    引导加载程序:   

      存储器:

          引导程序(X):origin=0x00000000 length=0x00000020

          FLASH0 (RX):origin=0x00000020 length=0x001FFFE0

          FLASH1 (RX):origin=0x00200000 length=0x00200000

    应用:   

         存储器:

          引导程序(X):origin=0x00200000 length=0x00000020

          FLASH0 (RX):origin=0x00000000 length=0x00200000

          FLASH1 (RX):origin=0x00200020 length=0x001FFFE0

       地区:

         .intvecs:{}>向量
         .text align(32):{}>FLASH1  
         .const align (32):{}> FLASH1
         .cinit align (32):{}>  FLASH1
         .pinit align (32):{}>  FLASH1

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

    如果使用相同的中断矢量表(.intvecs)、则在应用程序中不发生异常(数据中止、预取等)时、该表将正常工作。 由于引导加载程序仅用于更新应用程序、 因此它非常简洁。 我假设引导加载程序没有错误。 在我的引导加载程序示例中、所有异常(UNDEF、预取、有关数据、SVC)都将路由到应用程序。  

    引导加载程序 sys_intvecs.asm:

    resetEntry
              b _c_int00

             b 0x2000FB ;UNDEF

              b 0x2000F8 ;0x200100-0x8  for Svc

              b 0x2000FB ;预取

              b 0x2000FB ;数据中止

     

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

    您好、QJ Wang、

    我在更新链接器 cmd 文件后进行了检查、然后应用程序现在可以正常工作。

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

    如果问题已解决、请单击"已解决"按钮。 谢谢

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

    是的。 我在 TMS570LC4357的 Launchpad 中没有问题、但在我们的定制 MCU 板中、在硬件复位后、应用代码无法正确引导。 仅在定制 MCU  板中是什么原因。  

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

    您好、QJ Wang

    如何使用引导加载程序和应用程序的堆栈和 RAM 存储器分配  

    引导加载程序

    应用  

    请确认堆栈、RAM 和 ECC。

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

    对于简单的应用示例(LED 闪烁)、0x1500的堆栈大小应该合适。 "应用程序代码无法正确引导"是什么意思? 执行是否跳转到应用程序代码? 程序(引导加载程序和应用程序)是否与 TI Launchpad 上使用的程序完全相同? ESM 状态寄存器中是否设置了任何错误标志?  

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

    您好、QJ Wang、

    在 Launchpad 中、执行从引导加载程序跳转到应用程序(LED Blinky) 是完美的、但在我们的定制板中 、当我们复位调试模式后连接时、应用程序(LED Blinky)工作、则应用程序 LED Blinky 不工作。  

    如何检查 ESM 状态寄存器?  

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

    @QJwang -我可以让 UART 引导加载程序运行、我可以上载应用程序、但运行应用程序的选项会挂起。  

    我自己上传了 blinky 样本(FreeRTOS 或 RTI 版本)、两者都正常工作。 但是,通过引导加载程序上载并通过菜单(选项3)执行它--它会挂起。

    我有一个较旧的(不正确?) 具有不同地址的引导加载程序版本。

    APP_START_ADDRESS    0x00010020
    APP_STATUS_ADDRESS    0x00010000

    此论坛帖子的版本:

    APP_START_ADDRESS 0x00200020
    APP_STATUS_ADDRESS 0x00200000

    Hercules HDK PDF (spnu597A 页7)的存储器映射中的任何一个都不显示相同的地址。

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

    应用程序可以加载到闪存的任何扇区。 0x10000是组0的扇区4的起始地址、0x200000是组1的扇区0的起始地址。  

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

    我添加了命令行 post-build 来构建.bin 文件,上载了它--仍然无法启动。

    应用程序中的哪些更改(如果有)需要与引导加载程序兼容?

    注意:我使用了您在此主题中发布的引导加载程序、进行了1次更改- UART 设置为 SCI3 -使用 SCI3是否存在任何问题? 菜单出现、我可以上传、除了运行应用程序之外、一切都正常。

    附加引导加载程序和应用程序项目。   e2e.ti.com/.../BootloaderProjects.zip

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

     如何设置 TMS570LC43x_rtiBlinky_BL_APP200020项目的链接文件?

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

    我发布的应用示例应编程为0x20020。 这是链接器文件。 我将为您发布整个项目。

    e2e.ti.com/.../5086.HL_5F00_sys_5F00_link.cmd

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

    e2e.ti.com/.../TMS570LC43x_5F00_rtiBlinky_5F00_BL_5F00_APP20020.zip