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.

[参考译文] MSP430F5438A:MSP430F5438A:如何获取 BSL 代码来自定义它以与 i2c 配合使用?

Guru**** 2519050 points
Other Parts Discussed in Thread: MSP430F5438A, MSPBSL

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1024313/msp430f5438a-msp430f5438a-how-do-i-get-the-bsl-code-to-customize-it-to-work-with-i2c

器件型号:MSP430F5438A
主题中讨论的其他器件: MSPBSL

您好!

你好。 我有一位客户正在使用 MSP430F5438A。 请查看下面他的查询以供您参考。 非常感谢。

我能够从以下位置下载 BSL 源代码: www.ti.com/.../MSPBSL_CUSTOMBSL430 zip 文件随附 MSP430F5438A 的代码、但它用于 UART。 该 zip 文件还附带 MSP430F5222x_I2C 的代码、但用于另一个微控制器。 我假设 TI 不会为每个微控制器和外设组合提供项目。
因此、我假设我需要使用 I2C 项目并使其适用于 MSP430F5438A。 我将继续查看文档。 对于如何将项目转换为我的芯片组、您是否可以提供任何建议?

跟踪上次查询的当前状态。 我基于522x I2C 项目创建了一个 CCS 项目。 在项目属性中、我将芯片更改为 MSP430F5438A。 此外、属性->调试-> MSP430闪存设置->下载选项下的设置:我选中了"允许对 BSL 存储器的读取/写入/擦除访问"。 后续步骤必须与文件有关。 我在为 UART MSP430F5438A 下载的 zip 文件中使用了示例项目中 BSL UART 项目的链接器文件。 最后要做的是更改 BSL_Device_File.h、以便为我们的项目使用正确的端口/引脚。 这需要将一些预处理器指令(#defines)从 P4更改为 P3、并将中断寄存器 UCB0更改为 UCB1。 我能够编译代码并将其单步执行到函数 pi_receivePacket()中,它在其中等待 UCZIV 通过 I2C 接收字节。 为了验证代码是否正确、我们正在编写 I2C 主设备代码以将映像发送到 BSL。

问题、BSL 被设置为从器件-我的经理问了一个问题、它是否应该是主器件。 原因是我们的项目使用 MSP430F5438A 作为主器件、但当固件更新可用时(通过 I2C 进行外部通信)、通过关闭中断并跳转到0x1000 (文档中的2行代码_ disable_interrupts ()来调用 SW BSL; 跳转至0x1000)。 此时、我们的 MSP430F5438A 成为从器件。 我不认为这是个问题、但我想得到一个可靠的答案、让管理层回答这个问题、为什么这不是个问题。

一个重要问题- MSP430闪存器件引导加载程序(BSL) slau319ae.pdf 文档提供了有关引导加载程序协议- F5xx 和 F6xx 系列的部分。 BSL 数据包分层结构与包装器格式 Header、Length (NL)、Length (NH)、BSL Core Command、CKL 一起提供 和 CKH。 遗憾的是、我无法找到在 I2C 主设备和 BSL 从设备之间提供 BSL 命令的任何源代码示例。 这将对此处需要与 I2C BSL 连接并提供固件更新的开发人员有所帮助。

此致、

Ray Vincent

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

    您好 Ray、

    自定义 BSL 应用手册将是他们在此过程中的最佳朋友。 特别是 www.ti.com/lit/slaa450 、第1.3节以了解提供的内容、第1.4节以了解如何创建自己的外设接口。  

    他们的假设是正确的、即我们不会为每个器件提供示例。 不过、提供的源代码是最新的、在整个系列中使用最多的源代码。 MSP430F522x 和 MSP430F5438A 足够接近、可以采用当前的方法、即将 F522x 的 I2C 版本转换为 F5438A。 不过 、我可能已经改变了方向、从 MF5438A 开始、并将外设接口更改为 I2C 实现。  

    对于这两个器件、时钟和引脚将是您在转换时需要注意的内容。 F522x 是分离轨器件之一、因此该器件上可能需要一些 F5438A 上不需要的额外设置。  

    对于 BSL 设置、无论如何为 I2C 设置应用、在 BSL 模式下、MSP430器件需要是外设(从器件)而非控制器(主器件)、因为 BSL 需要定向执行什么操作。 因此、无论要更新 MSP430的器件是什么、都需要作为控制器。 如果他们只想从附加的 EEPROM 或类似的器件中获取新映像、则需要根据需要完全自定义 BSL。  

    至于更新程序、客户真正需要如何进行更新。 只需注意在使用密码解锁 BSL 之前您无法使用的"锁定"命令。 例如、在执行任何操作之前、您决定是否知道 BSL 版本。 话虽如此、我们确实在 BSLScripter 下载和用户指南中提供了一些脚本形式的示例-您可以在 MSPBSL 网页的第2部分找到这些示例: https://www.ti.com/tool/MSPBSL