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.

[参考译文] MSP432P401R:BSL Scripter 无法在 Linux 上运行

Guru**** 2538960 points
Other Parts Discussed in Thread: MSP-FET, MSPBSL

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/594448/msp432p401r-bsl-scripter-not-working-on-linux

器件型号:MSP432P401R
主题中讨论的其他器件: MSP-FETMSPBSL

您好!

我自己编译了 BSL Scripter、并使其在运行 Debian Linux 的 ARM 架构上运行。

那么、这里是输出:

根目录@:/BSL_QT#./BSL_QT MSP432/script_MSP432_uart.txt
--------------------------------------
BSL Scripter 3.2.1
用于 BSL 编程的 PC 软件

--------------------------------------
输入文件脚本为:/home/BSL_QT/MSP432/script_MSP432_uart.txt
//
//脚本示例 MSP432 UART BSL
//设备:MSP432P401R
//将 Blink 应用程序下载到
//MSP432器件
//
日志
模式 P4xx UART 9600 /dev/ttymxc3
[ERROR_MESSAGE] BSL P432的初始化失败! 退出脚本编辑器!

 

我是否必须首先使用 BSL 配置刷写 MSP432?

我使用的是 UART BSL 端口 P1.2和 P1.3、它们在我的 Linux 系统中工作正常、因为我在我的应用中使用它们。

错误消息来自源代码的类 UartComm:

空 UartComm::transmitP4xx 初始化()

const uint8_t loopInitialization = 10;
bool initP432 = false;
uint8_t uartTxBuffer[1]={0xFF};

for (uint8_t I = 0;I < loopInitialization;I++)

ACK = 0xFF;
升压::系统::ERROR_code EC;
升压::ASIO::写入(端口、升压::ASIO::缓冲器(uartTxBuffer、1)、EC);
如果(EC)

抛出 std::runtime 错误("写入时出错...");

receiveBuffer(-1);
如果(ACK = 0x00)

initP432 = true;
中断;

if (initP432 == false)

抛出 std::runtime 错误("[error_message] BSL P432的初始化失败! 退出脚本编辑器!");<---------------------- 它在这里抛出消息

其他

std:::cout <<" BSL P432初始化成功!" << std::endl;

ACK 来自"BslResponseHandler"类、  0x00表示 静态常量 uint8_t flash_ACK = 0x00;

BSL Scripter doenst 接收0x00、这会导致脚本编写器停止。

但为什么 MSP432不发回0x00、而是另一个值?

OBS:还测量了 RX 和 TX UART 线路、通信正在运行

