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.

[参考译文] TMS570LS0914:CAN 引导加载程序问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1159837/tms570ls0914-can-bootloader-issue

器件型号:TMS570LS0914
主题中讨论的其他部件:TMS570LS0714HALCOGEN

大家好、我正在尝试为该微控制器编译 CAN 引导加载程序。 基本上、我在这个论坛上看到有人希望使用为 TMS570LS0714提供的示例、但是实际上、除了我能够在器件上编译和闪存它之外、我似乎无法使 CAN 通信正常工作。

基本上、每当我尝试发送"下载命令"消息时、CAN 缓冲器都会显示"0x88、0x88、0x88、0x88、0x88、0x88、0x88、因此 g_ulTransferAddress 和 g_ulTransferSize 都是0x88888888888888888888888888。

我不确定我缺少什么、我尝试了 RM46 Launchpad、该示例工作正常。 我还为 TMS570LS0914定义了扇区、因此基本上我不确定我缺少的是什么。

有人有专门针对此微控制器的示例吗? 我缺少什么吗? 这一点有点令人沮丧、因为该器件的启动器存在文档、实际上没有 TI 提供的源代码。。。。

  这是 bl_link.cmd 文件

 这是我从 PCAN Explorer 发送该数据时得到的结果  

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

    您好!

    请从此处下载适用于 LS0714的 CAN 引导加载程序:

    https://git.ti.com/cgit/hercules_examples/hercules_examples/tree/Bootloaders/SafetyMCU_Bootloaders

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

    我已经使用了这个。 但是、我不清楚哪些文件需要更改才能与 TMS570LS0914配合使用。 如果我在项目中更改目标并上传、我将无法正确接收来自 CANbus 的数据。 当我发送消息0x5A1时、它卡在一些函数中、最后是"get_address_size" case、并停止工作。

    我注意到的一点是、在为 TMS570LS0714提供的示例中、示例中的 sys_clock_freq 为180。 应该是80?  

    谢谢

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

    您能否检查 flash_defines.h 和 bl_link.cmd 文件是否正确? 因为论坛中实际上没有关于此内容的信息... 在这里

    bl_link.cmd

    这就是我在您的 git 上提供的示例中提到的有关 sys_clock_freq 的内容

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

    TMS570LS0914支持两种封装:144引脚 PGE 和100引脚 PZ 封装。

    144引脚:最大 CPU 速度为160MHz

    100引脚:最大 CPU 速度为100MHz

    repo 中的引导加载程序示例已经过测试。 但该示例仅适用于144引脚 PGE 封装。

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

    大家好、我的封装是144 PGE;但是、我测试了您的示例、但它不起作用...

    我缺少的要点包括:

    1)我的问题不是最大频率、因为我知道144 PGE 914的频率为160MHz;正如我提到的、提供的示例将180MHz 报告为 sys_clock_frequency;这一点我没有更改、这就是您提到的示例。 我想理解的是、它是否是错误。

    2)我上传了示例。 我正在尝试在0x5A1上发送"下载消息"、 但微控制器在 case 语句中被存根。 很难理解在哪里、因此出于这个原因、我想确保 flash_defines.h 文件和 bl_link.cmd 都是正确的。 请检查一下它们吗? 这意味着很多;或者如果他们需要保持与示例相同。 据我所知、914应该再增加2个扇区? 因此、我需要正确地添加它们吗?  

    3)我一直跟踪到的主要问题是、当我发送具有地址和图像大小(0x00010020和71200)的消息时、 g_ulTransferAddress 和  g_ulTransferSize 都是0x88888、而不是正确的值。 如果修改 CAN 读取、我可以获得正确的值、但只能更改此参数  

    静态常量 uint32_t g_ulCanByteOreder[]={3U、2U、1U、0U、7U、 6U、5U、4U};  

    更改为  

    静态 uint32_t g_ulCanByteOrder[8]={3、2、1、0、7、 6、5、4};  

    我不是很清楚;

    4) 4)您提到了该示例适用于144引脚 PGE 并经过测试的事实;但您的示例中的 sys_clock_freq 为180... 在 HALCogen 中、设置显示80MHz。 也许我缺少一些东西,但它应该如何开箱即用?  

    我知道远程调试问题不是很容易、但此引导加载程序是我们使用此微控制器进行开发的重要一步、因此我想使其正常工作。  

    提前感谢 QJ。

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

    您好!

    HALCoGen 生成的代码为:

      静态常量 uint32 s_canByteOrder[8U]={3U、2U、1U、0U、7U、 6U、5U、4U};

    在我的引导加载程序示例中、const 被复制到 SRAM。 您可以像以下那样修改链接器 cmd 文件:

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

    --retain="*(.intvecs)"

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

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

    存储器

    引导程序(X):origin=0x00000000 length=0x00000020 vfill =0xFFFF
    FLASH0 (RX):origin=0x00000020 length=0x000BFFE0 vfill = 0xffffffff
    SRAM (RW):origin=0x08002000 length=0x0001EB00
    栈(RW):origin=0x08000000 length=0x00001500
    /*用户代码开始(2)*/
    #if 1.
    ECC_VEC (R):origin=(0xf0400000 +(start (vectors)>> 3))
    length=(size (vectors)>> 3)
    ecc={algoL2R4F021、input_range=vectors}

    ECC_FLA0 (R):origin=(0xf0400000 +(开始(FLASH0)>> 3))
    length=(size (FLASH0)>> 3)
    ecc={algoL2R4F021、input_range=FLASH0}
    #endif
    /*用户代码结束*/

    /*用户代码开始(3)*/
    ECC

    algoL2R4F021:address_mask = 0xfffffff8 //地址位31:3 */
    汉明_mask = R4 /*使用掩码中的 R4/R5构建*/
    奇偶校验掩码= 0x0c //设置哪些 ECC 位是偶校验和奇校验*/
    镜像= F021 //* RM57Lx 和 TMS570LCx 在 F021中编译

    /*用户代码结束*/

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


    部分

    .intvecs:{}>向量

    闪存 API:

    .\source\fapi_UserDefinedFuncations.obj (.text、.data)
    .\source\BL_flash.obj (.text、.data)
    --library="c:\ti\hercules\F021闪存 API\02.01.01\F021_API_CortexR4_be.lib"(.text、.data)
    }palign = 8 load = FLASH0、run = SRAM、load_start (apiLoadStart)、run_start (apiRunStart)、size (apiLoadSize)

    .text:{} palign =8>FLASH0
    .const:{}palign =8 > FLASH0 //load=FLASH0、run = SRAM、load_start (constLoadStart)、run_start (constRunStart)、size (constLoadSize)
    .cinit:{}> FLASH0
    .pinit:{}> FLASH0
    .data :{}> SRAM
    .bss:{}> SRAM
    .sysmem:{}>SRAM

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

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

    无需在 main()中将"const"从闪存复制到 SRAM。

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

    如果您使用我在上一条消息中提到的修改后的链接器 cmd、应该删除 FLASH_Sector 的 const:

    #IF 定义(TMS570LS07)||定义(RM44)
    #define NUMBEROFSECTORS 12.
    CONST  扇区 FLASH_SECTOR[NUMBEROFSECTORS]=

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

    您好!  

    我刚尝试过、但遇到 compi.ing 错误:

    构建目标:"ls07_CAN_boot.out"
    调用:ARM 链接器
    "d:/Programmi/ti/ccs1100/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/bin/armcl -mv7R4 --code_state=32 --float_support=VFPv3D16 -g --diag_warning=225 --diag_wrap=off --display_error_number --heap_type=packed --abi=eabi -z -m"ls07_CAN_boot.map"---display_error-xml-display_ram_zh-linkg-line-ram_zh-linkg-ram_zh-line-ram_zh-linkg-out-line-ram_linkg-out-line-ram_linkg-line-ram_zh-line-ram_zh-linkg-line-ram_zh-out-link_linkg-line_display_line-ram_zh-out-line-ram_zh-out-linkg-line-ram_line-ram_line-ram_/Programmi/ti/ccs1100/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/include /Programmi/ti/ccs1100/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/lib be32 -o "ls07_CAN_boot.out""./TMS570LS07x/source/CAN.obj ""./TMS570LS07x/source/tms570LS07x/sources/ssnLS021_45.obj "./TMS570LS07x/source/tms570LS07x/source/tms./rts."/sources/tms570LS07x/s/smobj "/sr./tms570LS07x/source/tms./tms570LS07x.com/mobj "/sr./tms570LS07x/sources/rts./tms570LS07x/sources/ds.com/tms570LS07x/mobj /ti/Hercules/F021 /Users/persico_a/Desktop/hercules_examples/Bootloaders/SafetyMCU_Bootloaders/TMS570LS07x/bl_link.cmd /source/ymodem_crc16.obj /source/sw_hw_ver.obj /source/sci_common.obj /source/bl_ymodem.obj /source/bl_uart.obj /source/bl_spi_packet.obj /source/bl_spi.obj /source/bl_main.obj /source/bl_led_demo.obj /source/bl_flash.obj /source/bl_dcan.obj /source/bl_copySections2SRAM.obj /source/bl_check.obj /source/Fapi_UserDefinedFunctions.obj


    未定义的首次引用
    符号
    ------ --------
    constLoadSize ./source/bl_main.obj
    constLoadStart ./source/bl_main.obj
    constRunStart ./source/bl_main.obj

    错误#10234-D:未解析的符号仍然存在
    错误#10010:链接期间遇到错误;未构建"ls07_CAN_boot.out"

    >>编译失败
    Makefile:181:目标'ls07_CAN_boot.out'的配方失败
    gmake.1]:***[ls07_CAN_boot.out]错误1.
    Makefile:177:目标“全部”的配方失败
    gmake:***[全部]错误2.

    ****构建完成****

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

    好的、所以我尝试通过注释 memcpy (&constRunStart、&constLoadStart、(uint32)&constLoadSize);并且它已编译。

    我已刷写该代码、但错误仍然存在:当我发送命令5A1 (get_address_size)时、微控制器卡在 case 中;我不知道在哪里、我正在尝试弄清。 我没有收到任何 ACK 消息、如果我 ping 器件、则不会返回。 您是否知道是否还有其他变化? SYS_CLOCK_FREQ?  

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

    对于 CAN 通信、网络上的所有节点应具有相同的波特率。 否则、接收器不会 ACK 消息。   

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

    您好!

    但通信工作正常。 我可以 Ping 并让应答返回。 命令正常工作、但当我开始发送下载命令(image address + image_size)时、它会正确接收这两个信息、但会卡在闪存地址和大小 ora fapi 擦除检查中。

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

    我可以确认两个节点均已正确设置。 波特率500kbits. 看起来更像是代码上的问题。 闪存定义为914 PGE,应该有12个或14个扇区? 可能是这样吗?

    提前感谢  

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

    您是不是说您获得了正确 的 g_ulTransferAddress 和 g_ulTransferSize?  

    您的代码卡在 BLInternalFlashStartAddrCheck()函数中吗?

    您能否进入函数并找出根本原因?

    uint32_t
    BLInternalFlashStartAddrCheck (uint32_t ulAddr、uint32_t ulImgSize)

    uint32_t count=0、i;

    uint32_t ulWholeFlashSize;

    //
    //确定使用的部件上可用的闪存大小。
    //
    ulWholeFlashSize =(uint32_t) flash_sector[NUMBEROFSECTORS-1].start + flash_sector[NUMBEROFSECTORS-1].length;

    /*起始地址必须位于扇区的起始位置*/
    对于(i = 0;i < NUMBEROFSECTORS;i++){
    if ((ulAddr >=(uint32_t)(flash_sector[i].start))&(ulAddr <((uint32_t) flash_sector[i].start + flash_sector[i].length))))

    count++;


    如果(count ==0){
    返回(0);

    //
    //我们传递的地址是否是有效的起始地址? 我们允许:
    //
    // 1. 地址0 (如果配置为更新引导加载程序)。
    // 2. 如果参数空间被保留(至)、则保留块的开头
    //允许下载参数块内容)。
    // 3. BL_CONFIG.h 中指定的应用程序起始地址
    //
    //如果地址不是这些地址之一,则该功能会失败,如果是映像
    //大小大于可用空间,或者地址不是字
    //对齐。
    //
    if (
    #ifdef enable_BL_update
    (ulAddr!= 0)&&
    #endif
    (ulAddr!= APP_START_ADDRESS))||
    (((ulAddr + ulImgSize)> ulWholeFlashSize)||
    ((ulAddr & 3)!= 0))

    返回(0);

    否则{
    退货(1);

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

    您好!

    我没有太多时间深入研究它、但如果我评论一下函数、它就会卡在 fapi_block_erase 函数中。 我看到其他人已经有这个问题、但他们都没有发布任何结果。 在我看来、flash_defines.h 的设置方式或 BL_link.cmd 不起作用。 我之所以这样说、只是因为我在我的软件应用程序中使用 TI_FEE 驱动程序、并且在开始使用引导加载程序之前没有任何问题。  

    您能否检查我在一些以前的消息中发布的 flash_defines.h 是否正确? 如果不是、您能指出我的错误吗? 事实是、每个人都说914中的示例很简单、但实际上不是:

    需要更改-flash defnes

    -系统时钟频率与示例不符(HALCogen 为180Hz 和100Hz,在任何情况下180Hz 都高于该微系统允许的频率)

    - bl_link.cmd 需要一些修改。

    我知道您可能是本主题的专家、因为我已经看到您在 git 和其他线程中的贡献、您能否为我提供一个有效的引导加载程序示例/或向我指出需要更改哪些内容才能与 TMS570LS0914PGE 配合使用?

    提前感谢!

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

    我会的

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

    您好、QJ Wang、

    非常感谢、非常感谢。 等了、提前感谢!  

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

    我今天运行的是 LS0714引导加载程序、运行正常。  

    [引用 userid="505131" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1159837/tms570ls0914-can-bootloader-issue/4371361 #4371361"]它正确接收了两个信息,但却停留在检查闪存地址和大小的 ora fapi 擦除的内部。

    BLInternalFlashStartAddrCheck (g_ulTransferAddress、 g_ulTransferSize)

    映像大小大于应用映像的闪存空间大小。 或者您获得了错误的地址或图像大小。

    [引用 userid="505131 "URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1159837/tms570ls0914-can-bootloader-issue/4381519 #4381519"]类似地,如果我注释该函数,它会卡在 fapi_block_erase 函数中。

    Fapi_BlockErase (uint32_t ulAddr、uint32_t size)

    请仔细检查 ulAddr 和大小、以确保其 处于有效范围内。 LS0914只有一个闪存组。 您需要从 SRAM 执行代码。 请检查 BL_FLASH*和闪存 API 是否复制到 SRAM。

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

    在回答的第一部分,我可以说 bin 文件是71KB 文件,所以可能你是对的,914是64 KB 还是68KB?  

    第二个答案是、我如何检查它?  

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

    LS0914的闪存大小为1024KB。

    您可以在 BL_dCAN.c 中的以下指令中添加断点以检查地址和大小:

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

    不,这就是我已经做的,我是说我如何对该函数进行步进? 我可以确认已正确接收到地址大小和地址。 您是否使用 LS0914运行了代码以确保其正常工作?  您是否使用了修改后的 bl_link.cmd?  

    然后是另外两个问题:要使用修改后的 cmd 链接,我必须注释此行  memcpy (&constRunStart、&constLoadStart、(UINT32)&constLoadSize);这是否正常? 如果不是,我需要做什么?

    最后,如何检查 BL_FLASH*和闪存 API 是否复制到 SRAM? 谢谢

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

    因此、更新:

    为了克服 blInternalFlashStartAddressCheck、我必须按如下所示修改 BL_link.cmd:

    部分

    .intvecs:{}>向量

    闪存 API:

    .\source\fapi_UserDefinedFuncations.obj (.text、.data)
    .\source\bl_flash.obj (.data)
    --library="c:\ti\hercules\F021闪存 API\02.01.01\F021_API_CortexR4_be.lib"(.text、.data)
    }palign = 8 load = FLASH0、run = SRAM、load_start (apiLoadStart)、run_start (apiRunStart)、size (apiLoadSize)

    .text:{} palign =8>FLASH0
    .const:{}palign =8 > FLASH0 //load=FLASH0、run = SRAM、load_start (constLoadStart)、run_start (constRunStart)、size (constLoadSize)
    .cinit:{}> FLASH0
    .pinit:{}> FLASH0
    .data :{}> SRAM
    .bss:{}> SRAM
    .sysmem:{}>SRAM

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

    我必须在中重新包含 const  

    #IF 定义(TMS570LS07)||定义(RM44)
    #define NUMBEROFSECTORS 12.
    CONST  扇区 FLASH_SECTOR[NUMBEROFSECTORS]=

    但我现在还是卡在“FapiblockErase”中。 SYS_CLOCK_FREQ、如示例所示

    我错过了什么吗?

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

    我向下跟踪、代码似乎卡在里面  

     if (((fapi_initiatalizeFlashBanks ((uint32_t) SYS_CLK_FREQ))= fapi_Status_Success){

    我是否必须更改 sys_clock? 有何价值? 我已经尝试了100、160和80  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="505131 "URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1159837/tms570ls0914-can-bootloader-issue/4386829 #4386829">我是否必须更改 sys_clock? 该值?[/报价]

    它取决于您的配置中的系统时钟(HCLK)。  

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

    何 QJ Wang、

    昨天我对 BL_link.cmd 进行了一些修改测试、如果我删除红色的行、则 fapi 块擦除有效、但此时 FLASH_Sectors 结构未使用 FLASH_defines 中定义的正确信息进行设置、我可以看到该结构内的每个值为0xFFFFFFF。 这会导致软件在发送地址和 image_size 时使用 cmd_FAIL 回复我、因为它无法正确检查闪存扇区。

    您能否指出为什么需要 const (以及在哪里)? 这似乎是导致问题的原因

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

    您好 QJ、

    现在这就是我在 TMS570LS0914 PGE 上未能成功完成的测试:

    按此方式修改 BL_LINK_cmd

    //版权所有(C) 2013-2019 Texas Instruments Incorporated - http://www.ti.com/
    *
    *
    *以源代码和二进制形式重新分发和使用、有无
    *如果满足以下条件、则允许进行修改
    符合*:
    *
    *源代码的重新分发必须保留上述版权
    *注意、此条件列表和以下免责声明。
    *
    *二进制形式的再发行必须复制上述版权
    *请注意、中的此条件列表和以下免责声明
    *随提供的文档和/或其他材料
    *分发。
    *
    *德州仪器公司的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经特定的事先书面许可。
    *
    *本软件由版权所有者和贡献者提供
    *"按原样"以及任何明示或暗示的保证、包括但不包括
    *仅限于对适销性和适用性的暗示保证
    *一项特定目的不予承认。 在任何情况下、版权均不得
    *所有者或贡献者应对任何直接、间接、偶然或
    *特殊、惩戒性或后果性损害(包括但不包括)
    *仅限于采购替代货物或服务;丧失使用、
    *数据或利润;或业务中断)
    *责任理论、无论是合同责任、严格责任还是侵权行为
    *(包括疏忽或其他)因使用而以任何方式产生
    *、即使被告知可能会发生此类损坏。
    *

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


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

    --retain="*(.intvecs)"

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

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

    存储器

    引导程序(X):origin=0x00000000 length=0x00000020 vfill =0xFFFF
    FLASH0 (RX):origin=0x00000020 length=0x000BFFE0 vfill = 0xffffffff
    SRAM (RW):origin=0x08002000 length=0x0001EB00
    栈(RW):origin=0x08000000 length=0x00001500
    /*用户代码开始(2)*/
    #if 1.
    ECC_VEC (R):origin=(0xf0400000 +(start (vectors)>> 3))
    length=(size (vectors)>> 3)
    ecc={algoL2R4F021、input_range=vectors}

    ECC_FLA0 (R):origin=(0xf0400000 +(开始(FLASH0)>> 3))
    length=(size (FLASH0)>> 3)
    ecc={algoL2R4F021、input_range=FLASH0}
    #endif
    /*用户代码结束*/

    /*用户代码开始(3)*/
    ECC

    algoL2R4F021:address_mask = 0xfffffff8 //地址位31:3 */
    汉明_mask = R4 /*使用掩码中的 R4/R5构建*/
    奇偶校验掩码= 0x0c //设置哪些 ECC 位是偶校验和奇校验*/
    镜像= F021 //* RM57Lx 和 TMS570LCx 在 F021中编译

    /*用户代码结束*/

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


    部分

    .intvecs:{}>向量

    闪存 API:

    .\source\fapi_UserDefinedFuncations.obj (.text、.data)
    .\source\bl_flash.obj (.data)
    --library="c:\ti\hercules\F021闪存 API\02.01.01\F021_API_CortexR4_be.lib"(.text、.data)
    }palign = 8 load = FLASH0、run = SRAM、load_start (apiLoadStart)、run_start (apiRunStart)、size (apiLoadSize)

    .text:{} palign =8>FLASH0
    .const:{}palign =8 > FLASH0 //load=FLASH0、run = SRAM、load_start (constLoadStart)、run_start (constRunStart)、size (constLoadSize)
    .cinit:{}> FLASH0
    .pinit:{}> FLASH0
    .data :{}> SRAM
    .bss:{}> SRAM
    .sysmem:{}>SRAM

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

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

    这允许我单步解出 FapiEraseFunction、因为它滞留在 fapi_init 上、所以似乎不会执行该函数

    -重新构建 HALCogen 中针对 tms570ls0914特定的所有配置

    -单步执行固件  

    -修复示例中 SYS_CLOCK_FREQ 的错误值。

    您告诉我您测试了该示例、您能否确认您在哪种情况下测试了该示例? TMS570LS09或07? 因为如果是07、我会说这并不明显、它将在09上工作。

    无论如何,我还是很难理解,因为我不明白为什么它不起作用,但你要继续说它是“开箱即用”的。 请问您是否可以检查我在此处发布的 BL_link.cmd?  

    是否可以为09创建特定示例? 我知道这些微控制器是类似的、但我和其他用户一样、要让它正常工作是一件很麻烦的事、因为它是一个工作项目、所以基本上我不知道为什么没有对该微控制器的特定支持。 总之、您能否检查并回答我提到的问题? 如果您有适合此微控制器的东西、是否可以与我分享? 这对我来说是一个很好的起点。

    提前感谢

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

    您好!

    您错过了.\source\BL_flash.obj 中的.text、因此.text 不会复制到 SRAM。  

    [报价 userid="505131”URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1159837/tms570ls0914-can-bootloader-issue/4387037 #4387037"]是否可以为09创建特定示例?

    我可以、但我没有要测试的 LS09x 板。  

    我将在今晚创建一个、您必须在自己的电路板上进行测试。

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

    您好 QJ、  

    我知道、但是如果我同时写入.text、它不会在 SRAM 上加载 BL_FLASH、当它跳转到 blAddressCheck 时、软件会卡住。

    如果你能做到完美,我今晚可以在我自己的板上测试!

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="505131 "URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1159837/tms570ls0914-can-bootloader-issue/4388404 #4388404"]但如果我同时编写.text,它不会在 SRAM上加载 BL_FLASH

    不正确。 应复制代码。

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

    Uhm、我只是不知道实际上、我做了一些测试、发现 BL_link.cmd 不能正常工作...

    无论如何、如果您可以为 LS0914PGE 准备一个特定的示例、我可以随时对其进行测试。

    同时,只需确保:FLASH_defines 需要使用两个额外的扇区从714扩展到914? 因为示例报告了12个扇区、但我已经看到需要14个扇区。

    非常感谢您的帮助!

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

    请尝试以下操作:

    e2e.ti.com/.../TMS570LS0914PGE_5F00_CAN_5F00_Bootloader.zip

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

    非常感谢!  
    我将在一个小时内试用,并向您提供反馈!  

    非常感谢!  

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

    我希望这对您有所帮助、 但如果您需要其他信息或有任何其他问题、请告诉我。

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

    您好 QJ、

    昨天晚上、我尝试了您的示例、我能够使其正常工作、下载应用程序映像并将其写入闪存。 但是、该应用程序无法正常工作、但我怀疑是如何编译的、因此不是引导加载程序代码上的错误、因此感谢您!

    深入了解我发现在"flash_definations.h"文件中、扇区如下所示:

    您能否确认这只是一个拒绝、我需要相应地设置12、13?

    第二个问题(但我不知道我是否必须打开另一个线程、因为它用于应用程序映像):

    -如果在我的应用程序代码中,CAN 被配置为1Mbit 并且使用了中断(RTI、CAN、GIO),是否还需要在引导加载程序中进行同样的配置? 或者、它们是否在跳转到应用程序代码时进行了配置?

    -在 sys_link.cmd 中偏移内存后编译应用程序代码时、它抛出以下错误:

    sys_link.cmd 如下所示:

    /*------------------ *
    /* sys_link.cmd */
    /**//
    /*
    *版权所有(C) 2009-2018 Texas Instruments Incorporated - www.ti.com
    *
    *
    *以源代码和二进制形式重新分发和使用、有无
    *如果满足以下条件、则允许进行修改
    符合*:
    *
    *源代码的重新分发必须保留上述版权
    *注意、此条件列表和以下免责声明。
    *
    *二进制形式的再发行必须复制上述版权
    *请注意、中的此条件列表和以下免责声明
    *随提供的文档和/或其他材料
    *分发。
    *
    *德州仪器公司的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经特定的事先书面许可。
    *
    *本软件由版权所有者和贡献者提供
    *"按原样"以及任何明示或暗示的保证、包括但不包括
    *仅限于对适销性和适用性的暗示保证
    *一项特定目的不予承认。 在任何情况下、版权均不得
    *所有者或贡献者应对任何直接、间接、偶然或
    *特殊、惩戒性或后果性损害(包括但不包括)
    *仅限于采购替代货物或服务;丧失使用、
    *数据或利润;或业务中断)
    *责任理论、无论是合同责任、严格责任还是侵权行为
    *(包括疏忽或其他)因使用而以任何方式产生
    *、即使被告知可能会发生此类损坏。
    *
    *

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


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

    --retain="*(.intvecs)"

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

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

    存储器

    引导程序(X):origin=0x00010020 length=0x00000020
    FLASH0 (RX):origin=0x00010040 length=0x000BFFE0
    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0001EB00

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

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

    #if 0
    /*用户代码结束*/

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

    部分

    .intvecs:{}>向量
    .text:{}> FLASH0
    .const:{}>FLASH0
    .cinit:{}> FLASH0
    .pinit:{}> FLASH0
    .bss:{}> RAM
    .data :{}> RAM
    .sysmem:{}>RAM

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

    /*用户代码开始(5)*/
    #endif
    /*用户代码结束*/


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

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

    您能否确认在构建应用程序时只需更改向量和 FLASH0的地址? 谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="505131 "URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1159837/tms570ls0914-can-bootloader-issue/4389119 #4389119"]我能够使其正常工作、下载应用程序映像并将其写入闪存。 [/报价]

    很高兴知道引导加载程序在您的电路板上工作。

    [引用 userid="505131 "URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1159837/tms570ls0914-can-bootloader-issue/4389119 #4389119"]您能否确认它只是一个拒绝,我需要相应地设置12、13?

    是的、我复制/过去、更改了扇区12/13的起始地址、但忘记更改扇区编号。  

    [引用 userid="505131 "URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1159837/tms570ls0914-can-bootloader-issue/4389119 #4389119"]-如果在我的应用程序代码中将 CAN 配置为1Mbit 并使用中断(RTI、CAN、GIO)、是否还需要在引导加载程序中进行相同的配置? 或者、它们是否在跳转到应用程序代码时进行了配置?

    您不需要在引导加载程序中进行相同的配置。 当 IRQ 或 FIQ 中断发生时、它将跳转至引导加载程序或应用程序中的实际中断服务例程。 如果您的应用程序中有一个 CAN RX 中断、代码执行将跳转到您的应用程序的 CAN 中断处理程序。

    [引用 userid="505131 "URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1159837/tms570ls0914-can-bootloader-issue/4389119 #4389119"]在将 sys_link.cmd 中的内存偏移后编译应用程序代码时,它抛出以下错误:

    在我的 CAN bootloader 示例中,使用了 bl_link.cmd,因此我添加了#if 0... HAL 生成的 linker.cmd 中的#endif。 请删除 linker.cmd 中的#if 0和#endif

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

    非常感谢你们的帮助!

    这是我为简单应用程序创建的链接器文件、用于检查功能。

    /*------------------ *
    /* sys_link.cmd */
    /**//
    /*
    *版权所有(C) 2009-2018 Texas Instruments Incorporated - www.ti.com
    *
    *
    *以源代码和二进制形式重新分发和使用、有无
    *如果满足以下条件、则允许进行修改
    符合*:
    *
    *源代码的重新分发必须保留上述版权
    *注意、此条件列表和以下免责声明。
    *
    *二进制形式的再发行必须复制上述版权
    *请注意、中的此条件列表和以下免责声明
    *随提供的文档和/或其他材料
    *分发。
    *
    *德州仪器公司的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经特定的事先书面许可。
    *
    *本软件由版权所有者和贡献者提供
    *"按原样"以及任何明示或暗示的保证、包括但不包括
    *仅限于对适销性和适用性的暗示保证
    *一项特定目的不予承认。 在任何情况下、版权均不得
    *所有者或贡献者应对任何直接、间接、偶然或
    *特殊、惩戒性或后果性损害(包括但不包括)
    *仅限于采购替代货物或服务;丧失使用、
    *数据或利润;或业务中断)
    *责任理论、无论是合同责任、严格责任还是侵权行为
    *(包括疏忽或其他)因使用而以任何方式产生
    *、即使被告知可能会发生此类损坏。
    *
    *

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


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

    --retain="*(.intvecs)"

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

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

    存储器

    引导程序(X):origin=0x00010020 length=0x00000020
    FLASH0 (RX):origin=0x00010040 length=0x000FFFE0
    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0001EB00

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

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

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

    部分

    .intvecs:{}>向量
    .text:{}> FLASH0
    .const:{}>FLASH0
    .cinit:{}> FLASH0
    .pinit:{}> FLASH0
    .bss:{}> RAM
    .data :{}> RAM
    .sysmem:{}>RAM

    fee_text_section:{}> FLASH0
    fee_const_section:{}> FLASH0
    fee_data_section:{}> RAM

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

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


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

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

    这个应该是好的吗?  

    谢谢!