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/MSP-EXP432E401Y: #10264: DEFAULT memory range overlaps existing memory range FLASH when trying to make mqttclient example installable via serial bootloader

Part Number: MSP-EXP432E401Y

Tool/software: Code Composer Studio

Hello,

We are using the SimpleLink MSP-EXP432E401Y LaunchPad and CCS version 10  to explore the use of the EXP432E401Y  in an MQTT system.  One of the tasks included in the exploration is the ability to upgrade the firmware in the field. We have the serial bootloader examples working and now are trying to migrate the mqtt example so that it can be installed by the serial bootloader via the BSL tool.   Having looked at boot_serial_flash_app2_MSP_EXP432E401Y_nortos_ccs example we modified the MSP_EXP432E401Y_TIRTOS.cmd linker script   as below (changes highlighter by AMS):

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

#define APP_BASE 0x00004000 //AMS

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

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

/* Section allocation in memory */

SECTIONS
{
.intvecs: > APP_BASE // AMS
.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)
}

When we build the file we get the following:


**** Build of configuration Debug for project mqttclient_MSP_EXP432E401Y_tirtos_ccs ****

"C:\\ti\\ccs1000\\ccs\\utils\\bin\\gmake" -k -j 8 all -O

Building target: "mqttclient_MSP_EXP432E401Y_tirtos_ccs.out"
Invoking: ARM Linker
"C:/ti/ccs1000/ccs/tools/compiler/ti-cgt-arm_20.2.0.LTS/bin/armcl" -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --advice:power=none -g --diag_warning=225 --diag_warning=255 --diag_wrap=off --display_error_number --gen_func_subsections=on -z -m"mqttclient_MSP_EXP432E401Y_tirtos_ccs.map" -i"C:/ti/simplelink_msp432e4_sdk_4_10_00_13/source" -i"C:/ti/simplelink_msp432e4_sdk_4_10_00_13/kernel/tirtos/packages" -i"C:/ti/ccs1000/ccs/tools/compiler/ti-cgt-arm_20.2.0.LTS/lib" --diag_wrap=off --display_error_number --warn_sections --xml_link_info="mqttclient_MSP_EXP432E401Y_tirtos_ccs_linkInfo.xml" --rom_model -o "mqttclient_MSP_EXP432E401Y_tirtos_ccs.out" "./client_cbs.obj" "./main_tirtos.obj" "./mqttClientHooks.obj" "./mqtt_client_app.obj" "./syscfg/ti_net_config.obj" "./syscfg/ti_ndk_config.obj" "./syscfg/ti_drivers_config.obj" "./startsntp.obj" "./ap_serial_src/crc_8.obj" "./ap_serial_src/helpers.obj" "./ap_serial_src/memory.obj" "./ap_serial_src/pw_driver.obj" "./ap_serial_src/pw_hal.obj" "./ap_serial_src/serial_client.obj" "./ap_serial_src/timer1ms.obj" "../MSP_EXP432E401Y_TIRTOS.cmd" -l"ti/net/lib/ccs/m4f/slnetsock_release.a" -l"ti/net/sntp/lib/ccs/m4f/sntp_release.a" -l"ti/net/mqtt/lib/ccs/m4f/mqtt_release.a" -l"ti/net/http/lib/ccs/m4f/httpclient_release.a" -l"ti/net/http/lib/ccs/m4f/httpserver_release.a" -l"ti/ndk/slnetif/lib/slnetifndk_msp432e4.aem4f" -l"third_party/mbedtls/ti/lib/ccs/m4f/mbedtls_msp432e4.a" -l"ti/ndk/hal/timer_bios/lib/hal_timer.aem4f" -l"ti/ndk/hal/eth_stub/lib/hal_eth_stub.aem4f" -l"ti/ndk/tools/hdlc/lib/hdlc.aem4f" -l"ti/ndk/tools/console/lib/console_min_ipv4.aem4f" -l"ti/ndk/netctrl/lib/netctrl_min_ipv4.aem4f" -l"ti/ndk/nettools/lib/nettool_ipv4.aem4f" -l"ti/ndk/hal/ser_stub/lib/hal_ser_stub.aem4f" -l"ti/ndk/hal/userled_stub/lib/hal_userled_stub.aem4f" -l"ti/ndk/stack/lib/stk.aem4f" -l"ti/ndk/os/lib/os.aem4f" -l"ti/display/lib/display.aem4f" -l"ti/grlib/lib/ccs/m4f/grlib.a" -l"third_party/spiffs/lib/ccs/m4f/spiffs.a" -l"ti/drivers/lib/drivers_msp432e4.aem4f" -l"third_party/fatfs/lib/ccs/m4f/fatfs.a" -l"ti/dpl/lib/dpl_msp432e4.aem4f" -l"C:/Users/Andrew Spencer/workspace_v10/tirtos_builds_MSP_EXP432E401Y_release_ccs/Debug/configPkg/linker.cmd" -l"ti/devices/msp432e4/driverlib/lib/ccs/m4f/msp432e4_driverlib.a" -llibc.a
<Linking>
"C:/Users/Andrew Spencer/workspace_v10/tirtos_builds_MSP_EXP432E401Y_release_ccs/Debug/configPkg/linker.cmd", line 136: warning #10096-D: specified address lies outside memory map
error #10264: DEFAULT memory range overlaps existing memory range FLASH
error #10264: DEFAULT memory range overlaps existing memory range SRAM
error #10010: errors encountered during linking; "mqttclient_MSP_EXP432E401Y_tirtos_ccs.out" not built

>> Compilation failure
makefile:184: recipe for target 'mqttclient_MSP_EXP432E401Y_tirtos_ccs.out' failed
gmake[1]: *** [mqttclient_MSP_EXP432E401Y_tirtos_ccs.out] Error 1
gmake[1]: Target 'secondary-outputs' not remade because of errors.
makefile:177: recipe for target 'all' failed
gmake: *** [all] Error 2

**** Build Finished ****

In researching this error on google, others have seen this issue on other products and other versions of ccs and we see references to needing to change the base address in another place but we are struggling to see how to those fixes apply to the examples we have.

My thanks in advance for any help in resolving this issue.

Best Regards, Andrew Spencer

  • The mqttclient example you are starting with is TI-RTOS based and it seems like you are trying to mix RTOS based linker command file with a no-RTOS based one. The interrupt vector placement is different in those 2 cases and that is what is causing the conflicts. 

    In a TI-RTOS project, the generated file  Debug\configPkg\linker.cmd binds the reset vectors to address 0. But you no longer have address 0 defined in your linker command file, hence the linker error messages.

    I will assign this thread to the TI-RTOS experts so they can guide you on how to assign the BIOS interrupt vectors to a specific address.

  • Hello AartiG,

    Thank you for the update.  We will look forward to what the TI-RTOS experts can tell us.

    Best Regards, Andrew

  • Hello,

    Any update on when we might expect feedback on our question?

    Best Regards, Andrew

  • After waiting and not hearing back - I found resolution to the issue as documented in 

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

    "Open the release.cfg file in theTI-RTOS dependency project ( tirtos_builds_MSP_EXP432E401Y_release_ccs)   and add the following line immediately after the variable m3Hwi is initialized."

    1
    m3Hwi.resetVectorAddress = 0x00004000;

    Code now compiles and I can get the bootloader to install it.  It executes upon a reset.