谢谢、

Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    感谢您发帖。
    让我来看看这个、然后返回给您。

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

    如果地址@0x0-0x100的器件仍然为空、则将调用 BSL 并使用0x00进行回复。
    您以前是否对器件进行过编程?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我发现了以下内容:

    "MSP432 MCU
    对于 MSP432 BSL UART、在空白器件上调用 BSL 不使用 RST 和 TST
    引脚。 相反、BSL Scripter 从所选波特率(例如9600或19200)开始、然后
    将"0xFF"发送到 BSL。 对于这些器件、调用字节(而不是调用序列)
    调用 BSL。 MSP-BSL"Rocket"和 MSP-FET 不会如中所示生成调用序列
    MSP430。 如果调用 MSP432器件中的 BSL、则器件返回"0x00"
    成功状态。 如果未返回"0x00"、BSL Scripter 会在屏幕上显示"Initialization Failed"(初始化失败)。
    当器件已经被编程(@0x0至)时、使用"0xFF"的调用无法成功
    @0x100已填充)。 在这种情况下、必须使用硬件调用来调用 BSL。 原因
    有关通过硬件调用配置 BSL 的详细信息、请参阅引导加载程序(BSL)配置
    SimpleLinkTmMSP432Tm安全和更新工具用户指南的一部分"

    在该文档中、它说:
    "对于已编程的器件、每次器件启动时、都会执行主应用程序。 以运行 BSL
    相反、可通过调用 BSL 代码并在已编程器件上执行固件更新
    软件或硬件调用。 有关详细信息,请参阅《MSP432TmSimpleLinkTm微控制器引导加载程序》
    (BSL)用户指南。 MSP432 MCU 的安全特性可为 BSL 提供配置
    硬件调用。"

    在该文档中:

    "4.3.1软件 BSL 调用
    BSL 在地址0x0020:2000处有一个 API 表、应用程序可以调用该表。 该表包含
    启动 BSL 执行的函数的地址。 应用程序必须通过一组特定的
    决定以下内容的参数:
    BSL 接口(自动、UART、I
    2C、SPI)
    BSL I
    2C 从机地址(默认= 0x48)"

    "以下 C 代码示例演示了如何使用 API 表中的地址来启动 BSL
    并通过应用程序传递 BSL 进入函数参数:
    #define BSL_Param 0xFC48FFFF // I2C 从地址= 0x48、接口选择=自动
    #define BSL_API_TABLE_ADDR 0x00202000 // BSL API 表的地址
    #define BSL_entry_function (*((uint32_t *) BSL_API_TABLE_ADDR)
    (((void (*)()) BSL_Entry_function)((uint32_t) BSL_Param);//使用给定的 BSL 参数调用 BSL



    如何以及在何处使用 C 代码?
    我是否必须更改 BSL Scripter 以便它可以通过 MSP432的 BSL API 启动 BSL 激发?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 msp432p401r.h 文件中找到了该 BSL 输入函数:

    /*********
    * BSL *
    秘书长的报告 /
    #define BSL_DEFAULT_PARARAM ((uint32_t) 0xFC48FFFF) /*!< I2C 从地址= 0x48、接口选择= Auto */
    #define BSL_API_TABLE_ADDR ((uint32_t) 0x00202000) /*!< BSL API 表的地址*/
    #define BSL_entry_function (*(((uint32_t *) BSL_API_TABLE_ADDR))

    #define BSL_AUTO_INTERFACE ((uint32_t) 0x0000E0000) /*!<自动检测接口*/
    #define BSL_UART_interface ((uint32_t) 0x0000C0000) /*!< UART 接口*/
    #define BSL_SPI_interface ((uint32_t) 0x0000A0000) /*!< SPI 接口*/
    #define BSL_I2C_interface ((uint32_t) 0x000080000) /*!< I2C 接口*/

    #define BSL_Invoke (x) ((void (*)()) BSL_Entry_function)((uint32_t) x)/*!<使用参数*/调用 BSL

    在我的案例中:

    X= 0xFC48F8FF (I2C 从地址48和接口选择 UART)


    因此、我认为我必须在 MSP432应用程序中实施 C 函数代码、并在启动 BSL Scripter 之前首先调用它。
    对吧?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此、我执行了一个函数、并在 Diong BSL 脚本之前通过 UART 进行调用。
    在函数中、我调用 BSL_invoke fusion 并将我的参数传递为参数。
    现在、我启动 BSL Scripter 并遇到相同的问题:
    根目录:/home/devel/BSL_QT ./BSL_QT MSP432/script_MSP432_uart.txt
    --------------------------------------
    BSL Scripter 3.2.1
    用于 BSL 编程的 PC 软件
    2000年1月01日03:54:11
    --------------------------------------
    输入文件脚本为:/home/devel/BSL_QT/MSP432/script_MSP432_uart.txt
    //
    //脚本示例 MSP432 UART BSL
    //设备:MSP432P401R
    //将 Blink 应用程序下载到
    //MSP432器件
    //
    日志
    模式 P4xx UART 9600 /dev/ttymxc3
    [ERROR_MESSAGE] BSL P432的初始化失败! 退出脚本编辑器!

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

    是的、它已经被编程、我正在尝试执行软件调用 BSL 的步骤、并在之后尝试运行 BSL 脚本程序。
    但我会遇到相同的问题。
    有什么想法吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Michael、

    情况可能是这样的:

    当地址@0h-@100为空或全部 FFh 时、将调用 MSP432中的 BSL (任何外设- UART、I2C 或 SPI)。 该区域是 BSL 密码、同时是中断矢量所在的位置。 对该区域进行编程后、我们无法以相同的方式调用 BSL。

    但是、我们已经调用了 BSL 硬件调用。 您编写参数来通过在 特定引脚中应用特定极性来调用 BSL。 当器件开始复位或从复位运行时、引导代码将在此引脚上看到极性。 如果它与您设置的配置相匹配、则将调用 BSL。

    配置闪存邮箱只需在信息内存中写入配置,重置设备,然后将配置存储在设备系统中。 示例可用:

    因此、我建议您首先使用您正在使用的 IDE (CCS/IAR/Keil)中的 JTAG 擦除器件、然后尝试再次调用 BSL。 这应该起作用。 然后、我们可以确认之前的调用不起作用、因为器件已编程。 然后再次擦除器件、配置 BSL 硬件调用参数。


    如果您有其他问题、请告诉我。

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

    那么、MSP432上的软件 BSL 是否无法调用?
    我使用 CCS 对 MSP432进行批量擦除、但遇到了相同的问题。
    我的设置有什么问题?
    我可以测量 UART RX 和 TX 线路、它正在发送数据。
    但为什么 MSP432没有响应?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Fatmawati、
    我在 CCS 上执行了批量擦除、但我是否应该考虑允许在 CCS 上读取/写入/擦除 BSL 的任何设置?

    Linux 系统将0xFF 从端口1.2中的 MSP432发送到 UART-RX 线。

    因此、脚本在循环中发送0xFF 值的10倍、然后抛出错误消息。

    MSP432的 UART-TX 线始终为高电平。  

    我的问题是 MSP432未响应或未对 BSL 器件进行编程。

    在这些步骤中、您可以帮助我准备 MSP432用于 BSL 吗?

    OBS:

    我在 Windows 上下载并安装 BSL 脚本、使用 USB/UART 转换器、我在 Windows 上有一个 COM 端口、并尝试刷写相同的脚本文件。

    我用红色的 MSP432 Launchpad 拔出跳线、仅保留3V3和 GND。

    我在 RX 和 TX 引脚中连接 USB/UART 转换器 TX 和 RX。 因此设置正确、现在尝试使用 Win BSL 脚本编写器进行闪存、但得到相同的错误。

    这是日志输出:

    --------------------------------------
    BSL Scripter 3.2.1
    用于 BSL 编程的 PC 软件
    2017年5月11日09:35:48
    --------------------------------------
    输入文件脚本为:C:/Users/ml/Desktop/MSPBSL_Scripter_win/ScriptExample/P4xx_uart/script_P4xx_uart.txt
    模式 P4xx UART 9600 COM6奇偶校验
    [ERROR_MESSAGE] BSL P432的初始化失败! 退出脚本编辑器!

    我还测量了 TX 和 RX 线路、遇到了与 Linux 机器上相同的问题。 因此 MSp432没有响应 BSL 脚本编写器命令。

    在这里、我还通过 launchpad 上的 CCS 执行了恢复出厂设置。

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

    您好 Fatmawati、

    我现在下载最新的 CCS 7、为 MSP432设置一切。
    现在、我在 BSL 脚本编写器上也有相同的错误。
    请帮帮我。

    OBS:

    这里是我使用示波器测量的结果的图片。 脚本编写器会将此命令发送10次至 MSP432。

    此致、

    Michael

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

    安装 CCS7并设置出厂复位 MSP432 Launchpad 红色后、我再次测量了 RX 和 TX、看起来 MSP432将其 TX 线拉至低电平:

    问题是即使 MSP432发回0x00、BSL Scripter 也会继续发送0xFF。

    BSL Scripter 在这里抛出与之前相同的错误。

    有什么想法吗?

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

    您好、Michael、

    很抱歉耽误你的回答。 您能告诉我您使用的是哪款 LaunchPad 吗? 器件是修订版 C 还是修订版 D?

    我最好也在我的 PC 中尝试此操作、看看会发生什么情况。

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

    您好 Fatmawati、

    它是 Launchpad MSP432P401修订版2.0 (红色)。

    我没有找到任何带有 C 或 D 的修订版代码、只有2.0

    感谢您观看本演示。

    此致、

    Michael

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

    您好、Michael、

    很抱歉耽误你的回答。 这可能是原因:

    432中的 BSL 采用奇偶校验格式。 Launchpad 中的反向通道 UART 不会。 请尝试使用命令:mode P4xx UART 9600 COM 偶校验。

    请记住、对@0h-@100h 上的存储器进行编程后、您无法调用 BSL。 您可以参阅此应用手册以设置 BSL 硬件调用。 http://www.ti.com/lit/an/slaa659c/slaa659c.pdf

    我希望这也是您的原因,现在您可以与 BSL 通信:)

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

    我在示例中添加了奇偶校验、我有相同的问题。
    我测量 TX UART、并在末尾有奇偶校验位、但 MSP432 doenst 执行任何操作。
    您可以在 Windows 或 Linux 中使用 MSP432 LaunchPad 来执行 BSL 吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、

    我在 Windows 和 Linux PC (Ubuntu 14.04)中使用 launchpad (Red One)和 BSL Scripter、两者都可以正常工作。 您还可以尝试使用 CCS 开发应用吗? 我建议使用调试器擦除所有主存储器和信息存储器。 如果器件完全空、则应调用 BSL。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Fatmawati、

    如何使用板载调试器擦除 CCS 上的所有主存储器和信息存储器?
    我只知道如何对 MSP432进行出厂擦除。

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

    出厂复位将擦除主存储器、这应该足以调用 BSL。

    此致、

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

    HI DavidL、Hi Fatmawati、

    很抱歉让你们失望、但我仍然无法工作。

    因此、您可能会发现我在执行以下步骤时出错了:

    在目标配置上首次批量擦除 CCS 上的 MSP432 ->加载选择配置->显示所有内核->连接到目标->脚本->默认-> MSP432_factory_Reset:

    2-检查 COM 端口并更改 UART 脚本 msp432 BSL 示例

    3-带有示例脚本的 Exceute BSL

    4-测量 MSP432的 RX 和 TX 线:

    BSL Scripter 尝试将0xFF 发送到 MSP432 10次、我不知道、但 MSP432看起来像是返回0x00

    但 BSLScripter doenst 可能会识别它。

    有什么想法吗?

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

    您好、Michael、

    感谢您尝试我们的建议。 接下来、我建议确保器件上的 BSL 应用程序未损坏。 然后、让我们尝试对 BSL 进行重新编程。 BSL 位于闪存信息存储器内、因此您可以对其进行重新编程。 如果您尚不熟悉、请执行以下步骤:

    1. 在以下位置下载软件包:
    2. 在 CCS 中导入工程(应适用于上述6.1.3版)。 您可以将项目复制到工作区中或直接导入。
    3. 在 CCS 中、以释放模式编译工程
    4. 成功构建后、但在对器件进行编程之前、请转至 Project Properties
    5. 在左侧的列表中、选择"Debug"
    6. 然后、在右侧的下一列中、有 MSP432设置
    7. 在右侧的下一列中、选择擦除方法作为擦除主存储器和信息存储器、同时选中允许 BSL 信息存储器的复选框
    8. 然后、您可以开始对 BSL 进行编程。
    9. 关闭/终止调试会话、然后再次尝试与 BSL 通信
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Fatmawati、

    您可以向我发送链接吗?

    这一次是否是 Custom-BSL432?:    

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

    您好、Michael、

    当然、很抱歉、我之前忘记了复制:

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

    您好 Fatmawati、

    非常感谢!

    你拯救了我的一天

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

    您好、Michael、

    很高兴它在最后工作! )
    顺便说一下、它是否还与 ARM 主机配合使用(我认为您使用处理器来替代 BSL Scripter)?