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.

[参考译文] MSP432E401Y:基于闪存的 USB DFU 引导加载程序

Guru**** 2540710 points
Other Parts Discussed in Thread: UNIFLASH, TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1045753/msp432e401y-flash-based-usb-dfu-boot-loader

器件型号:MSP432E401Y
主题中讨论的其他器件:UNIFLASHSYSBIOSTM4C1294NCPDT

将"MSP432E4基于闪存的 USB DFU 引导加载程序示例"输出文件刷写到432器件后、我通过在将引脚 PJ0接地后循环通电源、将432置于引导加载程序模式。 进入引导加载程序模式后、我使用 BSL-scripter 通过 USB 闪存 usb_serial_device_MSP_EXP432E401Y_tirtos_ccs.txt、并获得以下结果。

C:\ti\BSL-Scripter>bsl-scripter.exe script_usb_serial_device_MSP_EXP432E401Y_tirtos_ccs.txt
--------------------------------------
BSL Scripter 3.4.0.1

用于 BSL 编程的 PC 软件
2021年10月18日15:33:56
--------------------------------------
输入文件脚本为:C:/ti/BSL-Scripter/script_usb_serial_device_MSP_EXP432E401Y_tirtos_ccs.txt

模式 E4xx USB
在 USB 端口找到设备总线编号为0x01的设备
器件地址为:0x08
找到 DFU 接口:0x00
RX_DATA_BLOCK_FAST usb_serial_device_MSP_EXP432E401Y_tirtos_ccs.txt
阅读 txt 文件:C:\ti\BSL-Scripter\usb_serial_device_MSP_EXP432E401Y_tirtos_ccs.txt
写入44272字节所用的时间:2.773秒
数据写入速度:15.59(kb/s)
reboot_reset

刷写后、I RESET 电源、432无法在具有有效 COM 分配的端口下显示在设备管理器中、因此我无法再找到 DFU。 为了使该部件再次正常工作、我必须使用 Uniflash 擦除器件。 下面是我对  USB_serial_device_MSP_EXP432E401Y_tirtos_ccs 示例所做的唯一更改。 我缺少什么? 谢谢!

对 MSP_EXP432E401Y_TIRTOS.cmd 所做的更改:

#define BOOTLOADER_CODE 1 

/*
 *  ======== MSP_EXP432E401Y_TIRTOS.cmd ========
 *  Define the memory block start/length for the MSP_EXP432E401Y M4F
 */
--stack_size=1024   /* C stack is also used for ISR stack */

HEAPSIZE = 0x20000;  /* Size of heap buffer used by HeapMem */

#if BOOTLOADER_CODE
    #define APP_BASE 0x00004000
#else
    #define APP_BASE 0x00000000
#endif

MEMORY
{
    FLASH (RX) : origin = APP_BASE, length = (0x00100000 - APP_BASE)
    SRAM (RWX) : origin = 0x20000000, length = 0x00040000
}

/* Section allocation in memory */

SECTIONS
{
	.intvecs:   > APP_BASE
    .text   :   > FLASH
    .const  :   > FLASH
    .rodata :   > FLASH
    .cinit  :   > FLASH
    .pinit  :   > FLASH
    .init_array : > FLASH

    .TI.ramfunc : {} load=FLASH, run=SRAM, table(BINIT)
    .data   :   > SRAM
    .bss    :   > SRAM
    .sysmem :   > SRAM

    /* Heap buffer used by HeapMem */
    .priheap   : {
        __primary_heap_start__ = .;
        . += HEAPSIZE;
        __primary_heap_end__ = .;
    } > SRAM align 8

    .stack  :   > SRAM (HIGH)
}

原始代码:

/*
 *  ======== MSP_EXP432E401Y_TIRTOS.cmd ========
 *  Define the memory block start/length for the MSP_EXP432E401Y M4F
 */
--stack_size=1024   /* C stack is also used for ISR stack */

HEAPSIZE = 0x20000;  /* Size of heap buffer used by HeapMem */

MEMORY
{
    FLASH (RX) : origin = 0x00000000, length = 0x00100000
    SRAM (RWX) : origin = 0x20000000, length = 0x00040000
}

/* Section allocation in memory */

SECTIONS
{
    .text   :   > FLASH
    .const  :   > FLASH
    .rodata :   > FLASH
    .cinit  :   > FLASH
    .pinit  :   > FLASH
    .init_array : > FLASH

    .TI.ramfunc : {} load=FLASH, run=SRAM, table(BINIT)
    .data   :   > SRAM
    .bss    :   > SRAM
    .sysmem :   > SRAM

    /* Heap buffer used by HeapMem */
    .priheap   : {
        __primary_heap_start__ = .;
        . += HEAPSIZE;
        __primary_heap_end__ = .;
    } > SRAM align 8

    .stack  :   > SRAM (HIGH)
}

将这2行添加到 了..\USB_serial_device_tirtos\tirtos_builds_MSP_EXP432E401Y_RELEASE_CCS\release.cfg 顶部

