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/MSP430F5529:如何使用 CCS 上的 MSP430F5529编译 BSL 存储器中的一些代码。

Guru**** 2390755 points
Other Parts Discussed in Thread: MSP430F5529, MSP430F5418A, MSP430F5328

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/597394/ccs-msp430f5529-how-to-compile-some-code-in-the-bsl-memory-using-a-msp430f5529-on-ccs

器件型号:MSP430F5529
主题中讨论的其他器件: MSP430F5418AMSP430F5328

工具/软件:Code Composer Studio

您好!

我想使用以下链接中的源代码对自定义引导加载程序进行编码。

--------processors.wiki.ti.com/.../File:CUSTOM_BSL.zip--------------------

我对我想要编码的内容有很好的了解、但问题是我不知道如何在 BSL 存储器中对其进行编码。 我读 入了

SLAA450D (1.3.2.3)

 我必须使用该文件

lnk430FXXXX_BSL_Area.xcl

但我不知道在哪里为 MSP430F5529找到它。

我的下一个问题是如何告知 CCS (或者如何用 C 语言编写)我想要执行 我的 BSL_MAIN_FUNCCTION ();我知道它必须放置在  0x17FA 指向的地址
但我不知道如何在运行任何程序之前进行正确的设置来将代码放置在指向的地址并更改 x17FA 的值。

我不熟悉 C 语言编程、MSP430F5529 是我在 Arduino 之后编写代码的第一个微控制器。

非常感谢您的帮助、

纪尧姆


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

    您好、Guillame、

    您提供的链接未带我进入有效位置。 为了确保您具有正确的代码、下面是指向定制 BSL 代码: MSP430定制 BSL 包的链接。 此代码包含适用于多个 MSP 器件上的自定义引导加载程序的示例 CCS 项目。 但是、大多数命令是使用 IAR 创建的、 lnk430FXXXX_BSL_Area.xcl 是特定于 IAR 的命令文件、在 CCS 中找不到。 CCS 中的等效项以".cmd"结尾。

    首先、MSP430F5529同时具有 USB BSL 和 UART BSL。 您将使用哪一个? 此外、您希望对默认 BSL 进行哪些更改、为什么? 如果有必要、这将帮助我更好地引导您到该位置进行更改。  

    此致、  
    Caleb Overbay

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

    您好 Caleb、  

    我想更改 pi_init()函数和 sendByte/receiveByte 函数,因为我将使用 nRF24L01 (单芯片2.4GHz 收发器)通过 SPI 通信传输数据。

    但是、我计划使用您提供的链接中提供的大部分代码。 目前、我无法将代码存储在 MSP 中、因为 lnk_msp430f5418a.cmd 文件不适用于 MSP430F5529。 我已经尝试为 F5529创建一个新项目、然后将自定义 BSL 包中的文件复制 到我的新项目中、但当我单击去调试时、我收到了以下错误消息。

    MSP430:文件加载器:验证失败:地址0x00000处的值不匹配请验证目标存储器和存储器映射。
    MSP430:GEL:文件:C:\Users\guigu_000\workspace_v7\bootloader\Debug\bootloader.out:发生数据验证错误、文件加载失败。

     最后、我需要在 MSP430F5328中放置相同的引导加载程序(相同的存储器组织)。 因此、我还想知道是否需要更改.cmd 文件、或者是否需要更改代码中的某一行或其他内容。

    非常感谢

    祝你度过美好的一天

    纪尧姆

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

    您好、Guillame、

    要为 MSP430F5529使用 CCS 示例 BSL 项目、您需要更改 lnk_msp430F5529.cmd 文件。

    首先、我建议使用一个工具将示例项目中出现的 lnk_msp430f5418a.cmd 文件与位于 C:\ti\ccsv7\ccs_base\msp430\include\lnk_msp430f5418a.cmd 的默认 lnk_msp430f5418a.cmd 文件进行比较。 执行此操作时、您可以看到以下差异:

    在上面的屏幕截图中、左侧的文件来自示例工程、右侧的文件来自默认文件。 如示例中所示、已定义了一些额外的部分、并且闪存已更改为位于本器件数据表中指定的 BSL 闪存区域中。 该文件也有更多更改、这些只是最重要的更改。

    您需要对 MSP430F5529链接器文件进行这些相应的更改、然后才能在此器件上使用示例代码。 进行更改时、请务必参考器件数据表中的存储器映射。  

    此致、  

    Caleb Overbay

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

    这方面的进展如何? 您是否有任何未回答的问题?

    此致、
    Caleb Overbay
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Caleb、
    我刚刚看到了您的消息、我有一些问题。
    我成功地使用了您向我展示的链接器文件、这对我有很大帮助。
    事情有进展、这就是我所做的。

    我的引导加载程序太大、无法留在 MSP 的 BSL 段中、因此我已将其存储在第3列气缸组中。
    此外、我的引导加载程序使用一个中断例程与我的 nRF24L01+进行通信。 此中断例程始终存储在信息 A 的顶部(我希望它始终位于同一地址、并且我在项目中未使用信息 A)。

    我的问题是我目前无法更新我的中断矢量表。 我有一个想法、但我不确定如何实现它:

    例如、我希望在 infoB 中的特定位置始终有一个 IVT 副本、并将 IVT 在 RAM 中的替代位置用于程序。 问题是、我不知道如何在编译时告诉编译器生成该副本。

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

    您好 Guillaume、

    如果您的自定义引导加载程序不适合 BSL 段、您将面临意外擦除/覆盖引导加载程序代码部分的风险。 我建议查看 MSPBoot MSP430FRBoot、它们 是主存储器引导加载程序、与器件中的默认 BSL 是分开的。

    MSP430FRBoot 显示了使用 CC110x 进行 OTA 下载的示例、我正在更新 MSPBoot 以执行同样的操作。 e2e.ti.com/.../MSP430F5529_5F00_OTA.zipis使用 OTA 的 MSP430F5529的初始版本。 您可以比默认 BSL 更轻松地对其进行自定义。 遗憾 的是、我尚未为此创建文档、但它与 MSPBoot 和 MSP430FRBoot 实现方案非常相似。 如果您有任何疑问、请告诉我。

    此致、  

    Caleb Overbay