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.

[参考译文] MSP432WARE:MSP432P4

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1083946/msp432ware-msp432p4

部件号:MSP432WARE
《线程:UNIFLASH》中讨论的其他部件

您好,

我正在尝试使用 MSP432启动板上的 BSL 脚本编写器刷新程序。 我使用了 BSL 软件调用方法,如下所述。  它在初始化时卡住。

模式 P4xx UART 115200 COM10奇偶校验
[ERROR_MESSAGE] P4xx BSL 初始化失败! 退出编剧!

节目:-->

volatile bool jumpToBsl = false;

int main()
{
    int i=0;
    // Stop watchdog
    MAP_WDT_A_holdTimer();

    // Setup P2.0 with LED output to detect if the interrupt occurs
    MAP_GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN0);

    // Configure P1.1 as an input and enabling the interrupt
    MAP_GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN1);
    MAP_GPIO_interruptEdgeSelect(GPIO_PORT_P1, GPIO_PIN1, GPIO_HIGH_TO_LOW_TRANSITION);
    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN1);
    MAP_GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN1);
    MAP_Interrupt_enableInterrupt(INT_PORT1);
    MAP_Interrupt_enableMaster();

    while(1)
    {
        MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P2, GPIO_PIN0);
        __delay_cycles(2000000);

        if (jumpToBsl)

        {

            jumpToBsl = false;
            MAP_Interrupt_disableMaster();


            // Setup interrupt priorities into 0x00 before entering bootloader
            for (i=0; i < 240; i++) NVIC->IP[i] = 0;

            NVIC->ICER[0] = 0xFFFF;
            NVIC->ICPR[0] = 0xFFFF;
            NVIC->ICER[1] = 0xFFFF;
            NVIC->ICPR[1] = 0xFFFF;
            // Call the BSL with given BSL parameters
            ((void (*)())BSL_ENTRY_FUNCTION)((uint32_t)BSL_PARAM);

        }

    }

}


void PORT1_IRQHandler(void)
{
    uint32_t status;

    status = MAP_GPIO_getEnabledInterruptStatus(GPIO_PORT_P1);
    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, status);

    /* Toggling the output on the LED */
    if(status & GPIO_PIN1)
    {
        jumpToBsl = true;
    }

}

我尝试刷新下面提到的新 BSL 程序:
A. 项目属性>调试> MSP432设置>擦除方法>擦除主内存和信息内存
B. 允许 BSL 信息存储器擦除

但仍不起作用

我们将感谢您的帮助。

谢谢。

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

    您好,Shraddha,

    您的 BSL 硬件是什么? 是 BSL 火箭吗? 还是仅仅是 Lanuchpad 的 COM 端口?

    和 BTW,您是否使用 MSP432P 设计新项目?

    谢谢!

    此致

    约翰逊

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

    只需在 Launchpad 中使用 UART COM 端口。 我可以通过软件调用上述代码调用 BSL,而无需初始化任何其他模块。 我擦除了所有闪存,然后通过 Uniflash 刷新了 TI 的 BSL 程序。 这在 CCS IDE 中对我不起作用。

    现在我 有另一个问题,如果所有其他模块都已初始化 ,则不会进入 BSL 模式。 您能告诉我哪个模块可能会对此产生影响吗?

    我已经停止了 Systick 计时器和其他计时器,并且也禁用了 UART 模块(如以下 POST 中所述),但没有使用。

    https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/825967/ccs-msp432p4111-msp432-bsl-software-invocation-documentation-is-lacking

    谢谢你

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

    您好,Shraddha,

    这意味着什么?

    [引用 userid="499475" url="~/support/iclers/arm-based icroms-group/arm-based icros/f/arm-based icroms-forum-forume/1083946/msp432ware-msp432p4/4016262#4016262]\n 现在 我有另一个问题,如果所有其他模块都已初始化, 则不会进入 BSL 模式。 您能否告诉我哪个模块可能会对这一问题产生影响

    对于 BSL 调用,有以下模式:  

    • 已定义 I/O 的顺序
    • 空重置矢量调用 BSL
    • 从软件应用程序调用 BSL

    对于“空复位矢量调用 BSL”,如果闪存中只有一些代码,则 MSP432将不会进入 BSL 模式。

    对于其他两种调用模式,您必须使用硬件或软件。

    有关 BSL 的更多信息,请参阅本文档:
    https://www.ti.com/lit/ug/slau550aa/slau550aa.pdf

    谢谢!

    此致

    约翰逊