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: Flash Based USB DFU Boot Loader

Part Number: MSP432E401Y
Other Parts Discussed in Thread: UNIFLASH, SYSBIOS, TM4C1294NCPDT

After flashing the "MSP432E4 Flash Based USB DFU Boot Loader Example" output file to the 432 device I then put the 432 into bootloader mode by cycling power after grounding pin PJ0 to ground. Once in bootloader mode I then flash usb_serial_device_MSP_EXP432E401Y_tirtos_ccs.txt over USB using BSL-scripter and I get the following result.

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

PC software for BSL programming
2021-Oct-18 15:33:56
---------------------------------------------------------
Input file script is : C:/ti/BSL-Scripter/script_usb_serial_device_MSP_EXP432E401Y_tirtos_ccs.txt

MODE E4xx USB
Found device at USB port with device bus number : 0x01
and device address is: 0x08
Found DFU interface : 0x00
RX_DATA_BLOCK_FAST usb_serial_device_MSP_EXP432E401Y_tirtos_ccs.txt
Read Txt File : C:\ti\BSL-Scripter\usb_serial_device_MSP_EXP432E401Y_tirtos_ccs.txt
Time elapsed of writing 44272 bytes : 2.773 seconds
Speed of writing data :15.59(kB/s)
REBOOT_RESET

Once flashed I reset power and the 432 fails to show up in device manager under ports with a valid com assignment and I can no longer find DFU. To get the part functional again I must erase the device using Uniflash. The only changes I've made to the usb_serial_device_MSP_EXP432E401Y_tirtos_ccs example are below. What am I missing? Thanks!

Changes made to 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)
}

Original code:

/*
 *  ======== 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)
}

Added these 2 lines to the top of ..\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 */