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.

[参考译文] CCS/MSP432P401R:使用 BSL 和标准 FTDI 芯片进行 UART 编程

Guru**** 2538955 points
Other Parts Discussed in Thread: MSP-GANG, MSP-FET, ENERGIA

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/834117/ccs-msp432p401r-uart-programming-using-bsl-with-standard-ftdi-chip

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

工具/软件:Code Composer Studio

您好!

我一直在阅读有关 BSL 的所有文档(http://www.ti.com/tool/MSPBSL)

其中讨论了如何触发 BLS 并使用 MSP-FET 或 MSP-GANG 对芯片进行编程。

此器件成本高昂、我们的电路板专为使用标准 FTDI 芯片的业余爱好者而设计、例如:  

https://www.digikey.es/product-detail/es/sparkfun-electronics/DEV-14050/1568-1505-ND/6674604?utm_adgroup=Interface+-+Modules&mkwid=sb7t8eVai&pcrid=345234088201&pkw=&pmt=&pdv=c&productid=6674604&slid=&gclid=EAIaIQobChMIvK7Zgsel5AIVAT0MCh29HwJjEAQYBCABEgJxNvD_BwE

如果可能、我们需要找到一种使用 CCS 或 Energia IDE 中的 FTDI 对芯片进行编程的方法。

是否有任何工具可以执行此操作?

如果没有、您是否有任何有关如何开发它的文档?

请注意、我使用的是 MSP432、而不是 MSP430

谢谢、

此致

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

    适配器的 RX 和 TX 线路几乎肯定可以正常使用使用 BSL-Scripter 的 P4xx 器件、但问题是首先调用 BSL。

    对于使用 BSL-Scripter 进行闪存的 MSP430器件、已编译了一个修订版的 Scripter、使其本身生成调用序列、而不是依赖 MSP-FET 或 Rocket 来生成调用序列、从而允许使用诸如 FTDI 的通用适配器:

    https://github.com/drcrane/bslscripter-vs2017/releases

    即使 P4xx 是指定的系列、如果在模式行中包含调用选项、它也会执行该操作。  但是、该序列当然是具有共享 JTAG 引脚的 MSP430器件的序列、它使用适配器的 DTR 和 RTS 输出来生成序列。

    您可以将 RTS 线路连接到测试、而不是将其连接到指定用于调用 BSL 的 GPIO 端口位、并指定要调用的高电平状态、 并在该引脚上安装一个下拉电阻器、以确保在未连接 FTDI 的情况下它为低电平。  这可能起作用、因为在430调用序列中、RTS 在 DTR 使/复位为高电平大约10ms 之前变为高电平。

    问题是您的 FTDI 适配器、几乎所有这些适配器都不会推出 RTS。  而是使用 CTS。  因此、这可能是从脚本转换器进行硬件调用的主要问题、除非您想重新连接适配器或嵌入芯片。

    我对 P4xx BSL 调用的理解表明、您只需使用一根跳线即可从 Normal 位置移到 BSL 位置、将指定的调用端口引脚馈送为高电平或低电平。  用户可以将跳线移动到 BSL、连接 USB 适配器、然后启动器件、如果有、则只需点击"Reset"按钮即可。  然后在10秒内运行 Scripter。  闪烁后、他会将跳线移回正常位置。  或者、他只需在上电或复位以调用 BSL 时按住按钮即可。

    或者、您可以选择一些 UI 来使您的应用程序固件进入 BSL。

    因此、我认为适配器应该可以用于 Rx 和 Tx 线路、432基于单个 I/O 端口位的状态调用 BSL 的方法(比430硬件调用简单得多)应该可以让您很容易地实现。  现在、这是使用 Scripter。  我不知道以这种方式从 CCS 或 Energia 进行刷写、但我怀疑它会起作用。  请注意、至少对于 Scripter、您需要在模式行中包含奇偶校验选项、因为到8/E/1的转换通常由 MSP-FET 或 Rocket 完成。  我不知道 CCS 或 Energia 是否 有这样的选项。

    如果您能使其正常工作、我希望您能回来描述您是如何做到的。

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

    尊敬的乔治:

    感谢您花时间回复。 您的解释非常有帮助。

    我在使器件(BSL)应答 BSL 脚本编写器时遇到问题。 我正在使用脚本编写器的 v3.0.4.1、尝试了 OS X 和 Windows

    器件似乎进入 BSL 模式。 调用 BSL 的行之后的代码未执行、这表示已向我正确调用 BSL。

    FTDI 芯片似乎正在向具有奇偶校验位的器件(0xFF)发送正确的命令。

    BSL 调用和0xFF 命令之间的过期时间为~3秒(远小于 BSL 超时)

    FTDI 芯片连接到 P1.2和 P1.3

    我从未擦除过芯片的 BSL 部分。 我所做的唯一一件事是使用具有 CCS 的 J-Link 对芯片进行编程。 我将数据附加到存储器位置0x0020 2000中、以便您可以检查它们是否正常。

    请参阅以下使用逻辑分析仪的数据传输截获、以及我用于开票 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)))
    
    //以下代码位于 main (
    1)内部时(1)
    {
    UART_WRITE (UART、"进入 BSL\n"、13);
    (((void (*)()) BSL_entry_function)(((uint32_t) BSL_Param);
    UART_WRITE (UART、"fail\n"、5);
    vTaskDelay (1000 / portTIK_PERIOD_MS);
    } 

    下面是我使用的脚本:

    日志
    模式 P4xx UART 9600 /dev/tty.usbserial-FTWJXLVX 奇偶校验
    reboot_reset 

    这是 0x0020 2000中的数据

    J-Link>mem 0x0020 2000
    00000020 = 00 00 00 00 00 00 00 00 00 00 00 00 51 25 00
    00000030 = 6B 31 00 00 00 00 00 00 00 00 00 f1 24 00 05 55 00
    00000040 = 6B 31 00 6B 31 00 6B 31 00 6B 31 00 6B 31 00 6B 31 00
    00000050 = 6B 31 00 6B 31 00 6B 31 00 6B 31 00
    00000060 = 6B 31 00 00 6B 31 00 00 6B 31 00 6B 31 00
    00000070 = 6B 31 00 00 6B 31 00 00 6B 31 00 6B 31 00 6B 31 00 6B 31 00
    00000080 = 6B 31 00 00 6B 31 00 6B 31 00 00 6B 31 00 00 6B 31 00
    00000090 = 6B 31 00 00 6B 31 00 6B 31 00 00 6B 31 00
    000000A0 = 6B 31 00 6B 31 00 6B 31 00 00 6B 31 00 6B 31 00 6B 31 00
    000000B0 = 6B 31 00 00 6B 31 00 00 6B 31 00 00 00 6B 31 00 00 00 00 6B 31 00 00 00 6B 31 00 00
    000000C0 = 6B 31 00 00 6B 31 00 6B 31 00 6B 31 00 00 00 6B 31 00
    000000D0 = 6B 31 00 6B 31 00 6B 31 00 00 6B 31 00
    000000E0 = 6B 31 00 00 6B 31 00 00 00 00 6B 31 00 00 00 00 00 6B 31 00 00 00 6B 31 00 00 6B 31 00
    000000F0 = 6B 31 00 6B 31 00 6B 31 00 6B 31 00 6B 31 00 00 6B 31 00
    00 00000100 = 6B 31 00 6B 31 00 00 6B 31 00 00 6B 31 00
    00000110 = 6B 31 00 00 6B 31 00 00 6B 31 00 6B 31 00
    00000120 = 6B 31 00 00 6B 31 00 6B 31 00 6B 31 00 6B 31 00 6B 31 00
    00000130 = 6B 31 00 00 6B 31 00 6B 31 00 00 6B 31 00 00 00 00 00 00 00 00000140
    = 6B 31 00 00 00 2D E9 F0 4F 80 46 00 20 B8 F1 01 0F
    00000150 = AD F1 14 0D 01 90 06 D0 B8 F1 02 0F 18 BF B8 F1
    00000160 = 04 0F 40 5E F0 81 B4 48 C1 68 01 29 40 F0 56 81
    00000170 = 02 24 B8 F1 0F C4 60 07 D0 10 20 B8 F1 04 0F
    00000180 = 02 90 04 BF 01 20 01 90 02 E0 08 20 01 24 02 90
    00000190 = 4F F0 00 70 D0 F8 34 08 00 6A 80 47 4F F0 00 71
    000001A0 = B8 F1 0F 01 F6 34 01 21 D1 F0 B1 40 1E
    000001B0 = 19 D0 C0 1E 14 D0 40 1E 0F D0 C0 1E 0A D0 40 1E
    000001C0 = 05 D0 4F F0 FF 30 9C 4A 01 21 D1 60 2B E1 4F F0
    000001D0 = 19 0A 0D E0 4F F0 18 0A E0 4F F0 15 0A 07 E0
    000001E0 = 4F F0 14 0A 04 E0 4F F0 11 0A 01 E0 4F F0 10 0A
    000001F0 = 01 99 20 46 04 F0 DC FF 00 28 E4 D1 B8 F1 02 0F
    00000200 = 18 BF B8 F1 04 0F 40 F0 A5 80 88 48 00 78 01 28
    00000210 = 40 F0 A0 80 87 48 80 1F 86 88 44 89 89 89 C1 88
    00000220 = 02 88 45 88 34 43 23 43 43 4F F6 FF 74 19 43 84 EA
    00000230 = 01 03 1A 40 29 40 11 43 41 80 C1 88 03 91 19 43
    00000240 = C1 80 86 8C 43 8D 82 8D C1 8C 07 8C 45 8C 33 43
    00000250 = 1A 43 11 43 84 EA 01 02 17 40 29 40 39 43 41 84
    00000260 = C1 8C 04 91 11 43 C1 84 B0 F8 44 70 B0 F8 4A 50
    00000270 = B0 F8 4C 30 B0 F8 46 10 B0 F8 40 20 B0 F8 42 60
    00000280 = 3D 43 2B 43 19 43 84 EA 01 03 1A 40 31 40 11 43
    00000290 = A0 F8 42 10 B0 F8 46 B0 4B EA 03 01 A0 F8 46 10
    000002A0 = B0 F8 64 60 B0 F8 6A 30 B0 F8 6C 20 B0 F8 66 10
    000002B0 = B0 F8 60 70 B0 F8 62 50 33 43 1A 11 43 84 EA
    000002C0 = 01 02 17 40 29 40 39 43 A0 F8 62 10 B0 F8 66 90
    000002D0 = 49 EA 02 01 A0 F8 66 10 B0 F8 84 70 B0 F8 8A 30
    000002E0 = B0 F8 8C 20 B0 F8 86 10 B0 F8 80 50 B0 F8 82 60
    000002F0 = A4 46 3B 43 1A 43 11 43 8C EA 01 02 15 40 31 40
    00000300 = 29 43 A0 F8 82 10 B0
    
    F8 86 40 44 EA 02 01 A0 F8 00000310 = 86 10 B0 F8 24 61 B0 F8 2A 31 B0 F8 2C 21 B0 F8 00000320 = 26 11 B0 20 71 B0 F8 22 51 33 43 1A 43 63 46
    00000330 = 11 43 4B 40 1F 40 01 EA 05 02 3A 43 A0 F8 22 21
    00000340 = B0 F8 26 51 81 F0 FF 03 45 EA 03 01 F0 FF 01
    00000350 = A0 F8 26 11 05 F0 3C F9 B8 F1 01 0F 07 46 21 D0
    00000360 = B8 F1 02 0F 18 D0 32 4E 70 88 00 F0 40 0A BA F1
    00000370 = 40 0F 05 D0 4F F0 00 70 D0 F8 48 08 40 68 80 47
    00000380 = B6 F8 0C 64 06 F0 80 06 80 2E 05 D0 4F F0 00 70
    00000390 = D0 F8 64 08 00 68 80 47 00 98 00 68 80 69 01 46
    000003A0 = 20 20 04 E0 00 98 00 68 80 01 46 50 46 88 47
    000003B0 = 21 49 03 20 B8 F1 04 0F C8 60 10 D1 BA F1 40 0F
    000003C0 = 05 D0 4F F0 00 70 D0 F8 48 08 00 68 80 47 80 2E
    000003D0 = 05 D0 4F F0 00 70 D0 F8 64 08 40 68 80 47 B8 F1
    000003E0 = 02 0F 18 BF B8 F1 04 0F 10 D1 10 48 00 78 01 28
    000003F0 = 0C D1 10 48 03 99 01 80 04 9E 06 84 A0 F8 40 B0
    00000400 = A0 F8 60 90 A0 F8 80 40 A0 F8 20 51 0F B1 03 F0
    00000410 = 89 FB 02 98 01 99 04 F0 CB FE D4 E6 6F F0 04 00
    00000420 = 01 E0 6F F0 01 00 05 B0 BD E8 F0 8F 12 5D 00
    00000430 = 00 44 00 40 06 4C 00 40 E0 8C 00 20 2D E9 F0 4F
    00000440 = 83 46 DB F8 04 50 DB F8 08 60 0C 46 AD F1 24 0D
    00000450 = 05 F0 16 F8 29 78 49 08 03 D3 05 F0 BD F9 00 20
    00000460 = 45 E1 29 78 41 F0 01 29 70 05 F0 B5 F9 B0 8C
    00000470 = C0 F3 84 27 C0 F3 03 18 3F B1 00 F0 07 01 C0 F3
    00000480 = 84 22 40 46 04 F0 84 FF B0 8C 4F F0 00 79 D9 F8
    00000490 = 24 18 CA 69 00 F0 07 00 4F F0 01 0A 13 46 0A FA
    000004A0 = 00 F1 52 46 40 46 98 47 F0 8C 09 F6 24 07 C0 F3
    000004B0 = 84 23 C0 F3 03 18 3B B1 00 F0 07 01 C0 F3 84 22
    000004C0 = 40 46 04 F0 65 FF F0 8C 39 68 CA 69 00 F0 07 00
    000004D0 = 13 46 0A FA 00 F1 52 46 40 46 98 47 0D 20 04 F0
    000004E0 = 4B FE 05 F0 D5 FA 07 46 05 F0 1C FB 69 46 03 F0
    000004F0 = E1 FE 30 7B 5F FA 87 F8 40 28 D0 DD F8 08 90
    00000500 = B0 69 31 7D A2 69 4B 46 05 F0 76 F8 B0 F1 FF 3F
    00000510 = 29 D0 B8 F1 00 0F 2E D0 00 27 38 46 69 46 03 F0
    00000520 = C9 FE B0 69 31 7D A2 69 02 9B 05 F0 65 F8 B0 F1
    00000530 = FF 3F 07 D1 E9 6F 0A FA 07 F0 08 43 E8 67 78 1D
    00000540 = 04 F0 1A FE B8 F1 01 08 07 F1 01 07 E5 D1 12 E0
    00000550 = DD F8 10 90 B0 69 31 7D A2 69 4B 46 05 F0 4C F8
    00000560 = B0 F1 FF 3F 07 D1 0D 20 04 F0 A2 FB 28 78 00 F0
    00000570 = FE 00 28 70 73 E7 50 46 04 F0 FE FD 5D 4A 05 F1
    00000580 = 68 00 60 21 5B 46 04 F0 FB FF 05 A8 05 F0 73 F9
    00000590 = B1 68 70 06 91 58 CD F8 14 B0 05 AA 04 F0
    000005A0 = 83 F8 68 60 68 00 28 29 D0 05 A8 05 F0 03 FA
    000005B0 = 60 78 8D F8 14 A0 40 B9 00 20 05 A9 04 F0 12 FA
    000005C0 = A8 65 A8 6D D8 B1 4D 48 00 E0 20 69 28 66 20 78
    000005D0 = C8 B9 00 20 05 A9 04 F0 05 FA 28 64 28 6C 70 B1
    000005E0 = 47 48 A8 64 05 A8 64 F9 46 48 CD F8 1C B0 000005F0
    = 00 21 05 AA 02 F0 0C FF A8 60 A8 68 48 B9 58 46
    00000600 = 03 F0 74 F9 2B E7 68 00 F0 FB 00 68 70 E0 68
    00000610 = A8 64 F1 69 32 6A 05 F1 14 00 05 F0 30 FA 20 78
    00000620 = 29 78 40 00 01 F0 FD 01 00 F0 02 00 08 43 28 70
    00000630 = 61 78 00 F0 FB 00 89 00 01 F0 04 01 01 43 29 70
    00000640 = 20 7D 01 F0 DF 01 40 01 00 F0 20 00 08 43 28 70
    00000650 = 61 7D 00 F0 F7 00 C9 00 01 F0 01 01 43 29 70
    00000660 = A0 7D 01 F0 EF 01 00 01 00 F0 10 00 08 43 28 70
    00000670 = E1 7D 00 F0 00 BF 00 89 01 01 F0 40 01 43 29 70
    00000680 = 60 68 64 A0 68 E8 65 A0 69 E8 60 7F 2F 78
    00000690 = 28 74 A0 7F 1C 49 68 74 22 7F 07 F0 02 03 07 F0
    000006A0 = 08 00 EB C3 00 40 18 AA 74 03 C8 05 F1 2C 03
    000006B0 = 83 E8 03 00 24 EC 64 4A 6C 63 28 78 6C 65
    000006C0 = 00 F0 7F 00 28 70 68 78 EC 63 00 F0 EF 00 68 70
    000006D0 = 68 78 2C 65 40 F0 08 00 68 70 69 78 AC 63 28 46
    000006E0 = 01 F0 FD 01 69 70 31 02 F0 B2 F9 58 46 09 B0
    000006F0 = BD E8 F0 8F 15 4F 00 00 11 28 00 9D 5B 00
    00000700 = 8D 5B 00 C1 00 5A 00 88 5D 00 2D E9 F0 47
    00000710 = 9A 4C 06 46 A0 69 00 27 AD F1 68 0D 00 1D B0 42
    00000720 = 40 F2 27 81 96 4D 28 68 00 69 01 46 4F F4 00 30
    00000730 = 88 47 28 00 68 03 21 3A 46 03 46 02 20 98 47
    00000740 = 28 68 00 68 03 21 4F F0 80 52 03 46 04 20 98 47
    00000750 = 28 68 00 68 03 68 00 68 03 21 4F F0 80 52 03 46 08 20 98 47
    00000760 = 28 68 40 68 01 46 38 46 88 47 04 2E 06 D3 60 69
    00000770 = 31 01 01 01 EB 86 11 A1 F5 A0 71 03 E0 81 48 31 01
    00000780 = 01 EB 86 11 09 18 50 22 68 46 02 F0 7F FF 20 7F
    00000790 = 00 28 63 D0 94 F8 28 30 7B 48 4B B1 41 89 41 F0
    000007A0 = 08 01 41 81 89 4F F6 F7 73 03 EA 02 01 81 81
    000007B0 = 94 F8 2A 30 4B B1 41 89 41 F0 01 41 81 82 89
    000007C0 = 4F F6 FE 73 03 EA 02 01 81 21 6A 4F F4 00 40
    000007D0 = 04 F0 F2 FF DD F8 10 80 B8 F1 05 0f 08 D0 06 98
    000007E0 = 05 28 05 D0 09 98 05 28 02 D0 0A 98 05 28 13 D1
    000007F0 = 38 46 04 D9 F0 FE 94 F8 29 00 40 F2 F7 51 01 F0
    00000800 = C7 FB 00 28 00 F0 B5 80 94 F8 2C 00 20 B1 28 68
    00000810 = 00 6A 01 46 02 20 88 47 B8 F1 00 0F 05 D0 06 98
    00000820 = 18 B1 09 98 08 B1 0A 98 C0 B9 94 F8 00 28
    00000830 = 0C BF 63 6A 4F F4 00 73 01 20 04 F0 B5 FE 53 49
    00000840 = 18 46 01 F0 17 FC 00 28 00 F0 93 80 94 F8 2C 00
    00000850 = 20 B1 28 68 00 6A 01 46 01 20 88 47 28 6A 80 69
    00000860 = 01 46 00 98 88 47 00 28 00 F0 83 80 A8 68 0C 9C
    00000870 = 40 6D 21 46 02 46 38 46 90 47 A8 68 40 6D 21 46
    00000880 = 02 46 01 20 90 47 9D F8 34 00 DD F8 10 A0 DD F8
    00000890 = 24 80 DD F8 28 90 06 9C A0 B9 A8 68 C0 68 02 46
    000008A0 = 38 46 01 46 90 47 A8 68 C0 68 01 21 02 46 38 46
    000008B0 = 90 47 A8 68 C0 68 39 46 02 46 01 20 90 47 A8 68
    000008C0 = C0 68 13 E0 A8 80 68 02 46 38 46 01 46 90 47
    000008D0 = A8 68 80 68 01 21 02 46 38 46 90 47 A8 68 80
    000008E0 = 39 46 02 46 01 20 90 47 A8 68 80 68 02 46 01 20
    000008F0 = 01 46 90 47 03 98 07 28 1C BF 29 68 09 69 03 D1
    00000900 = 28 68 00 6B 01 46 13 98 88 47 28 05 9A 00 68
    00000910 = 51 46 03 46 02 20 98 47 28 68 07 9A 00 68 21 46
    00000920 = 03 46 04 20 98 47 28 08 9A 00 68 21 46 03 46
    00000930 = 08 20 98 47 28 68 00 68 41 46 01 22 03 46 4F F0
    00000940 = 80 50 98 47 28 68 0B 9A 00 68 49 46 03 46 01 20
    00000950 = 98 47 0E 98 14 90 0F 9F 15 97 10 9C 16 94 12 9B
    00000960 = 18 93 11 9D 17 95 14 A8 05 F0 F4 F8 08 48 01 27
    00000970 = 06 60 38 46 1A B0 BD E8 F0 87 C0 46 04 5D 00
    00000980 = 14 08 00 02 E8 8A 00 20 4D 00 40 EC 17 09 00
    00000990 = F0 8C 00 20 00 B5 AD F1 24 0D 03 91 02 90 00 20
    000009A0 = 04 90 02 98 05 90 00 20 06 90 05 98 38 B9 20
    000009B0 = 80 F3 11 88 BF F3 4F 8F BF F3 6F 8F FE E7 05 98
    000009C0 = 01 6C 00 2001 B9 01 20 38 B9 20 20 80 F3 11 88
    000009D0 = BF F3 4F 8F BF F3 6F FE E7 04 F0 21 FD 00 21
    000009E0 = 00 22 10 B9 03 98 00 B1 01 22 02 B9 01 21 39 B9
    000009F0 = 20 80 F3 11 88 BF F3 4F 8F BF F3 6F 8F FE E7
    00000A00 = 04 F0 0C F9 05 98 80 6B 07 90 07 98 18 B3 07 98
    00000A10 = 05 99 40 1E 88 63 05 98 00 68 18 B9 04 F0 74 FF
    00000A20 = 05 99 88 60 05 98 00 69 08 B9 01 20 00 E0 00 20
    00000A30 = 68 B9 05 98 10 30 02 F0 97 FC 40 B1 49 4F F0
    00000A40 = 80 50 08 60 BF F3 4F 8F BF F3 6F 8F FF E7 04 F0
    00000A50 = CF FC 01 20 83 E0 03 98 80 B9 06 99 00 20 01 B9
    00000A60 = 01 20 38 B9 20 20 80 F3 11 88 BF F3 4F 8F BF F3
    00000A70 = 6F 8F FE E7 04 F0 BC FC 00 20 70 E0 04 98 20 B9
    00000A80 = 68 46 04 F0 65 FE 01 20 04 90 04 F0 B1 FC 05 F0
    00000A90 = 27 F8 04 F0 F8 C3 05 98 90 F9 44 00 B0 F1 FF 3F
    00000AA0 = 03 D1 05 99 00 20 81 F8 44 00 05 98 90 F9 45 00
    00000AB0 = B0 F1 FF 3F 03 D1 05 99 00 20 81 F8 45 00 04 F0
    00000AC0 = 97 FC 68 46 03 A9 02 F0 A1 FA 00 28 2B D1 05 98
    00000AD0 = 04 F0 B2 FE 08 B3 05 98 00 68 40 B9 04 F0 9E F8
    00000AE0 = 05 98 80 68 01 F0 F9 06 90 04 F0 81 FC 05 98
    00000AF0 = 03 99 24 30 04 F0 1A FC 05 98 02 F0 DF FA 00 F0
    00000B00 = C9 FD 00 28 7F F4 7C AF 16 49 4F F0 80 50 08 60
    00000B10 = BF F3 4F 8F BF F3 6F 8F 72 E7 05 98 02 F0 CE FA
    00000B20 = 00 F0 B8 FD 6C 05 98 02 F0 C8 FA 00 F0 B2 FD
    00000B30 = 05 98 04 F0 81 FE 00 28 3F F4 62 AF 06 98 60 B1
    00000B40 = 04 F0 6C F8 05 98 04 F0 DF FD 07 90 05 98 07 99
    00000B50 = 80 68 00 F0 2D FE 04 F0 4B FC 00 20 FF E7 09 B0
    00000B60 = 00 BD C0 46 04 ED 00 E0 00 B5 AD F1 24 0D 05 93
    00000B70 = 04 92 03 91 02 90 00 20 06 90 02 98 08 90 08 98
    00000B80 = 38 B9 20 20 80 F3 11 88 BF F3 4F 8F BF F3 6F 8F
    00000B90 = FE E7 03 9A 00 20 00 21 1A B9 08 9A 12 6C 02 B1
    00000BA0 = 01 21 01 B9 01 20 38 B9 20 80 F3 11 88 BF F3
    00000BB0 = 4F 8F BF F3 6F 8F FE E7 05 9A 00 20 00 21 02 2A
    00000BC0 = 04 D1 08 9A D2 6B 01 2A 00 D0 01 21 01 B9 01 20
    00000BD0 = 38 B9 20 80 F3 11 88 BF F3 4F 8F BF F3 6F 8F
    00000BE0 = FE E7 04 F0 1D FC 00 21 00 22 10 B9 04 98 00 B1
    00000BF0 = 01 22 02 B9 01 21 39 B9 20 80 F3 11 88 BF F3
    00000C00 = 4F 8F BF F3 6F 8F FE E7 04 F0 08 F8 08 98 08 99
    00000C10 = C0 6B 89 6B 88 42 02 D8 05 98 02 28 D1 08 98
    00000C20 = 03 99 05 9A 01 F0 B4 FE 07 90 08 98 40 6A 08 B9
    00000C30 = 01 20 00 E0 00 20 68 B9 08 98 24 30 02 F0 94 FB
    00000C40 = 90 B1 36 49 4F F0 80 50 08 60 BF F3 4F 8F BF F3
    00000C50 = 6F 8F 09 E0 07 98 38 B1 30 49 4F F0 80 50 08 60
    00000C60 = BF F3 4F 8F BF F3 6F 8F 04 F0 C2 FB 01 20 53 E0
    00000C70 = 04 98 18 B9 04 F0 BC FB 00 20 4D E0 06 98 20 B9
    00000C80 = 68 46 04 F0 65 FD 01 20 06 90 04 F0 B1 FB 04 F0
    00000C90 = 27 FF 03 F0 C3 FF 08 98 90 F9 44 00 B0 F1 FF 3F
    00000CA0 = 03 D1 08 99 00 20 81 F8 44 00 08 98 90 F9 45 00
    00000CB0 = B0 F1 FF 3F 03 D1 08 99 00 20 81 F8 45 00 04 F0
    00000CC0 = 97 FB 68 46 04 A9 02 F0 A1 F9 F0 B9 08 98 04 F0
    00000CD0 = 08 FD A0 B1 08 98 04 99 10 30 04 F0 27 FB 08 98
    00000CE0 = 02 F0 EC F9 00 F0 D6 FC 00 28 8D D1 0B 49 4F F0
    00000CF0 = 80 50 08 60 BF F3 4F 8F BF F3 6F 8F 84 E7 08 98
    00000D00 = 02 F0 DC F9 00 F0 FC 7E E7 08 98 02 F0 D6 F9
    00000D10 = 00 F0 C0 FC 00 20 FF E7 09 B0 00 BD 04 ED 00 E0
    00000D20 = 00 B5 AD F1 24 0D 04 92 03 91 02 90 00 20 05 90
    00000D30 = 02 98 06 90 06 98 38 B9 20 80 F3 11 88 BF F3
    00000D40 = 4F 8F BF F3 6F 8F FE E7 03 9A 00 20 00 21 1A B9
    00000D50 = 06 9A 12 6C 02 B1 01 21 01 B9 01 20 38 B9 20
    00000D60 = 80 F3 11 88 BF F3 4F 8F BF F3 6F 8F FE E7 04 F0
    00000D70 = 57 FB 00 21 00 22 10 B9 04 98 00 B1 01 22 02 B9
    00000D80 = 01 21 39 B9 20 80 F3 11 88 BF F3 4F 8F BF F3
    00000D90 = 6F 8F FE 03 F0 42 FF 06 98 80 6B 07 90 07 98
    00000DA0 = 00 B3 06 98 03 99 04 F0 33 F9 07 98 06 99 40 1E
    00000DB0 = 88 63 06 98 00 69 08 B9 01 20 00 E0 00 20 68 B9
    00000DC0 = 06 98 10 30 02 F0 D0 FA 40 B1 34 49 4F F0 80 50
    00000DD0 = 08 60 BF F3 4F 8F BF F3 6F 8F FF E7 04 F0 08 FB
    00000DE0 = 01 20 58 E0 04 98 18 B9 04 F0 02 FB 00 20 52 E0
    00000DF0 = 05 98 20 B9 68 46 04 F0 AB FC 01 20 05 90 04 F0
    00000E00 = F7 FA 04 F0 6D FE 03 F0 09 FF 06 98 90 F9 44 00
    00000E10 = B0 F1 FF 3F 03 D1 06 99 00 20 81 F8 44 00 06 98
    00000E20 = 90 F9 45 00 B0 F1 FF 3F 03 D1 06 99 00 20 81 F8
    00000E30 = 45 00 04 F0 DD FA 68 46 04 A9 02 F0 F8 F0 B9
    00000E40 = 06 98 04 F0 FC A0 B1 06 98 04 99 24 30 04 F0
    00000E50 = 6D FA 06 98 02 F0 32 F9 00 F0 1C FC 00 28 99 D1
    00000E60 = 0E 49 4F F0 80 50 08 60 BF F3 4F 8F BF F3 6F
    00000E70 = 90 E7 06 98 02 F0 22 F9 00 F0 0C FC 8A E7 06 98
    00000E80 = 02 F0 1C F9 00 F0 06 FC 06 98 04 F0 D5 FC 00 28
    00000E90 = 80 D0 00 20 FF E7 09 B0 00 BD C0 46 04 ED 00 E0
    00000EA0 = 5C 4A 2D E9 F0 4F 17 68 0E 46 4F EA 80 09 F0 0F
    00000EB0 = AD F1 14 0D 4F 44 80 F0 9F 80 7C 78 3D 78 30 0F
    00000EC0 = 93 46 4D D2 04 F0 DC FA 82 46 70 0C 27 D2 02 2C
    00000ED0 = 0C D1 05 2D 0A D2 16 F4 70 0F 07 D0 4F F0 00 78
    00000EE0 = D8 F8 24 08 00 6C 02 46 02 20 05 E0 4F F0 00 78
    00000EF0 = D8 F8 24 08 42 6C 20 46 29 46 90 47 08 F6 24 08
    00000F00 = 30 0D 39 BF D8 F8 00 82 68 D8 F8 00 42 68
    00000F10 = 29 46 20 46 90 47 D8 F8 00 00 02 68 11 E0 38 48
    00000F20 = 06 F4 40 31 B1 F5 40 3F 09 D0 06 F4 A0 21 B1 F5
    00000F30 = A0 2F 19 BF 00 68 82 6B 00 68 02 69 01 E0 00 68
    00000F40 = 42 69 20 46 29 46 90 47 DB F8 00 10 51 F8 09 00
    00000F50 = 32 0C 62 F3 17 40 41 F8 09 00 50 46 04 F0 3C FC
    00000F60 = 16 F0 6A 48 D0 7F 78 01 20 06 2C A7 F1 01 07
    00000F70 = 00 FA 07 F8 1B D8 04 F0 83 FA 03 90 21 48 01 78
    00000F80 = 18 EA 01 0F 19 D1 48 EA 01 01 70 03 98 04 F0
    00000F90 = 23 FC 68 46 04 F0 6F FC DB F8 10 10 1A 48 01 91
    00000FA0 = C0 5D 1A 49 00 97 6A 46 03 F0 7E FB 10 B9 4F F0
    00000FB0 = FF 30 22 E0 04 F0 64 FA 03 90 4F F0 00 78 14 48
    00000FC0 = D8 F8 24 28 C6 F3 02 61 53 6A 42 5C 29 46 20 46
    00000FD0 = 98 47 D8 F8 24 08 42 6B 29 46 20 46 90 47 DB F8
    00000FE0 = 00 10 51 F8 09 00 20 F0 E0 60 4A EA 00 07 03 98
    00000FF0 = 41 F8 09 70 04 F0 F0 FB 00 20 05 B0 BD E8 F0 8F
    00001000 = 24 08 00 02 70 8D 00 20 02 5E 00 4D 42 00
    00001010 = FC 5D 00 C0 5D 00 00 B5 AD F1 14 0D 00
    00001020 = 00 20 04 90 04 F0 5C FD 54 48 00 68 08 B9 01 F0
    00001030 = 6D FD 53 48 00 99 00 68 08 42 40 F0 87 80 00 98
    00001040 = E0 B1 00 98 08 30 00 90 00 98 10 F0 07 0F 15 D0
    00001050 = 00 98 00 99 00 F0 07 00 09 1A 08 31 00 91 00 99
    00001060 = 00 20 11 F0 07 0F 00 D1 01 20 38 B9 20 80 F3
    00001070 = 11 88 BF F3 4F 8F BF F3 6F 8F FE E7 00 98 00 28
    00001080 = 64 D0 40 48 00 00 68 88 42 5F D3 3E 48 02 90
    00001090 = 3D 48 00 68 01 90 04 E0 01 98 02 90 01 98 00 68
    000010A0 = 01 90 01 01 99 00 98 49 68 88 42 03 D9 01 98 00 68
    000010B0 = 00 28 F1 D1 31 48 01 99 00 68 88 42 46 D0 02 98
    000010C0 = 00 68 08 30 04 90 01 98 02 99 00 68 08 60 01 98
    000010D0 = 00 99 40 68 40 1A 10 28 1E D9 00 99 01 98 40 18
    000010E0 = 03 90 03 99 00 20 11 F0 07 0F 00 D1 01 20 38 B9
    000010F0 = 20 80 F3 11 88 BF F3 4F 8F BF F3 6F 8F FE E7
    00001100 = 01 98 00 9A 03 99 40 68 80 1A 48 60 00 98 01 99
    00001110 = 48 60 03 98 02 F0 80 F8 01 98 1A 49 42 68 08 68
    00001120 = 80 1A 08 60 19 48 17 49 00 68 09 68 88 42 03 D9
    00001130 = 14 48 16 49 00 68 08 60 01 99 11 48 4A 68 00 68
    00001140 = 10 43 48 60 01 98 00 21 01 60 FF E7 00 F0 A2 FA
    00001150 = 04 98 08 B9 03 F0 77 FA 04 99 00 20 11 F0 07 0F
    00001160 = 00 D1 01 20 38 B9 20 20 80 F3 11 88 BF F3 4F 8F
    00001170 = BF F3 6F 8F FE E7 04 98 05 B0 00 BD 38 8D 00 20
    00001180 = 44 8D 00 20 3C 8D 00 20 DC 82 00 20 40 8D 00 20
    00001190 = 00 B5 AD F1 24 0D 9F E0 01 98 00 28 00 F1 9C 80
    000011A0 = 03 98 04 90 04 98 40 69 08 B9 01 20 00 E0 00 20
    000011B0 = 18 B9 04 98 00 1D 03 F0 9F FD 05 A8 04 F0 9C F8
    000011C0 = 07 90 6D E0 04 99 91 F8 28 00 40 F0 01 00 81 F8
    000011D0 = 28 00 04 98 02 99 07 9A 02 9B 80 69 09 18 04 98
    000011E0 = 02 F0 DA FE 00 28 77 D0 04 98 00 6A 01 46 04 98
    000011F0 = 88 47 04 98 90 F8 28 00 C0 08 6D D3 00 20 00 90
    00001200 = 04 98 02 9A 80 69 12 18 04 98 00 21 00 23 02 F0
    00001210 = CB FC 06 90 06 98 00 28 5E D1 20 20 80 F3 11 88
    00001220 = BF F3 4F 8F BF F3 6F 8F FE E7 04 99 91 F8 28 00
    00001230 = 20 F0 01 00 F8 28 00 4E E0 04 99 91 F8 28 00
    00001240 = 40 F0 01 00 81 F8 28 00 02 98 04 99 88 61 04 98
    00001250 = 81 69 00 20 01 B1 01 20 38 B9 20 80 F3 11 88
    00001260 = BF F3 4F 8F BF F3 6F 8F FE E7 04 98 07 99 07 9A
    00001270 = 07 9B 80 69 09 18 04 98 02 F0 8E FE 2C E0 04 98
    00001280 = 90 F8 28 00 80 08 03 D2 04 98 02 F0 4D FA 23 E0
    00001290 = 04 99 91 F8 28 00 20 F0 01 00 81 F8 28 00 1B E0
    000012A0 = 01 98 09 28 18 D8 02 A1 51 F8 20 00 87 46 C0 46
    000012B0 = C5 11 00 C5 11 00 C5 11 00 2B 12 00
    000012C0 = 3B 12 00 00 00 7F 12 00 C5 11 00 00 C5 11 00
    000012D0 = 2B 12 00 3B 12 00 05 48 00 68 01 A9 00 22
    000012E0 = FF F7 1E FD 00 28 7F F4 57 AF 09 B0 00 BD C0 46
    000012F0 = 58 8D 00 20 10 B5 AD F1 18 0D 00 20 02 90 41 48
    00001300 = 00 68 00 28 72 D1 40 48 00 68 40 1C 03 90 3E 49
    00001310 = 03 98 08 60 03 98 F8 B9 3C 48 00 68 00 08 B9
    00001320 = 01 20 00 E0 00 20 38 B9 20 20 80 F3 11 88 BF F3
    00001330 = 4F 8F BF F3 6F 8F FE E7 34 48 35 49 33 4B 00 68
    00001340 = 33 4A 04 90 09 68 04 98 19 60 32 49 60 08 68
    00001350 = 40 1C 08 60 03 F0 7A FE 2F 48 03 99 00 68 88 42
    00001360 = 48 D8 2A 48 00 68 00 68 08 B9 01 20 00 E0 00 20
    00001370 = 20 B1 29 49 4F F0 FF 30 08 60 3B E0 23 48 00 68
    00001380 = C0 68 C0 68 00 90 00 98 40 68 01 90 03 99 01 98
    00001390 = 88 42 03 D9 01 98 20 49 08 60 2B E0 00 98 00 1D
    000013A0 = 03 F0 AA FC 00 98 80 6A 18 B1 00 98 18 30 03 F0
    000013B0 = A3 FC 00 98 19 4A C4 6A 13 68 00 99 01 20 A0 40
    000013C0 = 18 43 10 60 16 4B CA 6A 00 99 90 00 09 1D 00 EB
    000013D0 = 02 10 C0 18 03 F0 76 FE 12 48 00 99 68 C9 6A
    000013E0 = C0 6A 88 42 BD D8 01 20 02 90 BA E7 0E 49 08 68
    000013F0 = 40 1C 08 60 0D 48 00 68 08 B1 01 20 02 90 98
    00001400 = 06 B0 10 BD A8 00 20 84 8C 00 20 C4 82 00 20
    00001410 = C8 82 00 20 98 8C 00 20 A0 8C 00 20 88 8C 00 20
    00001420 = 00 81 00 20 78 8C 00 20 90 8C 00 20 94 8C 00 20
    00001430 = 00 B5 AD F1 2C 0D 05 93 04 92 03 91 02 90 00 20
    00001440 = 07 90 00 20 09 90 03 98 08 B9 44 48 00 E0 03 98
    00001450 = 08 90 34 20 FF F7 E0 FD 07 90 07 98 08 B9 0C 20
    00001460 = 7A E0 08 98 00 69 00 21 08 B9 00 20 00 E0 01 20
    00001470 = 00 B1 01 21 07 98 01 74 07 99 04 98 48 61 05 98
    00001480 = 07 99 88 61 07 98 00 21 C1 60 07 98 00 21 81 60
    00001490 = 07 98 00 21 C1 61 07 98 00 21 01 62 08 98 07 99
    000014A0 = 00 68 48 60 07 98 00 21 81 62 07 98 00 21 01 63
    000014B0 = 07 98 C1 62 03 98 00 69 70 B9 01 20 00 21 03 22
    000014C0 = 02 F0 8E FE 07 99 88 60 07 98 80 68 20 B9 07 98
    000014D0 = 02 F0 2A F9 0C 20 3F E0 03 F0 A2 FF 00 21 01 28
    000014E0 = 01 D1 00 20 00 E0 01 20 00 B1 01 21 8D F8 28 10
    000014F0 = 9D F8 28 00 08 B1 04 F0 F3 FA 08 98 00 68 00 90
    00001500 = 07 98 17 49 01 90 08 98 07 9B 09 68 00 89 82 10
    00001510 = 14 48 02 F0 03 FD 06 90 06 98 01 28 05 D1 07 98
    00001520 = 07 99 00 68 03 F0 D8 FF 0D E0 07 98 80 68 18 B1
    00001530 = 07 98 80 68 04 F0 F F8 07 98 02 F0 F8 00 20
    00001540 = 07 90 0C 20 09 90 07 98 02 99 08 60 9D F8 28 00
    00001550 = 08 B1 00 F0 9F F8 09 98 0B B0 00 BD 24 8D 00 20
    00001560 = 10 5E 00 95 58 00 00 00 00 B5 AD F1 1C 0D 03 93
    00001570 = 02 92 01 91 00 90 0A 98 02 99 00 6B 8A 00 A5 21
    00001580 = 02 F0 93 FC 0A 99 02 98 09 6B 40 1E 01 EB 80 01
    00001590 = 04 91 04 98 20 F0 07 00 04 90 04 99 00 20 11 F0
    000015A0 = 07 0F 00 D1 01 20 38 B9 20 80 F3 11 88 BF F3
    000015B0 = 4F 8F BF F3 6F 8F FE E7 01 98 E0 B1 00 20 05 90
    000015C0 = 05 98 0C 28 12 D2 01 99 05 9B 05 9A 98 59 5C
    000015D0 = 80 18 80 F8 34 10 01 98 05 99 08 5C 00 B9 05 E0
    000015E0 = 05 98 40 1C 05 90 05 98 0C 28 EC D3 0A 99 00 20
    000015F0 = 81 F8 3F 00 03 E0 0A 99 00 20 81 F8 34 00 08 98
    00001600 = 0A 28 01 D3 09 20 08 90 08 98 0A 99 C8 62 08 98
    00001610 = 0A F8 99 88 64 0A 98 00 21 C1 64 0A 98 00 1D 04 F0
    00001620 = 57 FA 0A 98 18 30 04 F0 53 FA 0A 98 0A 99 08 61
    00001630 = 08 98 0A 99 C0 F1 0A 00 88 61 0A 98 0A 99 48 62
    00001640 = 0A 98 00 21 01 65 00 20 05 90 05 98 58 B9 05 9A
    00001650 = 0A 98 00 21 00 EB 82 00 41 65 05 98 40 1C 05 90
    00001660 = 05 98 00 28 F3 D0 0A 98 00 21 81 65 0A 99 00 20
    00001670 = 81 F8 5C 00 03 9A 04 98 00 99 03 F0 45 F8 0A 99
    00001680 = 08 60 09 98 18 B1 0A 98 09 99 08 60 FF E7 B0
    00001690 = 00 BD FE E7 1F 00 20 00 90 00 20 01 90 3A 48
    000016A0 = 00 68 38 B9 20 20 80 F3 11 88 BF F3 4F 8F BF F3
    000016B0 = 6F 8F FE E7 03 F0 B2 FA 33 49 08 68 40 1E 08 60
    000016C0 = 31 48 00 68 00 28 5A D1 30 48 00 68 00 28 56 D0
    000016D0 = 28 E0 2F 48 00 68 C0 68 00 90 00 98 18 30 03 F0
    000016E0 = 0b FB 00 98 00 1D 03 F0 07 FB 00 98 29 4A C4 6A
    000016F0 = 00 99 13 68 01 20 A0 40 18 43 10 60 26 4B CA 6A
    00001700 = 00 99 90 00 00 EB 02 10 09 1D C0 18 03 F0 DA FC
    00001710 = 22 48 00 99 00 68 C9 6A C0 6A 88 42 02 D8 20 49
    00001720 = 01 20 08 60 1F 48 00 68 08 B9 01 20 00 E0 00 20
    00001730 = 00 28 CE D0 00 98 08 B1 03 F0 88 FC 1A 48 00 68
    00001740 = 02 90 02 98 70 B1 FF F7 D5 FD 10 B1 14 49 01 20
    00001750 = 08 60 02 98 40 1E 02 90 02 98 00 28 F3 D1 12 49
    00001760 = 00 20 08 60 0E 48 00 68 48 B1 01 20 01 90 0F 49
    00001770 = 4F F0 80 50 08 60 BF F3 4F 8F BF F3 6F 8F 03 F0
    00001780 = 37 FE 01 98 00 90 1F BD A8 00 20 80 8C 00 20
    00001790 = 94 82 00 20 88 8C 00 20 00 81 00 20 78 8C 00 20
    000017A0 = 94 8C 00 20 88 82 00 20 90 8C 00 20 04 ED 00 E0
    000017B0 = 10 B5 AD F1 18 0D 01 91 00 90 00 98 02 90 01 20
    000017C0 = 05 90 00 98 00 28 74 D0 02 98 C0 6C 38 B9 20
    000017D0 = 80 F3 11 88 BF F3 4F 8F BF F3 6F 8F FE E7 02 99
    000017E0 = 01 98 6C 88 42 02 D9 01 98 04 90 02 E0 02 98
    000017F0 = 80 6C 04 90 02 99 04 98 C9 6A 88 42 59 D0 02 98
    00001800 = C0 6C 01 28 55 D1 2C 48 02 9A 01 68 00 20 91 42
    00001810 = 00 D0 01 20 38 B9 20 80 F3 11 88 BF F3 4F 8F
    00001820 = BF F3 6F 8F FE E7 02 98 C0 6A 03 90 02 99 04 98
    00001830 = C8 62 02 98 80 69 00 08 04 D2 04 98 02 99 C0 F1
    00001840 = 0A 00 88 61 02 98 03 9B 1C 4A 41 69 98 00 EB
    00001850 = 03 10 80 18 88 42 01 D1 01 20 00 E0 00 20 40 B3
    00001860 = 02 98 00 1D 03 F0 48 FA 78 B9 02 98 13 49 C2 6A
    00001870 = 90 00 00 EB 02 10 08 58 38 B9 02 98 10 4A C3 6A
    00001880 = 11 68 01 20 98 40 81 43 11 60 02 98 0C 4A C4 6A
    00001890 = 13 68 02 99 01 20 A0 40 18 43 10 60 07 4B CA 6A
    000018A0 = 02 99 90 00 09 1D 00 EB 02 10 C0 18 03 F0 A FC
    000018B0 = FF E7 06 B0 10 BD C0 46 78 8C 00 20 00 81 00 20
    000018C0 = 88 8C 00 20 0E B5 01 91 00 90 01 98 02 F0 A FE
    000018D0 = 02 90 5D E0 36 48 00 78 A0 B1 01 20 03 F0 40 FD
    000018E0 = 33 48 00 78 70 B1 33 48 00 78 28 B1 02 98 4F F4
    000018F0 = FA 31 B1 FB F0 59 E0 02 98 4F F4 00 41 B1 FB
    00001900 = F0 53 E0 2C 48 02 99 00 68 B0 FB F1 F0 4D E0
    00001910 = 2A 48 00 78 A0 B1 02 20 03 F0 22 FD 27 48 00 78
    00001920 = 70 B1 24 48 00 78 28 B1 02 98 4F F4 FA 31 B1 FB
    00001930 = F0 F0 3B E0 02 98 4F F4 00 41 B1 FB F0 35 E0
    00001940 = 1F 48 02 99 00 68 B0 FB F0 2F E0 02 98 42 F2
    00001950 = 10 71 B1 FB F0 F0 29 E0 16 48 00 78 28 B1 02 98
    00001960 = 4F F4 FA 31 B1 FB F0 F0 20 E0 02 98 4F F4 00 41
    00001970 = B1 FB F0 1A E0 00 F0 27 F9 02 99 B0 FB F0
    00001980 = 14 E0 02 99 0F 48 B0 FB F1 F0 0F E0 00 20 0D E0
    00001990 = 00 98 00 28 9E D0 40 1E D8 D0 40 1E DC D0 40 1E
    000019A0 = E9 D0 40 1E ED D0 40 1E B2 D0 EF E7 0E BD C0 46
    000019B0 = 00 89 20 42 3C 86 20 42 D8 82 00 20 04 89 20 42
    000019C0 = D4 82 00 20 00 36 6E 01 00 B5 AD F1 24 0D 03 93
    000019D0 = 02 92 01 91 00 90 00 98 06 90 06 98 38 B9 20
    000019E0 = 80 F3 11 88 BF F3 4F 8F BF F3 6F 8F FE E7 01 9A
    000019F0 = 00 20 00 21 1A B9 06 9A 12 6C 02 B1 01 21 01 B9
    00001A00 = 01 20 38 B9 20 20 20 80 F3 11 88 BF F3 4F 8F BF F3
    00001A10 = 6F 8F E7 FE 03 9A 00 20 00 21 02 2A 04 D1 06 9A
    00001A20 = D2 6B 01 2A 00 D0 01 21 01 B9 01 20 38 B9 20
    00001A30 = 80 F3 11 88 BF F3 4F 8F BF F3 6F 8F FE E7 02 F0
    00001A40 = 5D FB 20 20 EF F3 11 81 80 F3 11 88 05 91 BF F3
    00001A50 = 4F 8F BF F3 6F 8F 06 98 06 99 C0 6B 89 88 42
    00001A60 = 02 D8 03 98 02 28 29 D1 06 98 90 F9 45 00 8D F8
    00001A70 = 1C 00 01 99 03 9A 06 98 00 F0 8A FF 9D F9 1C 00
    00001A80 = B0 F1 FF 3F 11 D1 06 98 40 6A 08 B9 01 20 00 E0
    00001A90 = 00 20 80 B9 06 98 24 30 01 F0 66 FC 58 B1 02 98
    00001AA0 = 48 B1 02 98 01 21 01 60 05 E0 9D F9 1C 00 06 99
    00001AB0 = 40 1C 81 F8 45 00 01 20 04 90 01 E0 00 20 04 90
    00001AC0 = 05 98 F3 11 88 04 98 09 B0 00 BD 0E B5 00 90
    00001AD0 = 03 F0 A4 F8 00 98 10 B9 33 48 00 68 00 E0 00 98
    00001AE0 = 01 90 01 98 00 1D 03 F0 07 F9 78 B9 01 98 2F 49
    00001AF0 = C2 6A 90 00 00 EB 02 10 08 58 38 B9 01 98 2C 4A
    00001B00 = C3 6A 11 68 01 20 98 40 81 43 11 60 01 98 80 6A
    00001B10 = 18 B1 01 98 18 30 03 F0 EF F8 01 99 25 48 09 1D
    00001B20 = 03 F0 D0 FA 01 98 90 F8 5C 00 01 28 03 D1 01 99
    00001B30 = 00 20 81 F8 5C 00 03 F0 5B FC 1F 48 00 68 28 B1
    00001B40 = 03 6C F0 F8 03 F0 82 FA 03 F0 52 FC 16 48 01 99
    00001B50 = 00 68 42 26 D1 18 48 00 68 B0 B1 17 48 01 68
    00001B60 = 00 20 01 B9 01 20 38 B9 20 20 80 F3 11 88 BF F3
    00001B70 = 4F 8F BF F3 6F FE E7 11 49 4F F0 80 50 08 60
    00001B80 = BF F3 4F 8F BF F3 6F 8F 0C E0 0E 48 09 49 00 68
    00001B90 = 09 68 88 42 03 D1 04 49 00 20 08 60 02 E0 00 F0
    00001BA0 = 25 FC FF E7 0E BD C0 46 78 8C 00 20 00 81 00 20
    00001BB0 = 88 8C 00 20 9C 82 00 20 8C 00 20 A8 8C 00 20
    00001BC0 = 04 ED 00 E0 80 8C 00 20 00 B5 AD F1 1C 0D 03 20
    00001BD0 = 00 21 03 AA 05 AB 01 F0 F5 FD 02 F0 E7 F8 02 90
    00001BE0 = 03 98 08 B9 02 98 63 E0 32 48 00 68 6F F3 9F 20
    00001BF0 = AD F8 18 00 BD F9 18 00 80 0A 05 D3 BD F9 18 00
    00001C00 = 40 F4 7E 40 AD F8 18 00 BD F9 18 00 08 B9 02 98
    00001C10 = 4E E0 29 49 02 98 81 42 10 D1 28 48 00 78 30 B1
    00001C20 = 05 98 6B 00 90 05 98 40 6A 01 90 16 E0 05 98
    00001C30 = C0 69 00 90 05 98 40 68 01 90 0F E0 1F 48 00 78
    00001C40 = 30 B1 05 98 80 6B 00 90 05 98 00 6A 01 90 05 E0
    00001C50 = 05 98 69 00 90 05 98 00 68 01 90 01 98 DD ED
    00001C60 = 00 0A C0 F5 40 70 00 EE 10 0A B8 EE C0 1A B7 EE
    00001C70 = 00 0A 01 EE 20 0A DD ED 00 0A BD F9 18 00 01 EE
    00001C80 = 10 0A B8 EE C1 1A 61 EE 20 0A 80 EE 80 0A 02 98
    00001C90 = 00 EE 90 0A B7 EE 00 1A F8 EE 60 0A 31 EE 40 0A
    00001CA0 = 80 EE 80 0A BC EE C0 0A 10 EE 10 0A 04 90 04 98
    00001CB0 = 07 B0 00 BD 04 04 01 40 00 6C DC 02 D8 80 20 42
    00001CC0 = 0E B5 00 90 02 F0 AA FF 00 98 10 B9 30 48 00 68
    00001CD0 = 00 E0 00 98 01 90 01 98 00 1D 03 F0 0D F8 78 B9
    00001CE0 = 01 98 2C 49 C2 6A 90 00 EB 02 10 08 58 38 B9
    00001CF0 = 01 98 29 4A C3 6A 11 68 01 20 98 40 81 43 11 60
    00001D00 = 01 98 80 6A 18 B1 01 98 18 30 02 F0 F5 FF 23 49
    00001D10 = 08 68 40 1C 08 60 1E 48 01 99 00 68 88 42 09 D1
    00001D20 = 01 99 1F 48 09 1D 03 F0 CD F9 1E 49 08 68 40 1C
    00001D30 = 08 60 08 E0 1C 49 08 68 40 1E 08 60 01 98 03 F0
    00001D40 = 59 FE 03 F0 83 F9 01 98 03 F0 EC FD 03 F0 50 FB
    00001D50 = 16 48 00 68 D8 B1 0E 48 01 99 00 68 88 42 16 D1
    00001D60 = 13 48 01 68 00 20 01 B9 01 20 38 B9 20 20 80 F3
    00001D70 = 11 88 BF F3 4F 8F BF F3 6F 8F FE E7 0D 49 4F F0
    00001D80 = 80 50 08 60 BF F3 4F 8F BF F3 6F 8F FF E7 0E BD
    00001D90 = 78 8C 00 20 00 81 00 20 88 8C 00 20 9C 8C 00 20
    00001DA0 = B0 82 00 20 7C 8C 00 20 80 8C 00 20 8C 8C 00 20
    00001DB0 = A8 8C 00 20 04 ED 00 E0 00 B5 AD F1 1C 0D 01 91
    00001DC0 = 00 90 00 98 04 90 98 38 B9 20 80 F3 11 88
    00001DD0 = BF F3 4F 8F BF F3 6F 8F FE E7 04 98 01 6C 00 20
    00001DE0 = 01 B9 01 20 B9 20 20 80 F3 11 88 BF F3 4F 8F
    00001DF0 = BF F3 6F 8F FE E7 04 98 02 68 00 21 00 20 1A B9
    00001E00 = 04 9A 92 68 02 B1 01 21 01 B9 01 20 38 B9 20
    00001E10 = 80 F3 11 88 BF F3 4F 8F BF F3 6F 8F FE E7 02 F0
    00001E20 = 6D F9 20 20 EF F3 11 81 80 F3 11 88 03 91 BF F3
    00001E30 = 4F 8F BF F3 6F 8F 04 98 80 6B 05 90 04 98 05 99
    00001E40 = C0 6B 88 42 28 D9 04 98 90 F9 45 00 8D F8 18 00
    00001E50 = 04 99 05 98 40 1C 88 63 9D F9 18 00 B0 F1 FF 3F
    00001E60 = 11 D1 04 98 40 6A 08 B9 01 20 00 E0 00 20 80 B9
    00001E70 = 04 98 24 30 01 F0 78 FA 58 B1 01 98 48 B1 01 98
    00001E80 = 01 21 01 60 05 E0 9D F9 18 00 04 99 40 1C 81 F8
    00001E90 = 45 00 01 20 02 90 01 E0 00 20 02 90 03 98 80 F3
    00001EA0 = 11 88 02 98 07 B0 00 BD 1F 00 B5 00 90 00 98 01 90
    00001EB0 = 00 20 02 90 00 98 00 28 61 D0 32 48 01 99 00 68
    00001EC0 = C9 6A C0 6A 88 42 50 D9 01 98 80 69 00 08 06 D2
    00001ED0 = 2C 48 00 68 01 99 C0 6A C0 F1 0A 00 88 61 01 99
    00001EE0 = 01 98 CB 6A 28 4A 41 69 98 00 EB 03 10 80 18
    00001EF0 = 88 42 01 D1 01 20 00 E0 00 20 00 28 2D D0 01 98
    00001F00 = 00 1D 02 F0 F9 FE 78 B9 01 98 1F 49 C2 6A 90 00
    00001F10 = 00 EB 02 10 08 58 38 B9 01 98 1C 4A C3 6A 11 68
    00001F20 = 01 20 98 40 81 43 11 60 16 48 00 68 01 99 C0 6A
    00001F30 = C8 62 16 4A 01 98 13 68 C4 6A 01 99 01 20 A0 40
    00001F40 = 18 43 11 4B 10 60 CA 6A 6A 01 99 90 00 00 EB 02 10
    00001F50 = 09 1D C0 18 03 F0 B6 F8 04 E0 0A 48 00 68 01 99
    00001F60 = C0 6A C8 62 01 20 02 90 09 E0 06 48 01 99 00 68
    00001F70 = 89 6C C0 6A 88 42 02 D9 01 20 02 90 FF E7 02 98
    00001F80 = 00 90 1F BD 78 8C 00 20 00 81 00 20 88 8C 00 20
    00001F90 = 00 B5 AD F1 14 0D 00 91 8D F8 0C 00 2D 49 46 F6
    00001FA0 = 5A 10 08 60 03 F0 7C FD 00 F0 01 00 02 90 01 20
    00001FB0 = 03 F0 D2 FC 00 F0 AC F9 01 90 00 98 00 21 08 B9
    00001FC0 = 00 20 00 E0 01 21 8D F8 0D 10 22 49
    00001FD0 = 01 20 08 70 21 48 21 4A 01 99 00 68 20 F4 E0 00
    00001FE0 = 01 43 11 60 9D F8 0C 00 18 B1 1D 49 01 20 08 70
    00001FF0 = 02 E0 1B 49 00 20 08 70 1A 49 01 20 08 70 09 E0
    00002000 = 9D F8 0D 00 18 B1 00 98 40 1E 00 90 06 D0 16 49
    00002010 = 01 20 08 70 15 48 00 78 00 28 F1 D1 9D F8 0C 00 

    我在另一篇文章中看到、我也可以通过擦除主存储器和测试脚本程序来触发 BSL。

    但是、如何将 CSS 与 Jlink 结合使用?  

    我可以在 JLink 命令器"擦除所选器件的内部闪存"中运行擦除命令、但我担心它也会删除 BSL 部分

    希望您能帮我解决这个问题

    此致

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

    Adrian、您已经超越了我所了解的一切。  我从未使用过 MSP432器件、对这些器件了解甚少。  如果您在固件中调用 BSL、我不知道为什么这不适用于 Scripter。  我假设您已正确连接 TX 和 RX、但您可能会尝试反转它们、以防万一。  您的脚本版本非常旧、尽管我不知道这是否会产生任何影响。  否则、我不知道建议什么。  也许 TI 人会对尝试什么有一些想法。

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

    抱歉、我在上一篇有关脚本版本的文章中出错、我使用的是最新版本(3.4.0.1)

    RX 和 TX 连接正确。

    让我们看看 TI 的一些产品是否可以在这里为我提供帮助

    谢谢

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

    此帖子可能会有所帮助:

    https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/825967

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

    Adrian、您好!

    George 提供的链接是否有帮助?

    [引用 user="Adrian Santos ">但是、如何将 CSS 与 Jlink 结合使用?  [/报价]

    我尚未尝试使用 JLink 进行此操作、但请按照 本用户指南8.1节"不带密码的出厂重置 "下的步骤执行出厂重置、该重置将批量擦除闪存。

    谢谢、

    SAI

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

    你(们)好

    George 提供的链接非常有用。 我现在能够从软件开票 BSL。  

    我现在使用的是 MSPEXP432P401R Launchpad、而不是我的定制板。  

    器件用 ACK (0x00)应答第一条消息(0xFF)、指示 BSL 正在运行。 但之后它不会回复任何命令。

    我在下面发布了一个示例(我已经测试了其他命令、但也没有成功)。

    发送命令 TX BSL 版本后、器件不会回复。 从 BSL 脚本编写器发送的数据是正确的、如您在以下屏幕截图中所见:

    我使用以下代码来开票 BSL:

    /*确保我们的 MPU 设置不会导致 BSL 出现问题。 *
    MPU_disableModule();
    
    /* BSL 不会初始化它使用的某些硬件。 它需要
    * SysTick (用于确定 UART 波特率)和计时器 A0 (用于设置
    * 10秒超时)。 准备好这些供 BSL 使用。 //
    SysTick 禁用中断();
    SysTick 禁用模块();
    Timer_a_stopTimer (timer_A0_BASE);
    
    
    //需要重置 UART A0以进行固件更新。 请确保使用
    *相应的 GPIO 输入引脚。 */
    UART_DisableModule (EUSCI_A0_BASE);
    GPIO_setAsInputPin (GPIO_PORT_P1、GPIO_PIN2);
    GPIO_setAsInputPin (GPIO_PORT_P1、GPIO_PIN3);
    
    interrupt_disableMaster();
    for (int i=0;i < 240;i++) NVIC->IP[i]= 0;//这很关键! 但是、SLAU622H 在调用软件时没有提到这一点。
    NVIC->icer[0]= 0xFFFF;
    NVIC->icer[1]= 0xFFFF;
    NVIC->ICPR[0]= 0xFFFF;
    NVIC->ICPR[1]= 0xFFFF;
    
    BSL_Invoke (BSL_UART_interface); 

    很高兴能从 TI 获得有关此功能的一些支持、因为此功能对于我们的产品至关重要、如果我们无法使其正常工作、我们将不得不切换到其他 MCU 制造商
    这一问题已经开放了几个星期,唯一的答复者是乔治

    谢谢

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

    Adrian、很抱歉、我无法为您提供解决方案。  我看到该主题已标记为"TI 认为已解决"。  当然会骗我。

    我只想说、如果 Launchpad 适用于 BSL、我会感到惊讶。  MPS432可能有所不同、但 MSP430器件通常不成功。  早期就出现了一个奇偶校验未能通过的问题。  我无法从您的示波器捕获中得知、但您确定奇偶校验位实际上到达了芯片上的 Rx 引脚吗?  嗯、我需要停止评论我从未使用过的器件。

    无论如何、如果您获得了允许使用 FTDI 适配器的解决方案、我希望您将其发布在此处。  我们为使用 BSLDEMO 的旧 MSP430器件和使用 Scripter 的新器件提供了解决方案。  为 MPS432器件提供解决方案会更好。  

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

    Adrian、您好!

    [引用 user="Adrian Santos ">发送命令 TX BSL 版本后、器件不会回复。 从 BSL 脚本编写器发送的数据是正确的、正如您在此屏幕截图中看到的[/引述]

    如何在 MSP432P4 MCU 和 PC 之间建立通信(BSL Scripter 在哪个 PC 上运行)? BSL Rocket 或 FTDI 芯片或其他东西?

    谢谢、

    SAI  

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

    我使用的是直接连接到 BSL UART 的标准 FTDI 芯片
    我要在 BSL 脚本程序上设置奇偶校验选项
    正如您在我之前的帖子所附的逻辑分析仪屏幕截图中看到的、使用 BSL 脚本程序从 PC 发送的位是正确的、它们遵循 BSL 手册中规定的协议、 但是、BSL 不响应任何命令、只响应它正确回答的连接启动消息(0xFF)(0x00)
    此测试是在全新的 MSPEXP432P401R 以及定制板上完成的


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

    尊敬的乔治:

    您的意见非常有用、非常感谢。

    是的、奇偶校验位到达芯片。 逻辑分析仪捕捉用偶校验设置进行解码。

    [引用 USER="George Hug]无论如何、如果您获得了允许使用 FTDI 适配器的解决方案、我希望您能在这里发布。  [/报价]

    当然、希望我们能够解决这个问题

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

    Adrian、您好!

    还有一个问题、如果您在设置中使用 BSL Rocket 替换 FTDI 芯片、通信是否正常?

    谢谢、

    SAI  

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

    您好、Sai、

    我们没有任何 BSL Rocket、如果您想向我们发送样本、我们可以尝试、并在测试完成后将其返回。

    在 BLS 脚本上使用 BLS Rocket VS 标准 FTDI 芯片和具有定性的 BLS 脚本之间有何区别?

    此致

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

    只是几个想法。  是否在发送 TX BSL 版本命令之前发送密码?  我认为这是一个受保护的命令。

    此外、FTDI 设置为 Tx 上的输出3.3V?

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

    您好、Adrian、

    很抱歉、如果我在该主题中遗漏了此信息、您目前是否对器件进行了编程? 当中断矢量区域为空(地址0x0-0x100)时、引导代码将调用 MSP432的出厂 BSL。 如果这个区域已经被编程、在复位周期内将不会调用 BSL。

    启用硬件调用的一个选项是配置引脚、并设置引脚的极性调用。 假设您使用具有高极性的 P3.0。 当在复位期间应用高极性时、引导代码将读取此值、并执行引导加载程序、而不是已编程到器件中的程序。 您可以参阅以下用户指南中的第2.3节: http://www.ti.com/lit/ug/slau690f/slau690f.pdfhttp://www.ti.com/lit/ug/slau356i/slau356i.pdf 下的第4.8.6.2.1节(BSL_Params)

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

    您好!

    我正在执行 BSL 的软件调用、而不是硬件调用。  您可以看到我在上面使用的代码。

    我认为调用工作正常 、因为我收到了来自 BSL 的连接的响应、如果 BSL 未运行、我将无法得到该响应。 但是、它不会回复 tl 任何命令

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

    Adrian、上一个帖子发布至今已有一周、您似乎没有真正从 TI 获得任何帮助。  也许您应该按照之前的帖子所述操作、并使用另一家制造商的器件。  如您所知、其他来源的类似芯片通常使用 FTDI 适配器刷写。  我从未理解过为什么、但 TI 似乎完全不愿意在这一领域竞争、至少对于 MSP430和 MSP432器件而言是如此。  因此、您可能需要使用其他东西。

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

    您好、Adrian、

    感谢您的耐心等待。 我只是想给大家留下一个注释、让大家知道我们没有忘记您、并且 正在继续寻找解决此问题的解决方案。  

    谢谢、

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

    真是个好消息。


    我希望您能尽快找到解决方案。

    正如我在上一篇文章中所说的、如果您可以向我们发送 BSL 火箭来测试它是否起作用、我将使用它进行测试。

    谢谢

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

    Adrian、

    BSL Rocket 实际上是 Olimex LTD 和 TI 之间的协作。 我们不出售这些商品、但 可以在此处从 Olimex 订购。 不幸的是、我没有一个可发运给您的备用板。  

    BR、

    成  

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

    Adrian、

    感谢您的耐心等待。 请与我们合作、我们 将在本周结束前提供反馈。  

    您是否能够获得 BSL Rocket?

    BR、

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

    您好!

    不、我们无法得到一个

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

    您好、Adrian、

    对延迟回复表示歉意。 我尝试使用 MSP-EXP432P401R Launchpad 测试您的案例。

    我在 CCS 中运行非常简单的应用程序、如下所示:


    #define BSL_Param         0xFC48FFFF // I2C 从地址= 0x48、接口选择=自动
    #define BSL_API_TABLE_ADDR 0x00202000 // BSL API 表的地址
    #define BSL_entry_function (*((uint32_t *) BSL_API_TABLE_ADDR)
    int i=0;


    void main (void)

       volatile uint32_t i;

       WDTCTL = WDTPW | WDTHOLD;                   //停止看门狗计时器*/

       //以下代码切换 P1.0端口
       P1DIR |= BIT0;                              //将 P1.0配置为输出*/

       while (1)
       {
           P1OUT ^= BIT0;                          //切换 P1.0 */
           //for (i=10000;i>0;i--);                 /*延迟*/

           _disable_interrupt ();

           //在进入引导加载程序之前将中断优先级设置为0x00
           对于(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;
           //使用给定的 BSL 参数调用 BSL
           (((void (*)()) BSL_entry_function)(((uint32_t) BSL_Param);

       }

    然后、使用 Launchpad 中的应用 COM 端口、我使用 BSL Scripter 3.4.0.1与脚本直接通信:

    模式 P4xx UART 9600 COM10奇偶校验
    TX_BSL_VERSION_32
    RX_PASSWORD_32 .\pass256_wrong.txt
    RX_PASSWORD_32 .\pass256_default.txt
    TX_BSL_VERSION_32

    您能否尝试一下这个非常简单的测试、看看它是否正常工作? 如果是,则表示您的应用程序和 BSL 应用程序之间存在一些初始化冲突。

    查看您的代码片段:

    /*需要重置 UART A0以进行固件更新。 请确保使用
    *相应的 GPIO 输入引脚。 */
    UART_DisableModule (EUSCI_A0_BASE);
    GPIO_setAsInputPin (GPIO_PORT_P1、GPIO_PIN2);
    GPIO_setAsInputPin (GPIO_PORT_P1、GPIO_PIN3); 

    P1.2和 P1.3的引脚将由 BSL 初始化。 因此、我们只需禁用中断并清除 NVIC 寄存器即可。

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

    Adrian、

    对此进行了任何更新?

    BR、

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

    您好!

    在我之前的应用中、UART 在执行 BSL 调用代码之前进行了初始化、我修改了应用程序、因此 UART 在 BSL 调用之前未进行初始化、现在它可以工作(使用我之前发布的代码)、并且可以通过 BSL 脚本程序成功对器件进行编程。


    我使用的 BSL 调用代码是否未进行初始化并复位 UART 端口? 我认为这是一个线性问题:

    /*需要重置 UART A0以进行固件更新。 请确保使用
    *相应的 GPIO 输入引脚。 */
    UART_DisableModule (EUSCI_A0_BASE); 

    此外、您应该注意的重要事项。 您用于开票 BSL 的代码不会在 C++中编译、这已经提到过、我在下面的文章中发布了一个解决方案:
    https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/835833

    请相应地修改文档。

    此致

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

    当您说它现在可以工作时、这意味着使用 Launchpad、 还是使用 FTDI 适配器在您的电路中工作?  如果是后者、如果您可以在这里用完整指南回复、说明如果使用软件调用将这些适配器与 MSP432P401R 搭配使用、将会非常有帮助。 现在、答案似乎在这里和 StackOverflow 上的其他线程中被突出、最好将整个故事放在一个位置。

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

    它与连接到 MCU UART 端口的标准 FTDI 芯片配合使用。 我只使用 launchad 进行了测试、但我绕过 launchpad 中的 USB 转 UART 转换器、转而使用自己的转换器、因此在我的定制板中应该没有什么不同。

    我将再次使用我的定制板进行测试并在此处发布指南、但我需要先完成一些其他操作、然后再返回到该项目中。

    请将问题保持在打开状态、直到我能够这样做、可能在下周。

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

    您好、Adrian、

    您是否能够解决您的问题?

    谢谢、

    Riz

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

    您好!

    我已经使它起作用,但有几个问题

    请参阅我之前的帖子。

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

    我已经找到了一些时间来编写一份基本指南、介绍如何使用标准 FTDI 芯片通过 UART 对 MSP432P401R 进行编程
    我很可能遗漏了一些东西、因此请告诉我、以便修改。


    1.将 FTDI 芯片连接到 MCU 的 UART 端口,我在本例中使用的是 UCA0

    2.以下代码执行 BSL 的软件调用。 执行后、器件将在 BLS 模式下复位、您有一个短时间间隔(~10秒)与器件通信。  

    /*确保我们的 MPU 设置不会导致 BSL 出现问题。 /MPU_disableModule()
    ;
    
    /* BSL 不会初始化它使用的某些硬件。 它需要
    * SysTick (用于确定 UART 波特率)和计时器 A0 (用于设置
    * 10秒超时)。 准备好这些供 BSL 使用。 //
    SysTick 禁用中断();
    SysTick 禁用模块();
    Timer_a_stopTimer (timer_A0_BASE);
    
    
    //需要重置 UART A0以进行固件更新。 请确保使用
    *相应的 GPIO 输入引脚。 */
    UART_DisableModule (EUSCI_A0_BASE);
    GPIO_setAsInputPin (GPIO_PORT_P1、GPIO_PIN2);
    GPIO_setAsInputPin (GPIO_PORT_P1、GPIO_PIN3);
    
    interrupt_disableMaster();
    for (int i=0;i < 240;i++) NVIC->IP[i]= 0;//这很关键! 但是、SLAU622H 在调用软件时没有提到这一点。
    NVIC->icer[0]= 0xFFFF;
    NVIC->icer[1]= 0xFFFF;
    NVIC->ICPR[0]= 0xFFFF;
    NVIC->ICPR[1]= 0xFFFF;
    
    BSL_Invoke (BSL_UART_interface); 

    3.如果使用 C++、SimpleLink SDK "msp432p401m.h"将引发编译错误。 这 已在另一篇文章中得到通知 、但我相信 TI 没有跟进。 按如下方式进行修改、并应进行编译:

    第6869行:
    
    当前版本-->错误:
    
    #define BSL_Invoke (x) (((void (*)()) BSL_Entry_function)((uint32_t) x)/*!<使用参数调用 BSL *
    
    / OK 版本:
    
    #define BSL_invoke (x) ((void (*)(uint32_t)) BSL_entry_function)(((uint32_t) x)/*!<使用参数*/调用 BSL 

    4.使用 BSL 脚本程序运行以下脚本以与器件通信并加载.hex 或.txt 文件

    //
    ///脚本示例 MSP432 UART BSL
    //器件:MSP432P401R
    //通信网桥:XDS110 - MSP432LP BackChannelUART
    //对于此设置,需要
    //从脚本端设置奇偶校验
    //使用 MSP-BSL Rocket 时, 奇偶校验将由
    Rocket //
    
    通过
    UART BSL 将闪烁应用程序下载到//MSP432器件
    //
    日志
    模式 P4xx UART 9600 /dev/tty.usbmodem1421奇偶校验
    RX_PASSWORD_32 pass256_default.txt
    MUS_ERASE
    RX_DATA_BLOCK_32 Blink_LED.txt
    //RX_DATA_BLOCK _32 Blink_LED.ReadTX_BSL_VE_32
    
    TX_DATA_BLOCK_32
    0x4000 0x0000_TRK_32 0x4000 0x4000 ReadBlock_MSP432P401R.txt 0x4000_TRIP_32 0x16K_Tx32_TRIP_Tx32_TRIP_Tx32_TRIP_TRIP_TRIP_TRIP_0x4000 0x4000 0x4000
    

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

    好极了、Adrian。  非常感谢您的全面指南。  我想不到任何缺失的东西。

    很明显、由于您使用的是 BSL 的软件调用、因此您只使用了 FTDI 芯片的 Rx 和 Tx 引脚。 对吗?  因此、FTDI 的硬件调用选项仍然是一个未决问题。  但是、对于 那些想要使用通用 USB 适配器的用户来说、这种工作方式是非常棒的。