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.

[参考译文] MSP430FR2422:通过 I2C BSL 更新固件

Guru**** 2524550 points
Other Parts Discussed in Thread: MSP430FR2422

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/876386/msp430fr2422-updating-firmware-over-i2c-bsl

器件型号:MSP430FR2422

大家好、我正在为连接到 Raspberry Pi 的支持板使用固件。 我有一些与 MSP430FR2422和 Pi 通信的现有 I2C 代码。 现在、我将尝试对 I2C BSL 进行分类。 我已将代码修改为以下内容以测试 BSL:

int main (void){
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器以防止超时复位
PM5CTL0 &&~LOCKLPM5; //禁用 GPIO 上电默认高阻抗模式以激活//先前配置的端口设置

_BIC_SR_register (GIE); //清除 GIE
((void (*)() 0x1000)(); //跳转至 BSL
}

运行:

PI@raspberrypi:~$ i2cdetect -y 1.


0 1 2 3 4 5 6 7 8 9 A b c d e f
00: ------------ ------------
------ 10:---------------- ------------ ------------
---- 20:------------ ------------ ------------
---- 30:------------ ------------ ------------
-- 40:-------------- ---- 48 ----------------
---- 50:-------------- ------------ ------------
---- 60:------------ ------ 68 ----------------
---- 70:-------------- ------ 

我已通过 msp430_i2c_bsl_linux_tools_v1_00_00_00.zip 获取 TI 示例工具、并得到以下信息:

pi@raspberrypi:~/i2c_test/BSL $./MSP430-i2cbsl-tool -f firmware.txt -i /dev/i2c-1 -s 0x48

-------------------------------------------------------
TI MSP430 I2C Linux 引导加载程序01.00.00.00
---------------
INFO:firmware file firmware.txt specified
info:I2C bus /dev/i2c-1 specified
info:slave address 0x48 specified
info:Opening TI-TXT firmware file firmware.txt……Done!(信息:固件文件指定信息:I2C 总线指定信息:从地址0x48
INFO:找不到密码文件,默认为0xFFs。
INFO:调用 BSL (尝试1)... 调用已发送!
INFO:延迟2秒等待调用... 完成!
INFO:正在尝试使用密码解锁设备... 失败!
INFO:无法解锁设备。 重置密码并重试。
INFO:调用 BSL (尝试2)... 调用已发送!
INFO:延迟2秒等待调用... 完成!
INFO:正在尝试使用密码解锁设备... 失败!
INFO:无法解锁设备。 重置密码并重试。
INFO:调用 BSL (尝试3)... 调用已发送!
INFO:延迟2秒等待调用... 完成!
INFO:正在尝试使用密码解锁设备... 失败!
INFO:无法解锁设备。 重置密码并重试。
INFO:调用 BSL (尝试4)... 调用已发送!
INFO:延迟2秒等待调用... 完成!
INFO:正在尝试使用密码解锁设备... 失败!
INFO:无法解锁设备。 重置密码并重试。

错误:尝试调用或解锁器件时(响应代码0x104)。 

我已经在这里偷了几个小时了。 我真的不知道问题在哪里。 有什么建议?!?

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

    您好、Travis、

    感谢您发帖。 我将深入了解这一点、并在下星期一之前为您提供一些初步反馈。

    此致、

    James

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

    您好、Travis、

    感谢您的耐心等待。

    深入探讨这一点后、我最初认为来自主机的 BSL 调用过程(RPi)不能正常工作、从而导致响应代码0x104。 BSL 调用方法可通过硬件或软件来完成。 但是、由于您能够使用"i2cdetect"命令查看从器件地址、因此调用过程似乎在该阶段工作。 这是一个类似的线程、其中软件调用似乎允许显示地址。

    Linux/MSP430FR2633:通过 I2C 更新固件时出现问题

    以下是 《使用 Linux 通过 I2C 进行 MSP430Tm固件更新 》应用报告中的一个有用摘录:

    执行 BSL 更新的另一个重要设计要求是有一种在 MSP430器件上调用 BSL 模式的方法。 对于 MSP430、以下是调用 BSL 的方法:硬件调用和软件调用。 硬件调用要求用户向 TEST 和 RESET 引脚施加特定的时序脉冲。 软件调用要求用户拥有一个自定义的 I 2C 命令处理程序、该处理程序会将程序计数器更改为进入 BSL 模式。 有关软件和硬件 BSL 调用的详细信息、请参阅特定的 BSL 设计指南(请参阅《MSP430FR57xx、MSP430FR58xx、MSP430FR59xx、MSP430FR68xx 和 MSP430FR69xx 引导加载程序(BSL)用户指南》[SLAU550])。 对于硬件调用、在调用终端应用程序之前、必须在测试和复位引脚上应用时序脉冲。 如果使用硬件调用、请指定–n 选项以省略软件调用。 如果在发出任何 BSL 命令之前未指定-n 标志、则终端程序会发送一个针对 main.c 文件的 invokeString 数组中指定的字节的 I 2C 写入事务。 默认情况下、此调用字符串由一个字符序列{0xCA、0xFE、0xDE、0xAD、0xBE、 0xEF、0xBA、0xBE}。

    我认为正在发生的情况是、从器件(使用您在上面共享的固件进行编程)正在通过软件调用 BSL 本身。 然后、当您的 Rpi 尝试再次调用 BSL 时、由于它已经被调用、因此会出现错误。

    此致、

    James

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

    听起来-n 选项应该跳过调用并启动 BSL 更新。 但我得到的结果非常相似。

    pi@raspberrypi:~/i2c_test/BSL $./MSP430-i2cbsl-tool -f firmware.txt -i /dev/i2c-1 -s 0x48 -n
    
    ---
    TI MSP430 I2C Linux 引导加载程序01.00.00.00
    ---------------
    INFO:firmware file firmware.txt specified
    info:I2C bus /dev/i2c-1 specified
    info:slave address 0x48 specified
    info:Opening TI-TXT firmware file firmware.txt……Done!(信息:固件文件指定信息:I2C 总线指定信息:从地址0x48
    INFO:找不到密码文件,默认为0xFFs。
    INFO:已跳过软件调用。
    INFO:正在尝试使用密码解锁设备... 失败!
    INFO:无法解锁设备。 重置密码并重试。
    INFO:已跳过软件调用。
    INFO:正在尝试使用密码解锁设备... 失败!
    INFO:无法解锁设备。 重置密码并重试。
    INFO:已跳过软件调用。
    INFO:正在尝试使用密码解锁设备... 失败!
    INFO:无法解锁设备。 重置密码并重试。
    INFO:已跳过软件调用。
    INFO:正在尝试使用密码解锁设备... 失败!
    INFO:无法解锁设备。 重置密码并重试。
    
    错误:尝试调用或解锁器件时(响应代码0x104)。 


    除非我缺少一些东西、否则它应该像这样工作。 如果我错了、请告诉我。 当我有机会时、我会尝试将调用触发器添加到我的常规 FW 中、以允许"典型"编程。 即使这样做可行、我仍然会遇到无法从 Pi 对新 MSP 进行编程的问题(这是我的目标之一)。

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

    您好、Travis、

    我在阅读 《MSP430 FRAM 器件引导加载程序(BSL)用户指南 》、并找到第3.4节 BSL 超时功能。

    FR26xx、FR25xx、FR24xx 和 FR23xx MCU 上的 BSL 实现了用于自动检测 BSL 接口的低功耗超时功能。 如果在10秒内未建立通信、器件将进入 LPM4模式。 要再次调用 BSL、必须对器件进行下电上电、或者必须接收到复位或 NMI。

    您是否知道您是否在10秒窗口内发送这些命令? 也许这就是通信失败的原因。

    此外、由于您希望对新的(空白) MSP430器件进行编程、因此根据第3.3.3节"空白器件检测"、您可能不需要 BSL 进入序列。

    FR26xx、FR25xx、FR24xx 和 FR23xx MCU 上的启动代码支持空白器件检测、以避免 BSL 进入序列。 这不仅节省了时间、而且无需为 BSL 调用序列使用两条额外的导线(TEST、RST)。 启用空白检测时、可以绕过 BSL 进入序列。 仅当复位矢量的值为0xFFFF 时、器件才会直接跳转到 BSL 并绕过进入序列。

    此致、

    James