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.

[参考译文] 使用 BSL-Scripter 加载 MSP430FR5994 Launchpad 时出错

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/759828/error-loading-msp430fr5994-launchpad-using-bsl-scripter

器件型号:MSP430FR5994

我 无法使用 BSL-Scripter 将固件成功加载到 MSP430FR5994 LaunchPad 上。
我通过调用以下函数来编程调用 BSL:

int startBSL (char * pMagic){
if (strcmp (pMagic、magicString)!= 0) return -1;
__disable_interrupt ();//消除字符的回波
//跳转到 BSL 的 Z 区
((void (*)() 0x1000)();//跳转至 BSL
} 

我始终如一地从 BSL 获得如下响应:

--------------------------------------

用于 BSL 编程
的 BSL Scripter 3.2.0 PC 软件2018年12月31日19:15:33
-----------------
输入文件脚本为:C:/qfl/script_BSL.txt
模式 FRxx UART 9600 COM9奇偶校验
延迟200
延时200毫秒
详细
详细详细详细详细模式现已开启!
TX_BSL_VERSION
[80][01][00][19][e8][62]
<80><02><00><3b><04> <84>
[ERROR_MESSAGE] BSL 已锁定!
延迟200
延时200ms
RX_PASSWORD pass32_wrong.txt
阅读 txt 文件:C:\qfl\pass32_wrong.txt
[80][21][00][11][ff][ff][ff][ff][ff][ff][ff][ff][ff][ff][ff] [FF][ff][ff][ff][ff][ff][ff][ff][ff][ff][ [FF][ff][ff]
[ff][ff][ff][ff][ff][ff][ff][ [FF][ff][ff][ff][ff][ff][ff][ff][ff][ff][ [FF][ff][ff][ff][ff][ff][ff][ff][ff][ff][ [FF][ff][ff][ff]
[ff][ff][ff][ff][ff][00][00][91][fb]
<80>
[ack_error_message]未知的 ACK 值!
延迟2000
延迟2000 ms
RX_PASSWORD pass32_default.txt
阅读 txt 文件:C:\qfl\pass32_default.txt
[80][21][00][11][ff][ff][ff][ff][ff][ff][ff][ff][ff][ff][ff] [FF][ff][ff][ff][ff][ff][ff][ff][ff][ff][ [FF][ff][ff]
[ff][ff][ff][ff][ff][ff][ff][ [FF][ff][ff][ff][ff][ff][ff][ff][ff][ff][ [FF][ff][ff][ff][ff][ff][ff][ff][ff][ff][ [FF][ff][ff][ff][ff]
[ff][ff][ff][ff][ff][ [FF][ff][9e][E6]
<80>
[ACK_ERROR_MESSAGE]未知的 ACK 值!
//change_baud 比率115200
RX_DATA_BLOCK _loadfile.txt
读取 txt 文件:C:\qfl\_loadfile.txt
[80][24][00][10][40][00][00][00][00][00][00][00][00][00][00][00][00] [00][00][00][00][00][00]
[00][00][00][00][00][00] [00][00][00][00][00][00] [00][00][00][00][00][00] [00]
[00][00][00][00][00] [00][00][00][A2][68]
<80>
[ACK_ERROR_MESSAGE]未知的 ACK 值!
写入87字节的时间:0.03123秒
写入数据的速度:2.72 (KB/s)

我正在进入 BSL、因为我从 TX_BSL_VERSION 返回预期的响应字符串。
我希望 BSL 在之后对 FRAM 执行批量擦除
RX_PASSWORD pass32_wrong.txt
但是、我不清楚为什么我会得到"未知的 ACK 值!" 以响应
"Rx_password pass32_default.txt"
有人能不能建议这里有什么可能的错误?

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

    我将设置硬件以进行更多研究。 如果您有任何更新、请告诉我。

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

    Gary、

    感谢您对此进行深入研究。  下面是有关我已经尝试过的内容的更多信息。  

    使用 LaunchPad 的 MSP 应用 UART1以及基于 FTDI FT232的 USB-UART 桥接模块的 UART 接口  

    2. 尝试将 MSP430时钟从16MHz 更改为8MHz、同时复位 UART 模块。  我是根据 SLAU550P 的建议这样做的:

    TI 建议清除 BSL 应用程序中使用的任何模块寄存
    
    器的配置、因为外部应用程序的配置会中断 BSL 应用程序并导致意外行为。 

    这些操作均未更改上述症状、BSL 似乎对 TX_BSL_VERSION 正确响应、  

    当我使用逻辑分析仪监视 UART 线路时、MAP430FR5994再次正确响应 TX_BSL_VERSION 命令、BSL-Scripter 日志显示 MSP430以进行响应 而不是密码<80->、但逻辑跟踪根本不显示此响应。

    分析仪跟踪显示了对 TX_BSL_VERSION 的响应、大约40ms 后、我在 UART Tx 上看到来自固件应用程序的登录消息(指示复位或错误代码执行?)

    这发生在我测试过的2个 LaunchPad 上。

    John

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

    我认为在本主题中也解决了类似的问题:

    https://e2e.ti.com/support/microcontrollers/msp430/f/166/p/736686/2776295?tisearch=e2e-sitesearch&keymatch=bsl-scripter%20launchpad#pi320995=1

    最后、我想他们在跳转到 BSL 之前将时钟降低到1MHz、从而获得了成功。

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

    乔治

    非常感谢这个链接--我在搜索 E2E 时错过了这个链接。   我遵循 POST 的建议并将 MCLK 设置为1MHz、但我的症状没有变化-我无法将 BSL 设置为 MALL_ERASE 或加载固件。

    这是我现在的代码:

    if (strcmp (pMagic、magicString)!= 0) return -1;
    __disable_interrupt ();//消除字符的回波
    
    WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
    _bis_SR_register (SCG0);//禁用 FLL
    CS_setDCOFreq (CS_DCORSEL_1、CS_DCOFSEL_3);//将内部 DCO 范围设置为8MHz
    CS_initClockSignal (CS_MCLK、CS_DCOCLK_SELECT、CS_Clock_divider);// MCLK 为01MHz
    _BIC_SR_register (SCG0);//启用 FLL
    _DELAY_CYCLES (3);
    CF = CS_getMCLK ();
    FRAMCTL_A_configureWaitStateControl (FRAMCTL_A_ACCESS_TIME_CYCESS_1); //为以16MHz 运行的 FR5969添加 FRAM 等待状态
    /*此代码尝试通过复位外设、时钟等来解决 BSL 加载故障问题
    在 BSL 进入时*显示预期值*/
    EUSCI_A_UART_DISABLE (EUSCI_A0_BASE);
    debugTTL_high ();
    _DELAY_CYCLS (10UL);//在 MCLK = 1MHz 时为10us
    debugTTL_low ();
    
    //跳转到 BSL 的 Z 区域
    ((void (*)() 0x1000)();//跳转至 BSL

    再说一次、这是 BSL 响应:

    --------------------------------------
    
    
    用于 BSL 编程的 BSL Scripter 3.2.0 PC 软件2019-Jan-05 23:25:00
    ------------------
    输入文件脚本为:F:/Dropbox/Projects/QuSpin/BSL FR5969/BSL_Scripter/FR5969TEST/script_FRxx_uart.txt
    模式 FRxx UART 9600 COM9奇偶校验
    详细
    详细详细详细详细模式现已开启!
    TX_BSL_VERSION
    [80][01][00][19][e8][62]
    <80><02><00><3b><04> <84>
    [ERROR_MESSAGE] BSL 已锁定!
    批量擦除
    [80][01][00][15][64][A3]
    <80>
    [ACK_ERROR_MESSAGE]未知的 ACK 值!
    延迟200
    延时200ms
    RX_PASSWORD pass32_default.txt
    阅读 txt 文件:F:\Dropbox \projects\QuSpin\BSL FR5969\BSL_Scripter\FR5969test\pass32_default.txt
    [80][21][00][11][ff][ff][ff][ff][ff][ff][ff][ff][ff][ff] [FF][ff][ff][ff][ff][ff][ff][ff][ff][ff][ [FF][ff][ff]
    [ff][ff][ff][ff][ff][ff][ff][ [FF][ff][ff][ff][ff][ff][ff][ff][ff][ff][ [FF][ff][ff][ff][ff][ff][ff][ff][ff][ff][ [FF][ff][ff][ff][ff]
    [ff][ff][ff][ff][ff][ [FF][ff][9e][E6]
    [ACK_ERROR_MESSAGE]未知的 ACK 值!
    RX_DATA_BLOCK SigGenAn.txt
    读取 txt 文件: f:\Dropbox\projects\QuSpin\BSL FR5969\BSL_Scripter\FR5969test\SigGenAn.txt
    [80][04][05]
    [24][45][04][04][04][04][04][05][24][24][04][83][24][04][24][24][24][02][24][21][24][24][24][21][24][21][24][24][21][24][24][02][24][24][24][21][24][21][24][24][83][21][24][24][24][21][21][24][02][24][24][21][24][24][21][21
    
    [13][e0][11][0c][43][B1][13][5e][14][B1][13][b0][24][4F][14][82]
    [8e][20][09][13][16][B1][13][02][20][03][02][10][10][02][10][10][10][10][10][f2][02][20][10][10][10][10][10][f][04][10][10][10][f][02][04][10][10][f][10][10][10][10][10][10][10][f][10][10][
    
    [22][01][00][08][00][02][01][ff][F1][09][32][41][ff][08]
    [20][27][01][38][00][01][02][00][00][00][00][01][00][02][02][19][02][02][22][02][02][22][02][22][02][02][02][22][02][02][22][02][02][22][02][02][22][02][22][02][22][00][02][02][02][19][02]
    
    [A0][01][00][20][00][00][00][00][00][00][00][01]
    [20][00][00][00][00][00][00][00][00][00][00][0][FF][01][21][00]
    [000][00][00][00][00][00][00][00][00][00][08][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][08][00][00][00][00][00][00][00
    [20][01][ff][E1][08][22][00][40][00][00][02]
    [04][04][20][01][00][00][00][01][00][69][1f][20][04][04][00][02][02]
    [00][02][02][00][02][02][02][00][02][02][00][02][02][00][02][02][02][02][00][02][02][02][02][00][02][02][02][00][02][02][02][00][02]
    [EA][01][00][70][00][F2][01][00]
    [60][00][c0][01][00][00][00][00][00][63]
    <80>
    [ACK_ERROR_MESSAGE]未知的 ACK 值!
    写入所用时间279字节:0.3467秒
    写入数据的速度:0.7859 (KB/s) 

    我所做的一个解释不清的观察是、我在代码中生成的 GPIO 脉冲使用__delay_cycles (10UL),但我实际测量的是28us。   我使用 driverlib 来设置 MCLK、它报告 MCLK 为1MHz、因此脉冲应该是10us、而不是28us。

    无论如何、这个问题仍然对我开放。

    John

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

    需要报告的一些进展:  我集成到另一个 FR5994中、以编程方式跳转到 BSL 的代码、现在 Mass 擦除和固件加载工作正常。  

    我的假设是、当从第一个应用程序输入 BSL 时、处理器状态会导致 BSL 发生故障。   在跳转到 BSL 之前、两个应用中遵循 SLAU550P 建议的相同代码:

    1.在 MCLK <= 8MHz 时运行 BSL  

    我还将重置 串行通信使用的 eUSCI_A0、这就是我命令应用进入 BSL 的方式

    仍然、从一个应用程序调用 BSL 成功、而另一个应用程序失败。   我缺少什么?   

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我可以建议的是、在处理器启动后、代码会发生一些变化、并且这些变化会与 BSL 发生某种冲突- BSL 会期望将某个 BSL 设置为正常启动状态。 但我不知道您是如何发现问题的。 启动后、我从未有幸从固件跳转到 BSL、而是在我更改任何内容之前。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好

    我已从我的站点重现问题、并已将问题报告给相关团队。 如果我得到、我将更新结果。
    顺便说一下、您可以共享调用 BSL 成功的代码吗? 我想从我的站点运行它。

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

    我正在等待工具团队提供反馈、但尚未更新。 您是否有任何更新?

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

    由于工具团队需要更多时间来处理此问题、而且此主题结束日期即将到来、因此我将首先关闭此主题、但如果工具团队反馈给我、我将在此主题中更新此主题。
    谢谢