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.
工具/软件: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
您好、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");