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.

[参考译文] CCS/C2000-F28004X-POWER-EST-CALC:实时固件更新

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/961029/ccs-c2000-f28004x-power-est-calc-live-firmware-update

器件型号:C2000-F28004X-POWER-EST-CALC

工具/软件:Code Composer Studio

尊敬的先生:

我正在基于在 F28004x 上开发的"flashapi_ex2_sci_kernel"示例学习实时固件更新。

我注意到"组选择逻辑"分配在"codestart"部分、以及"codestartbranch"代码。

据说_c_int00是 C 环境 RTS 的入口点、它将调用 main 函数。

因此、我想知道在退出引导 ROM 后如何执行该函数、它将首先运行 main、或者先运行" bankselect"?

代码的两个部分(codestartbranch 和 bankselect) 是如何分配的?

可能是我理解不正确的事情。

期待 您的回复、谢谢!

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

    Huijin、

    这是一个好问题。

    对于 flashapi_ex2_sci_kernel 工程、如果仔细观察、LDFU 编译配置会将 codestartbranch.asm 从工程中排除、即 bankSelect 是入口点。

    非 LDFU 编译配置在工程中包含 codestartbranch.asm +它们没有 bankSelect 作为入口点。

    谢谢、

    Sira

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

     您好、Sira、

    感谢您的快速响应。

    我注意到入口点已设置为"Bankselect"、但尚未排除 f28004x_codestartbranch.asm、它位于器件文件夹中。

    映射文件显示 、"Bankselect"和"codestartbranch"都位于"codestart"部分。

      当要链接的文件超过2个时、决定哪个部分代码将位于存储器部分的第一个地址的因素是什么?

    因此、根据该设置、永远不会调用 main 函数、对吧?

    如果是的话,为何不把选择银行的功能放在主要的运作中,是否有特别的问题呢?

    另一个问题是、为什么命令文件中有一行"-u _bankselect"、它似乎 是用来告诉链接器 bankselect 的符号、但需要像这样声明什么类型的符号、不需要什么类型的符号? 为什么有“_”前面的“bankselect”?

    谢谢!

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

    Huijin、您的观察结果很有趣。 请给我一整天左右的时间为您深入探讨。 谢谢、Sira

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

    Huijin、只是想提供更新-我正在咨询编译器团队、以了解将多个符号分配到同一段时的行为。

    我是否可以让您尝试以下几项操作:

    1.从工程编译配置和测试中删除 codestartbranch.asm。 它应该起作用。

    2.从链接器 cmd 文件中删除-u _bankSelect 并进行测试。 我构建了它并构建了它。 但是、您能否检查它是否起作用。

    谢谢、

    Sira

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

    您好、Sira、

    非常感谢您的支持。

    是的, 当我 排除  codestartbranch.asm 或 删除 “-u _bankselect”时,可以成功构建它。  因此 、似乎   从未    调用 main 函数。

    遗憾        的是、我手头没有基于28004x 的电路板、我将尝试找到一个电路板并对其进行测试。

    另一个问题:

     我在导入项目 ,后构建项目“flashapi_ex3_live_firmware_update” , 并出现错误。

    请帮助您检查错误是什么?

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

    您好、Huijin、

    这可能是因为您使用的是编译器 v20.20.20.LTS 或更高版本。 在 flashapi_ex3_live_firmware_update.c 文件中、请进行以下更改、然后查看是否会编译该文件。 我期待这件事。

    asm (" LCR 0x81000");

    更改为


    asm (" MOVL XAR7、#0x81000");
    asm (" LCR *XAR7");

    asm (" LCR 0x91000");

    更改为


    asm (" MOVL XAR7、#0x91000");
    asm (" LCR *XAR7");