var m3Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi');
m3Hwi.resetVectorAddress = 0x4000; /* App base */

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

    您可以尝试此操作、XDS110使用 MSP432E 器件、与 TM4C1294NCPDT 类似。  https://software-dl.ti.com/ccs/esd/documents/xdsdebugprobes/emu_xds110.html 

    1. 断开 XDS110与 USB 端口的连接、将其断电。

    2. 将 XDS110 TM4C1294NCPDT 器件的 JTAG TDO 引脚(128引脚封装器件的引脚97)接地。

    3. 将 XDS110重新连接到 USB 端口,然后为其加电。  此时、XDS110应处于 DFU 模式。

    4. 断开 JTAG TDO 管脚与地的连接。

    4. 要确保 XDS110处于 DFU 模式、请发出以下命令:

    C:\ti\ccs1040\ccs\base\con\uscif\xds110>xdsdfu -e

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

    我的问题并不是我无法使其进入 DFU 模式、问题是一旦它成功闪烁、 应用的代码不起作用、我无法再进入 DFU、除非我完全擦除器件、然后使用 "MSP432E4基于闪存的 USB DFU 引导加载程序示例"输出重新闪存。 我添加到 release.cfg 的2行是否与我的特定器件不正确? 此外、我无法通过将 TD0接地将器件接入 DFU。

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

    你(们)好

    我在这里尝试了演示代码 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\nortos\MSP_EXP432E401Y\boot_loader\boot_serial_USB_flash

    这不是 TIRTOS 版本、我没有试过它。 当我向下加载项目并重新为其供电时、将 USB 插入 PC 并发现它处于 DFU 模式。

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

    又来了… 问题不在于器件最初进入 DFU。 我会将其分解为几个步骤、以便您能够清楚地理解。

    使用  CCS 构建和编译 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\nortos\MSP_EXP432E401Y\boot_loader\boot_serial_USB_flash  11.0.0.00012。

    2.使用  BSL-scripter 将 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\nortos\MSP_EXP432E401Y\boot_loader\boot_serial_USB_flash 刷写到 MSP432。

    3.使用 #define bootloader_code 1时我在初始帖子中概述的更改、构建并编译 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\rtos\MSP_EXP432E401Y\usblib\USB_serial_device\tirtos\ccs 的 tros 版本

    4.将 MSP432放入 DFU。

    5.使用 BSL 脚本编写器通过 usb_serial_device_MSP_EXP432E401Y_tirtos_ccs.txt 刷写 MSP432

    6.闪存并重启后、代码 usb_serial_device_MSP_EXP432E401Y_tirtos_ccs.txt 无法执行。

    7. MSP432将不再进入 DFU 模式。

    8.要使处理器脱离其欺骗状态,我必须使用"XDS110调试探针"将其擦除。

    我猜我对"C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\rtos\MSP_EXP432E401y\usblib\USB_serial_device\tirtos\ccs"项目所做的更改有问题、您能否按照上面所示检查这些更改、请告知我。

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

    可以帮我解决这个问题吗?

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

    你(们)好

    首先、如果您没有对演示代码进行任何更改、它是否起作用?

    您也可以尝试使用此工具 xdsdfu.exe

    位于 C:\ti\ccs_base\common\uscif\xds110  

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

    是的、使用 Uniflash 刷写时、演示的工作方式不变。 当我进行上述更改以便与 DFU 配合使用时、代码将闪烁但不执行。

    我尝试了 xdsdfu.exe、但也不起作用。

    您是否在上面的代码更改中看到任何错误?

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

    首先、如果您定义 #define bootloader_code 0、它是否起作用?

    第二、如何根据以下项目修改.cmd 文件?

    C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\nortos\MSP_EXP432E401Y\boot_loader\boot_serial_USB_flash

     

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

    是的、如果 #define bootloader_code 0和我在"..\USB_serial_device_tirtos\tirtos_builds_MSP_EXP432E401Y_release_ccs\release.cfg"中添加的两行被注释掉、并且使用 Uniflash 刷写代码会按预期执行。  

    我需要在地址 #define APP_BASE 0x00004000处加载"USB_serial_DEVICE_MSP_EXP432E401Y_tirtos_ccs"、以避免与 DFU 代码冲突。 将.cmd 文件基于"C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\nortos\MSP_EXP432E401Y\boot_loader\boot_serial_USB_flash"可获得什么好处?

    我已将修改后的代码放在"">tidrive.ext.ti.com/.../2696ac95-ab64-44e1-8efc-7673eb2a3666 DFU 流程的人可以尝试/查看吗?

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

    我认为这可能与中断矢量有关。 硬件中断位于0x0000地址的开头、您可以自行定义该地址。 我不知道为什么要这样做、将引导加载程序代码从0x4000开始、从0x0000开始有什么问题?

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

    我不是在0x4000处启动引导加载程序代码、您看到的是我对 "C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\nortos\MSP_EXP432E401Y\boot_loader\boot_serial_USB_flash"进行的编辑、以便获取"cBoot_4_sdk\nortos\m32_4_ex4_export_ex4_examples :\msp4_boot_work_64_boot_examples\con_boot_boot_64_examples\con_boot_boot_boot_64_examples\con_boot_boot_boot_boot_boot_64_examples\c

    在我对 "C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\nortos\MSP_EXP432E401Y\boot_loader\boot_serial_USB_flash"所做的编辑中、您是否看到任何错误?

    您是否从链接中提取了代码并进行了尝试?

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

    您是否有机会在链接中尝试该代码?

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

    我们非常感谢您在这个问题上的帮助。

    谢谢你。

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

    Gary、您是否有机会在链接中试用该代码?

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

    你(们)好

    我找到了与此主题类似的主题。 您可以尝试查看它是否有用

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1043370/msp432e401y-apply-bsl-usb-dfu-to-ti-rtos-example-bsl-fail-to-activate-the-ti-rtos-application-but-the-application-works-under-debug?tisearch=e2e-sitesearch&keymatch=RTOS#