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.

[参考译文] MSP430F6775A:BSL

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1389019/msp430f6775a-bsl

器件型号:MSP430F6775A

工具与软件:

您好!

我会对我正在使用的 MSP430F6775A 器件有一些问题。 引导顺序是否可修改? 具体来说、以@17Fx 开头的地址和关联的序列是否是永久的?

在 low_level...asm 文件中定义的 BSL_action 函数中、存在值0xBEEF 和0xDEAD、它们与寄存器 R13和 R14进行比较。 我找不到任何这样的值被移动到该位置、至少没有移动到那个程序集中。

此外、在 BSL_ENTRY_JMP 函数中、C_Branch JMP 指令首先出现、然后是 BSL_Action。 是否曾经被处理过 BSL_Action、或者它是否简单地跳转到 C 语言初始化函数?

此外、在中断向量存储器段(包括复位向量)中构建之后 TI-hex 中存在数据的原因是该区域不应该被清除、或者我应该修改链接器文件以便不会在这些.int 段中生成任何内容。 在发布的图像中没有类似的东西。

谢谢!

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

    您是否指的是 TI 提供的任何代码? 您能否分享更多有关"@17Fx""BSL_ACTION"等背景信息。 " BSL_ENTRY_JMP"

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

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

    是的、地址来自 SLAA450G、代码参考 TI 提供的定制 BSL 示例。 很抱歉意外点击了‘This Solved My Issue"按钮。

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

    具有 Low_level_code.asm 文件的代码可在以下位置找到: MSPBSL_CustomBSL430 1_02_00_01 - TI.com

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

    将  Low_level_code.asm 文件构建到 Z 区域中。 Z 区是存储器中一个特殊部分、旨在以受控方式公开访问受保护的 BSL。 Z 区是位于地址0x1000和0x100F 之间的可跳转到外部应用程序代码并从中读取的 BSL 存储器部分。 Z 区用作网关、可从该网关跳转到 BSL 存储器中的任何位置。 默认 TI BSL 使用此区域跳转到 BSL 的开头以及跳转到 BSL 公共函数中。

    通常、此处所需的定制仅限于:

    •更改 BSL_PROTECT 函数以在不同条件下调用 BSL。

    •将非0xFFFF 的值写入最终 BSL 映像的 JTAG 密钥位置。

    •向 Z 区域添加附加函数、使它们可由用户代码执行。

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

    好的、我知道、但这是曾经执行过的 BSL_ACTION0函数。 之后是 C_Branch、当我调用 C_Branch 时、执行主代码。 我错了吗? 此外、当我 在从未执行 C_Branch C_Branch C_Branch C_Branch 之前放置 bsl_function 时、BSL 绝不会启动、直到我不会将#0xDEAD 和#BE牛肉 移动到 arg2和 arg3寄存器。 所以,什么是目的,因为它看起来有些诡计对我来说,即使在 SLAU 中有一些解释。 看起来它更像是没有任何功能。 我的意思是、在参数开始之前、先检查#0xDEAD 和#0xBEF 等神奇关键字应该如何进入这些寄存器、以便对其进行比较?

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

    您好、Stanislav:

    我还没有尝试、但如果您要执行  BSL_ACTION0、可以将 PC 设置为0x1002、我认为应该调用 BSL_ACTION0。  

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

    您好、Gary、

    我试着把 BSL_Action0 之前 C_Branch,我也修改了 BSL_Action 函数。 但是、这种方法不起作用、直到我在比较前将这些关键字#0xBEEF ...移动到寄存器中、或者直到我将它们从代码中省略。 我之所以提出这个问题、是因为我想通过删除不必要的代码来节省一些内存空间。 然而、我仍不确定这一点、正因如此、我想要澄清。

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

    对于所调用函数、应在 ROM 中无法修改的启动代码中进行处理。 如果你想保存一些数据、我建议把它保存在信息存储器中、如果你使用 BSL 代码的话、不要修改它。

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

    好的、但我需要 BSL 存储器、这样我就可以在 BSL 中使用更多的函数或添加进一步的验证。  

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

    好的、但建议不要对 Z 区域进行任何修改、您可以尝试删除一些不需要的核心命令。

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

    好的、谢谢。