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:MSP-FET

Guru**** 2485965 points
Other Parts Discussed in Thread: MSP430F5438A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1226502/msp430f5438a-msp-fet

器件型号:MSP430F5438A

您好!

感谢您 的@Brandon Fisher94您的支持,为 安装在 PCB 上的 MSP430F5438A 的电子保险丝设置(只有 JTAG 可访问)我已经尝试了您的建议,添加到图像文件.txt :  

编程阶段已完成,但验证阶段失败,原因是 地址0x017FC 处的值不匹配。此处是批处理文件执行的一个示例 :  

> dslite --mode flash -c user_files/configs/MSP430F5438A.ccxml -l user_files/settings/generated.ufsettings -s VerifyAfterProgramLoad="No verifications"-e -f -v "user_files/images/3000487280-R72-02.txt"

DSLite 版本11.0.0.2538
配置调试器(首次启动时可能需要几分钟时间)...
正在初始化寄存器数据库...
正在初始化:MSP430
执行启动脚本:MSP430
正在连接...
正在加载程序:user_files/images/3000487280-R72-000-02.txt
正在准备...
在0x1000处为2048的0
在0x5c06处为58的0
地址为0x5d98时261736中的0
0x5d98处261736上的32752:13%
0x5d98处261736中的65504:25%
0x5d98处261736的98256:37%
在0x5d98处261736的131008:50%
在0x5d98处为261736的163760:62%
261736中的196512在0x5d98处:75%
0x5d98处261736中的229264:87%
0x5c40处344中的0:99%
0x182处为2的0:99%
在0x17fc 时为4的0:99%
完成:99%
将 PC 设置为入口点:99%
信息:MSP430:有264192字节被写入。
验证程序:user_files/images/3000487280-R72-000-02.txt
正在准备...
在0x1000处为2048的0
错误:MSP430:文件加载程序:验证失败:地址0x017FC 处的值不匹配请验证目标内存和内存映射。
完成

但在尝试再次编程后,设备不再可访问并且已 在此处得到保护,示例如下:  

> dslite --mode flash -c user_files/configs/MSP430F5438A.ccxml -l user_files/settings/generated.ufsettings -s VerifyAfterProgramLoad="No verifications"-e -f -v "user_files/images/3000487280-R72-02.txt"

DSLite 版本11.0.0.2538
配置调试器(首次启动时可能需要几分钟时间)...
正在初始化寄存器数据库...
正在初始化:MSP430
执行启动脚本:MSP430
正在连接...
错误:MSP430:连接到目标时出错:器件的调试接口已受到保护

我是否应该在刷写后禁用验证、如果是、这会影响之后的程序执行  

此致、

Nadhir Aouinti.

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

    尊敬的 Nadhir:

    禁用验证没有问题、假定所有内容均已正确加载、应该不会影响应用程序的运行。 我不一定认为验证会失败、它似乎在 BSL 存储器中验证开始时就失败了、考虑到我们修改的内容、这是合理的。 假设我们 手动更改了 ti-txt 文件以锁定 JTAG、则可能是在第一次扫描期间它要求存储器为空。  

    您的应用程序似乎运行正常吗? 您是否在代码中将其他内容写入 BSL 存储器、"Erase"设置看起来是什么样的?  

    此致、
    Brandon Fisher

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

    尊敬的 Brandon:

    感谢您的答复、

    我已禁用验证、应用程序运行正常、而且 保护器件  ,我没有访问软件的权限,我只使用 TI.txt 映像进行编程  

    BSL 存储器未在映像中使用:  

    我的"擦除"设置位于 generated.ufsettings 中:  

    {"TI MSP430 USB1/MSP430":{"MSP430UnlockBSLMode":true、"MSP430DownloadOptions":"Erase main、information and protected information memory"}

    在 dlite.bat 中为:  

    设置 generated_command=-c user_files/configs/MSP430F5438A.ccxml -l user_files/settings/generated.ufsettings -s VerifyAfterProgramLoad="No verifications"-e -f "user_files/images/3000487280-R72-000-02.txt"
    设置 additionals=

    此致、

    Nadhir Aouinti.

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

    尊敬的 Brandon:

    对不起,但是 orginal ti.txt 文件包含:  

    @17FC
    FF FF FF

    这就是验证失败的原因  

    但它不包含  @0182处 BSL 存储器的解锁

    注:  

    阅读文档  SLAU208Q (MSP430x5xxandMSP430x6xx 系列 产品用户指南)第73页"使用电子器件的1.11.2 JTAG 锁定机制

    保险丝"  

     和文档 SLAU320AJ (用户指南《 使用 JTAG 接口进行 MSP430编程》)第52页"2.4.2对 JTAG 锁定密钥进行编程-

    5xx、6xx 和 FRxx 系列的函数参考2.4.2.1闪存器件   

    和参考了 SLAU208Q 第88页 (SYS 寄存器表)=>

    最后第90页(SYSBSLC 寄存器"引导加载程序配置寄存器"):  

    我不知道为什么你使用这些值为这些地址 ,但 我不否认和设置 位之间的区别  SYSBSLOFF 决定 变为0b 或 to1b

    那么 MSP430中的引导代码和 BSL 之间有什么区别 ? 这与 STM32架构中的 bootloader 和 IAP 相似吗?

    此致、

    Nadhir Aouinti.

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

    你好、Nadhir

    我不知道为什么你使用这些值为这些地址 ,但 我不否认和设置 位之间的区别  SYSBSLOFF 决定 变为0b 或 to1b

    [/报价]

    因此、如果您将 SYSBSLOFF 位设置为1、  对 BSL 存储器的访问将被视为 空存储器访问。 如果 VMAIE 被启用、它将生成一个 NMI。  

    如果将 SYSBSLOFF 设置为0、则可以尝试读取或写入 BSL 存储器、 它不会被视为空存储器访问。 这意味着不会生成 NMI。 有时您可能希望访问 BSL 存储器的尝试被视为空存储器访问、有时您可能不希望这样做。  

    只需设置 SYSBSLPE 就足以保护一般的存储器、默认情况下、MSP430F5x 启动代码就是这样做的。  

    那么 MSP430中的引导代码和 BSL 之间有什么区别 ? 这与 STM32架构中的 bootloader 和 IAP 相似吗?

    [/报价]

    我不熟悉 STM32中的 IAP、但引导代码只是 MSP430中启动时运行的默认代码、它会检查要运行的正确的引导加载程序(包括在需要时设置 SYSBSLPE 位)并执行一些其他的常规操作、如加载校准值。  

    BSL 代码实际上会在满足 BSL 调用条件时运行、并管理如何通过 I2C、USB 或 UART 等其他接口将数据实际写入器件上的闪存。

    此致、
    Brandon Fisher

    [/quote]