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 调用工作

Guru**** 2558440 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/600737/msp432p401r-hardware-bsl-invocation-doenst-work

器件型号:MSP432P401R

您好!

我将 flashmailbox.c 和 flashmailbox.h 文件添加到我的 CCS 工程中、并尝试通过硬件调用 MSP432上的 BSL。

我从这里得到的代码示例: e2e.ti.com/.../2189387

因此、在 main 内部、我将其放置在最顶部:

if (CheckFlashMailbox (COMMAND_BSL_CONFIG)!= BOOT_OVERRIDE_AND_MAILBOOST_operations_Success)

对于(i = 0;i < 10000;i++);
//按下 S1时执行重新引导复位
if ((P1->IN & BIT1)=0)

sysctl_rebootDevice();

如果我按住 MSP432 Launchpad 红色上的按钮 P1.1、CPU 启动后会转至"sysctl_rebootDevice()"。

在 Windows 端、我启动 BSL 脚本编写器、它无法与 MSP432通信:

    [ERROR_MESSAGE] BSL P432的初始化失败! 退出脚本编辑器!

当 MSP432为空或未刷写任何程序时、BSL Scripter 会起作用。

现在我已经刷写了一个闪存、我希望硬件在 MSP432上调用 BSL。

有什么想法吗?

OBS:我也尝试使用 BSL_CONFIG 示例工程、结果相同。

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

    您好、Michael、

     使用 P1.1进入硬件 可能不是 Launchpad 的好示例、因为 Booster Pack 接头上无法访问该引脚(换句话说、将该引脚拉至高电平将不容易)。 该示例是使用 MSP-ts432pz100 目标板开发的。

    无论如何、我建议您改用 P1.5。 请将邮箱配置更改为:

    /* BSL 参数
    *在端口1引脚5的高电平上使用硬件调用
    *使用 UART
    *
    BSL_CONFIG_HW_Invoke_Port1 | BSL_CONFIG_HW_Invoke_PIN5 |
    BSL_CONFIG_HW_Invoke | BSL_CONFIG_HW_Invoke_PIN_HIGH |
    BSL_CONFIG_INTERFIT_UART、 

     并使用跳线将 P1.5连接到3.3V、以便在您复位电路板后调用 BSL。

       希望这对您有所帮助。

      David

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

    我让它正常工作、而不是我使用的代码、我将其替换为以下代码:

    MAP_GPIO_setOutputHighOnPin (GPIO_PORT_P1、GPIO_PIN0);
    MAP_GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0);
    BSL_Invoke (BSL_CONFIG_HW_Invoke_Port1 | BSL_CONFIG_HW_Invoke_PIN0 |
    BSL_CONFIG_HW_Invoke | BSL_CONFIG_HW_Invoke_PIN_HIGH |
    BSL_CONFIG_INTERFIT_UART);

    P1.0连接到 Launchpad 上的 LED 1、我断开跳线并在3V3复位电路板时拉 P1.0、它正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:

    因此、当 CPU 将 BSL 设置为硬件调用时、它会卡在"BSL_Invoke (...)"中 功能。
    CPU doenst 返回并正常运行主代码。
    P1.0是高电平还是低电平是至关重要的、一旦 CPU 启动并进入 BSL_Invoke 函数、它就会保持在那里、BSL 脚本就会工作。
    为什么 CPU 会挂起?

    我还尝试通过向 CPU 发送一个 UART 命令(如"update")来调用软件 BSL、一旦它到达、我就执行以下操作:
    BSL_Invoke (BSL_CONFIG_INTERFIT_UART);
    但在这里、MSP432会重新编写 BSL 脚本。

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

    那么、这就是我为了使硬件调用工作而执行的操作:

    if (CheckFlashMailbox (COMMAND_BSL_CONFIG)!= BOOT_OVERRIDE_AND_MAILBOOST_operations_Success)

    // for (i = 0;i < 10000;i++);
    //按下 S1时执行重新引导复位
    if ((P1->IN & BIT0)=1)

    // sysctl_rebootDevice();
    BSL_Invoke (BSL_CONFIG_HW_Invoke_Port1 | BSL_CONFIG_HW_Invoke_PIN0 |
    BSL_CONFIG_HW_Invoke | BSL_CONFIG_HW_Invoke_PIN_HIGH |
    BSL_CONFIG_INTERFIT_UART);




    首先、我将 P1.0拉至高电平、然后我将 MSP432复位。 复位后、CPU 进入 if () case 并执行 BSL_Invoke。
    我将 P1.0拉至低电平、然后启动 BSL Scripter、它会使 MSP432闪烁、CPU 正常工作。