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 上。
我通过调用以下函数来编程调用 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、
感谢您对此进行深入研究。 下面是有关我已经尝试过的内容的更多信息。
使用 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
我认为在本主题中也解决了类似的问题:
最后、我想他们在跳转到 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 成功、而另一个应用程序失败。 我缺少什么?