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.

[参考译文] 编译器/CC1310:链接TI-RTOS-Project与(自有) OTA Bootloader一起使用

Guru**** 2611705 points
Other Parts Discussed in Thread: CC1310

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/642875/compiler-cc1310-link-ti-rtos-project-for-use-with-own-ota-bootloader

部件号:CC1310

工具/软件:TI C/C++编译器

大家好!

我已经为OTA使用编写了一个小型引导加载程序(<8k代码) ,可以选择从串行闪存更新CPU。
(我使用专有无线电协议,串行闪存可以由多个不同的源写入)

但是,如果我将(用户程序)“CC1310_LAUNCHXL_TIRTOS.cmd”修改为从0x2000开始,
我收到一些TI-RTOS部件的链接器错误。
似乎有第二个地方,我必须修改Flash-Layout?
在哪里可以找到此信息?
感谢您的帮助!

来自德国的问候,Jo

(用户程序)“CC1310_LAUNCHXL_TIRTOS.cmd”:
----------------------------------
....
//#define flash_base             0x0      /* original */
//#define flash_size             0x2万   /* original */

#define flash_base             0x2000 /*主应用程序的启动时间为8k*/
#define flash_size             0x1E000 /* 8k Missing at top */
...

错误(CCS中):
--------
.....
链接>
"C:/ccc13xx/tirtos_builds_CC1310_LAUNCXL_RELEASE-CCS/Debugg/configPkg/linker.cmd",第583行:警告#1.0096万-D:指定地址位于内存映射之外
错误#1.0264万:默认内存范围与现有内存范围闪存重叠
错误#1.0264万:默认内存范围与现有内存范围SRAM重叠
"C:/ccc13xx/tirtos_builds_CC1310_LAUNCXL_RELEASE-CCS/Debugg/configPkg/linker.cmd",第697行:警告#1.0096万-D:指定地址位于内存映射之外
错误#1.0263万:已指定默认内存范围
错误#1.0264万:默认内存范围与现有内存范围默认值重叠
错误#1.0264万:默认内存范围与现有内存范围闪存重叠
错误#1.0264万:默认内存范围与现有内存范围SRAM重叠
错误#1.001万:链接时遇到错误;未生成"empty_CC1310_LAUNCHLX_tirtos_CCS.out

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

    我不熟悉此链接程序命令文件...

    [报价用户="Juergen Wickenhaeuser"]但是,如果我修改(用户程序)“CC1310_LAUNCCHXL_TIRTOS.cmd"[/报价]

    所以我不能给你们任何具体的建议。

    但我认为阅读文章 链接器命令文件入门将 帮助您理解此文件。  到那时,我想您将了解如何更改它以满足您的需求。

    谢谢,此致,

    -George

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

    您好,

    有几个陷阱:

    • 如果在ROM中使用TI-RTOS,则第二个闪存页的一半(从0x1000开始)保留给TI-RTOS。 ROM代码需要固定地址的配置变量。 您可以通过禁用TI-RTOS .cfg文件中的ROM模块来禁用ROM内核,但这会增加应用程序的大小。
    • 必须在TI-RTOS .cfg文件中调整复位矢量,以匹配新的入口点。 查看SDK中提供的OAD示例

    TI的OAD解决方案仅包含位于第一个闪存页的引导映像管理器。 此BIM仅复制数据,不包括RF。 但是在闪存开始时查找引导加载程序还需要更改TI-RTOS应用程序和链接程序文件。

    我认为最好的解决方案是:

    • 将您的OTA引导加载程序与CCFG一起放在闪存的末尾,不要在现场更新。 您可以根据需要获取任意数量的Flash页面。
    • 将位于第一个闪存页上地址0x0000的中断向量表保留在bootloader的控制下。 这意味着:引导加载程序在对应用程序编程时将覆盖它。 重置向量必须始终指向bootloader。 启动时,TI-RTOS内核仍将在RAM中对另一个矢量表进行编程。 因此不再需要闪存矢量表。

    如果遵循此操作,则根本不需要更改TI-RTOS应用程序,只需删除CCFG,因为它现在由bootloader定义。 这是否合理? 这只是一项建议。 我没有尝试过这种方式。

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

    您好,Richard:

    感谢您提供有关陷阱的详细信息! 是的,我认为您的解决方案应该起作用!

    我已经在ADR中使用TI-RTOS简单测试软件对其进行了测试。 0和我的bootmanager在最近8k中的部分。
    当bootmanager在ADR中调整重置向量时,仍然存在"小漏洞"。 4,但我认为这是可以容忍的...

    此致,
    JO

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

    您好,

    当bootmanager在ADR中调整重置向量时,仍然存在“小漏洞”。 4,但我认为这是可以容忍的...[/QUOT]

    哦,确实如此。 我只是想“0xFF被解释为NOP,直到它到达bootloader”。 很遗憾,CC1310上的ROM bootloader不允许将入口点移动到其他位置(bootloader)。