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.

[参考译文] MSP430FR2110:BSL 编程和复位后代码不运行

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1038975/msp430fr2110-code-is-not-running-after-bsl-programming-and-reset

器件型号:MSP430FR2110


我们现在已经安装了 MSP430FR2110、并且能够使用 BSL 获得一整套事务(请参阅随附的 Saleae 捕获)

但是、我们实际上看不到在我们执行复位后是否有任何代码正在运行。 我们预计 P1.7会振荡(我认为这是 UART TX)

我尝试使用“加载 PC”命令开始执行代码,但也没有执行任何操作。

我还想澄清一点:

在执行 RX 数据块时、我是否只需要按照文件的显示方式从文件中读取256个字节? 或者它们是否需要按字节顺序颠倒?

例如:

@F800
………45 78 μ F 98 76 EE

那么、在 BSL 中、我会执行以下操作:
80 04 01 10 00 F8 00 FF 45 78…。 98 76 EE XX XX
或者:
80 04 01 10 00 F8 00 EE 76 98…。 78 45 FF XX XX

感谢您的任何帮助!

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

    我在数据采集中看不到您写入矢量的位置。 您是否写入了复位矢量? 您是否为加载 PC 命令使用了该值?

    至于字节顺序、肯定是第一个。 您可以使用 TX BLOCK 命令验证数据是否按预期写入。

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

    我添加的捕获中没有加载 PC 命令。  
    0x80 0x04 0x00 0x17 0x00 0xf8 0x00 0xxx 0xxx

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

    这基本上就是我发送给它的内容、似乎什么都不起作用

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

    那么、我看到的是、您没有写入复位矢量。 假设您从具有无效密码的 BSL 解锁命令开始、该密码会擦除所有内容、这意味着复位后、CPU 将尝试从0xFFFF 开始。 这将不起作用。

    对于加载 PC 命令、您只需假设程序执行从0xf800开始、但该位置的数据不是您所期望的。 它通常是 mov #sotie, r1。

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

    好的、
    那么、这里是我不确定的地方。 我从 code composer 获取的 TI_TXT 文件从 以下位置开始:
    00 00 0D 00 00 00 be FC 00 00 00 00 F8 00 00 00 20

    这似乎不正确?

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

    如果这是错误的、那么我需要更改我的 code composer 设置

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

    看起来 CCS 没有针对 BSL 操作进行配置、需要更改一些设置以使代码空间的顶部正确。

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

    您好、Quinn、

    我在"RX 数据块"矢量和"Saleae 捕获"中看到您使用的长度为4。 这将仅涵盖命令(10/RX 数据块)和您要写入的地址(0xf800)。 您需要使用更长的长度来覆盖文件中的内容。 我将参考 FRAM BSL 用户指南、特别是"BSL 协议"和"BSL 内核命令"部分、了解如何格式化 BSL 命令[链接]。

    谢谢、

    王国新

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

    如果您还查看该文档、您将看到它需要小端字节序的长度字节。

    因此、我的 TX 数据块长度实际上是0x0104、应该是260字节?

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

    我在 CCS 中找到了以下内容:


    当我执行加载 PC 命令时、我是否需要使用0xF800以外的其他内容?

    我需要使用0xF82C 吗?

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

    实际起始点可能会随着代码的更改而变化。 或编译器更新。 执行可能在.text 段的开头开始、但不必执行。 唯一可以确定的方法是查看复位矢量。 在 TI-TXT 格式文件(是人类可读的 ASCII 文本)中、显示如下所示:

    @FFFE

    F82C

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

    明白了、
    我的 TI_TXT 文件中不包含复位矢量。 是否有方法让 CCS 将其添加到文件中?

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

    不是线索、因为我使用 GCC。 您必须阅读文档、但我希望默认情况下它包含所有部分。 slau655显示了一个示例。 默认情况下、我希望它包含所有段。 也许您错过了。

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


    我在映射文件中看到了这一点。 这是我需要通过复位矢量设置的位置吗?

    戴维:
    您能否向我展示复位矢量的值应该来自您的一个芯片吗? (如果可能的话?)

    谢谢

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

    我为 fr2110编译了一个"不做任何事情"短程序、并输出了一个 Intel hex 文件:

    :10F80000314000240C43B0122EF8B0123CF88C01A9
    :10F8100003028D0406058E0709088F0A0C0B0343AB
    :10F82000A2D31C053F14034303433C163041B240AE
    :0EF83000805ACC0192C330014C433041FF3F5F
    :02FFFE0000F809
    :040000030000F80001
    :00000001FF
    

    您不需要太多地了解格式、就可以看到数据从0xf800开始、重置矢量(0xFFe)设置为0xf800。 该地址处的符号为"__crt0_start"。 我添加了一个带有初始化程序的全局变量、并且起始地址更改为0xf802。

    尝试通过眼图获取复位矢量值并不是一个稳健的解决方案。 您需要让 BSL 加载程序从目标文件中获取它并自动对其进行处理。 如果您使用中断、您还必须处理这些矢量。

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

    我通过使用 Load PC 并具有正确的启动矢量来使其正常工作。 我需要找到一种方法将其添加到 TI_TXT 文件中、或者移动到 Intel 版本。 感谢你的帮助