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.

[参考译文] MSP430F6726:通过 BLE UART 的 DFU

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1007503/msp430f6726-dfu-via-ble-uart

器件型号:MSP430F6726

您好!

我将 MSP 和 BLE 模块通过 UART 连接、并使用硬件流控制和很少其他指示器、例如连接状态和广播状态。 MSP 通过(a)类用户在命令中定义的方式与 BLE 进行通信(我可以完全自由地在 BLE 模块(nRF52840)中编写代码)。 我使用 BLE 定制特征服务进行 BLE 通信。 目前、MSP 的闪存分为2个块、从块0开始执行 DFU 将固件数据写入块1、并在验证数据后将启动序列更改为块1。 如果 我现在无法执行新的更新、新的固件数据将写入块0、起始地址将更改为块0。 DFU 仅通过上传 ti_main.txt (hex)文件即可与 Android 和 iOS 应用配合使用。 使用这种方法时一切正常、唯一的缺点是在任何情况下、50%的闪存 未使用(只是保留为旧固件的备份)。   

我一直在研究 BSL 方法、发现 msp430f6726能够实现闪存 BSL、定制 BSL 和 MSP Boot。 但是、所有这种方法都将 RST、TEST、TX、RX 用于某些默认引脚和在 Windows/Linux/MAC 上运行的 BSL 脚本。  并对如何通过 BLE UART 使用它感到困惑。  

由于我的当前应用使用的闪存超过50%、我无法将这种旧方法用于 DFU。 有人能向我推荐一种替代解决方案吗?

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

    你好 Sivashankar、

    不确定您是否已看到这些文档。  他们可能会提供一些指导。  我将询问我们团队中的任何人是否有一些想法。

    https://www.ti.com/lit/an/slaa511a/slaa511a.pdf

    https://www.ti.com/lit/an/slaa721e/slaa721e.pdf

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

    尊敬的 Dennis:

    感谢大家分享这些内容、首先、我们将 MSP430FRxxx 作为参考。 是否最好与  msp430f6726相同。

    谢谢、

    Sivashankar

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

    你好 Sivashankar、

    好的、如果我了解您的设置、BLE 无线电将通过 UART 连接到 MSP430。  要对 MSP430进行编程、BLE 器件需要连接到其他引脚、 RST 和 TEST。  RST 和 TEST 引脚被用来将 MSP430置于 BSL 模式(这被称为硬件进入方法)。  BLE 需要遵循文档 SLAA319闪存器件引导加载程序中第3节(协议)中描述的 BSL 命令。

    这是否有帮助?

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

    尊敬的 Dennis:

    在进入 BLE 连接之前、我先从 BSL 开始。 我已将重置和测试引脚连接到 Arduino、以将 MSP 切换到 BSL 模式、它在 BSL_UART 中使用 BSA_ACK、 因此现在一切正常、我准备好了。

    我编写了一个 python 脚本来构建 BSL 赞扬 https://1drv.ms/u/s!ArCbXDYx3yjAgU70bq-dflpNhiAh?e=2aiuOU

    @4000
    81 00 00 3C B1 13 30 00 0C 43 B1 13 00 00 1C 43 
    B1 13 2A 00 32 D0 10 00 FD 3F 03 43 
    @ffd0
    14 40 14 40 14 40 14 40 14 40 14 40 14 40 14 40 
    14 40 14 40 14 40 14 40 14 40 14 40 14 40 14 40 
    14 40 14 40 14 40 14 40 14 40 14 40 14 40 00 40 
    F1 03 B2 40 80 5A 5C 01 D2 D3 04 02 D2 E3 02 02 
    B1 40 40 42 00 00 81 93 00 00 F8 27 91 83 00 00 
    81 93 00 00 F3 27 FA 3F 03 43 03 43 FF 3F 03 43 
    1C 43 10 01 
    q
    led.txt 中的闪烁 LED 程序示例

    逼真=打开("led.txt")
    数据=加载(逼真)
    版本号
    CON_DATA_WRITE (BSL_VERSION、b'')
    质量错误
    CON_DATA_WRITE (BSL_MUS_ERASE、b'')
    #send 密码
    CON_DATA_WRITE (BSL_RX_PASSWORD、b'\xff'* 32)
    版本号
    CON_DATA_WRITE (BSL_VERSION、b'')
    对于 n in 范围(len (data)):
    如果 len (data.segments[n].data)& 1:
    print ("是、追加!"、len (data.segments[n].data))
    data.segments[n].data +='\xff'
    Block = bytearray (three 字节(data.segments[n].startaddress).encode ())+ data.segments[n].data
    CON_DATA_WRITE (BSL_RX_DATA_BLOCK、BLOCK)

    ***此处提供了详细代码 https://1drv.ms/u/s!ArCbXDYx3yjAgU70bq-dflpNhiAh?e=2aiuOU ****

    #Deud 输出 
    8. 'bytes'="">B'\x00\x80\x02\x00;\x04\XE4\x84' 008002003b04e484 (版本) 8. 'bytes'="">B'\x00\x80\x02\x00;\x00`\xc4' 008002003b0060c4 (批量擦除) 8. 'bytes'="">B'\x00\x80\x02\x00;\x00`\xc4' 008002003b0060c4 (密码) 11. 'bytes'="">B'\x00\x80\x05\x00:\x00\x07\x05\x04\xada ' 008005003a00070504ad61 (解锁后的版本) 8. 'bytes'="">B'\x00\x80\x02\x00;\x00`\xc4' 008002003b0060c4 (块@4000写入) 8. 'bytes'="">B'\x00\x80\x02\x00;\x01A\XD4' 008002003b0141d4 (块@ffd0)

    在块 ffd0处、我遇到 CRC 错误、我不确定原因是什么? 如果我的 CRC 计算器函数错误、其他命令如何工作。
    如果我的 CRC 计算器正在工作、那么 ffd0块会出现什么问题

    我使用的 CCS 10具有十六进制实用程序输出格式选项输出 TI-txt 十六进制格式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Sivashankar、

    我花了一些时间深入探讨这个问题、老实说、根据您提供的信息、我不知道 BSL 为什么会返回该数据块的 CRC 错误。

    您能否为此项目提供.map 和链接器命令文件.cmd?

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

    尊敬的 Dennis:

    我也有同样的困惑、但幸运的是、我使用 了 BSLScripter-3.4.0.2使其正常工作。 我相信 python BSL 封装是使用 python2开发的、我使用的是 Python3、所以我遇到了很多问题。  

    参考:

    software-dl.ti.com/.../index_FDS.html

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

    你好 Sivashankar、

    我很高兴您找到了解决方案。

    由于您似乎能够解决您的问题、我将此帖子的状态更改为已解决。
    如果情况并非如此,请单击“这无法解决我的问题”按钮,并使用更多信息回复此主题。
    如果此主题锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。