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.

[参考译文] TMS570LS1227:引导加载程序至应用程序跳转

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1108857/tms570ls1227-bootloader-to-application-jump

器件型号:TMS570LS1227

尊敬的 TI 团队:

我正在开发 TMS750Ls1227器件型号的引导加载程序设计。 引导加载程序在存储器中刷写应用程序十六进制文件后、跳转至应用程序完成。 但应用程序执行不正确。

在前面有关论坛的文章中、我们发现在 cmd 文件和 intvec.asm 文件中需要进行一些更改。 但是,在考虑到这些准则之后,同样的问题仍然存在。

为引导加载程序和应用程序编写 cmd 和 intvec.asm 文件的正确方法是什么? 或任何其他更改?

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

    Vijay、

    TI 引导加载程序示例仅支持二进制格式的应用程序。 您可以使用 CCS 生成二进制文件:

    编译后处理步骤

    "${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin""${BuildArtiftFileName}""${BuildArtifactFileBaseName}.bin""${CG_TOOL_ROOT}/bin/armutilfd""${CG_TOOL_TOOL_ROOT}/mk4in/hex"CCS root"  

    引导加载程序示例不支持其他二进制格式或十六进制格式。

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

    您好 QJ、

    很抱歉我迟到了。

    我已经设计了自己的引导加载程序、但我不使用 TI 引导加载程序示例。

    只需要二进制文件。 无法使用十六进制文件?

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

    您好、Vijay、

    是的、您可以开发自己的引导加载程序以下载十六进制格式文件。  

    如果应用程序编程到从0x10000开始的闪存中、链接器 cmd 脚本中的向量来源也应为0x10000、而链接器 CMD 中的 FLASH0的来源变为0x10020。

    引导加载程序中分支指令的目标地址应为0x10000。 例如:

    ((void (*)(void)) 0x10000)();

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

    您好 QJ

    根据您的建议、

    我的引导加载程序 cmd 文件  

    应用程序 cmd 文件  

    使用引导加载程序固件成功刷写应用程序的十六进制文件。

    ((((void (*.)(void)0x20000 )()不起作用。 它不会跳转到应用程序20000地址  

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

    也不是 (void (*)(void)) 0x20000)()  

    我尝试了  

    asm (" mov r14、#0x20000 ");
    asm (" bx r14");

    使用此选项会跳转至20000个位置,但失败..... 可能是 UNDEF 进入

    共享 TI 引导加载程序示例的链接

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

    抱歉、我在上一条消息中遗漏了一个左括号。 它应该是:

     ((void (*)(void)) 0x20000)();

    [~ userid="518552" URL"/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1108857/tms570ls1227-bootloader-to-application-jump /4115053#4115053">但失败了..... 可能是 UNDEF 条目[/报价]

    1.请仔细检查0x20000是否已正确编程。 它应该看起来像:0xEA...

    2.当您将应用程序编程到闪存时、ECC 是否已计算和编程?  

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

    您能详细说明 ECC 吗? 如何完成?

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

    请提供有关 CAN 的 TI 引导加载程序示例的链接...

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

    使用跳转后、位置0x20000的调试捕捉  

    asm (" mov r14、#0x20000 ");
    asm (" bx r14");

    汇编指令

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

    您好、QJ Wang、

    有更新吗?

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

    您好 QJ、  

    我正在重新编辑用于 Hercules Microcontrollers.pdf 的 pdf CAN 总线引导加载程序

    根据、我对 cmd 文件中的引导加载程序和应用程序进行了如下更改  

    从引导加载程序跳转到应用程序后, 它将转至0x0c 地址,即预取项

    请查看 cmd 链接器文件 e2e.ti.com/.../sys_5F00_link_5F00_app.txte2e.ti.com/.../sys_5F00_link_5F00_boot.txt

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

    您好、Vijay、

    该应用程序由引导加载程序加载、并使用 F021闪存 API 编程到闪存中。 使用 F021闪存 API 生成应用代码的 ECC。 请勿使用链接器脚本为应用固件生成 ECC。

    fapi_issueProgrammingCommand ((uint32_t *) dst、
                                (uint8_t *) src、
                                (uint32_t)字节、
                                 0、
                                 0、
                                Fapi_AutoEccGeneration);