Part Number:CC3220S-LAUNCHXL
Tool/software: Code Composer Studio
Hello,
I'm running pretty tight on RAM. The .lds file appears to have all the linker instructions, so do I just directly modify this file or does it get blown away because it is just auto generated by another tool? Also, can I move .data to SRAM0? Are there an implications of doing so? .data is ~10k right now so it appears that it will fit.
Is it really just as simple as changing REGION_ALIAS("REGION_DATA", SRAM); to REGION_ALIAS("REGION_DATA", SRAM0);
/* * Copyright (c) 2016, Texas Instruments Incorporated * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * ======== CC3220S_LAUNCHXL_TIRTOS.lds ======== * Define the memory block start/length for the MSP_EXP432P401R M4 */ STACKSIZE = 1024; HEAPSIZE = 0x8000; /* Size of heap buffer used by HeapMem */ MEMORY { SRAM0 (RWX) : ORIGIN = 0x20000000, LENGTH = 0x00004000 SRAM (RWX) : ORIGIN = 0x20004000, LENGTH = 0x0003c000 } REGION_ALIAS("REGION_RAM_VECS", SRAM0); REGION_ALIAS("REGION_TEXT", SRAM); REGION_ALIAS("REGION_BSS", SRAM); REGION_ALIAS("REGION_DATA", SRAM); REGION_ALIAS("REGION_STACK", SRAM); REGION_ALIAS("REGION_HEAP", SRAM); REGION_ALIAS("REGION_ARM_EXIDX", SRAM); REGION_ALIAS("REGION_ARM_EXTAB", SRAM); SECTIONS { PROVIDE (_vtable_base_address = DEFINED(_vtable_base_address) ? _vtable_base_address : 0x20000000); .vtable (_vtable_base_address) (NOLOAD) : { KEEP (*(.vtable)) } > REGION_RAM_VECS PROVIDE (_intvecs_base_address = DEFINED(_intvecs_base_address) ? _intvecs_base_address : 0x20004000); .intvecs (_intvecs_base_address) : AT (_intvecs_base_address) { KEEP (*(.intvecs)) } > REGION_TEXT .text : { CREATE_OBJECT_SYMBOLS *(.text) *(.text.*) . = ALIGN(0x4); KEEP (*(.ctors)) . = ALIGN(0x4); KEEP (*(.dtors)) . = ALIGN(0x4); __init_array_start = .; KEEP (*(.init_array*)) __init_array_end = .; *(.init) *(.fini*) } > REGION_TEXT AT> REGION_TEXT PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata) *(.rodata*) } > REGION_TEXT AT> REGION_TEXT .data : ALIGN (4) { __data_load__ = LOADADDR (.data); __data_start__ = .; *(.data) *(.data*) . = ALIGN (4); __data_end__ = .; } > REGION_DATA AT> REGION_TEXT .ARM.exidx : { __exidx_start = .; *(.ARM.exidx* .gnu.linkonce.armexidx.*) __exidx_end = .; } > REGION_ARM_EXIDX AT> REGION_ARM_EXIDX .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } > REGION_ARM_EXTAB AT> REGION_ARM_EXTAB .bss : { __bss_start__ = .; *(.shbss) *(.bss) *(.bss.*) *(COMMON) . = ALIGN (4); __bss_end__ = .; } > REGION_BSS AT> REGION_BSS .heap : { __heap_start__ = .; end = __heap_start__; _end = end; __end = end; KEEP (*(.heap)) __heap_end__ = .; __HeapLimit = __heap_end__; } > REGION_HEAP AT> REGION_HEAP /* Heap buffer used by HeapMem */ .priheap : { . = ALIGN (8); __primary_heap_start__ = .; . += HEAPSIZE; __primary_heap_end__ = .; } > REGION_HEAP AT> REGION_HEAP .stack (NOLOAD) : ALIGN(0x8) { _stack = .; __stack = .; KEEP (*(.stack)) . += STACKSIZE; } > REGION_STACK AT> REGION_STACK }