Other Parts Discussed in Thread: CC2650, CC2640R2F, BLE-STACK, CC2640
Tool/software: TI C/C++ Compiler
I am trying to run the Project Zero code with my Launchpad CC2650. I have added some other implementation for integrating an external accelerometer via I2C. The configuration array for the accelerometer itself is about 9KB which is stored as a constant. I am wondering if this is triggering the issue.
When I try communicating with the accelerometer with an empty I2C project without Project Zero, I do not run into any issues. Is the combination of the Project Zero code with my I2C configuration causing the program to be too large? If so what can I do to resolve this problem? Currently, I have tried to optimize my code for space, which has been fruitless.
The error that I get is
"Program will not fit into available memory. Placement with alignment fails for section ".const" size 0x35f3.
Available memory ranges:
SRAM size: 0x43e7 unused: 0x358b max hole: 0x354c
"
Here is my cmd file. I'm not entirely sure what to do with this either, but I do know that memory sizes can be adjusted here (just not sure how or what to do).
//***************************************************************************** //! @file cc26xx_ble_app.cmd //! @brief CC2650F128 linker configuration file for TI-RTOS with //! Code Composer Studio. //! //! Revised $Date$ //! Revision $Revision$ // // Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ // // // 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. //****************************************************************************/ /* Retain interrupt vector table variable */ --retain=g_pfnVectors /* Override default entry point. */ --entry_point ResetISR /* Suppress warnings and errors: */ /* - 10063: Warning about entry point not being _c_int00 */ /* - 16011, 16012: 8-byte alignment errors. Observed when linking in object */ /* files compiled using Keil (ARM compiler) */ --diag_suppress=10063,16011,16012 /* The following command line options are set as part of the CCS project. */ /* If you are building using the command line, or for some reason want to */ /* define them here, you can uncomment and modify these lines as needed. */ /* If you are using CCS for building, it is probably better to make any such */ /* modifications in your CCS project and leave this file alone. */ /* */ /* --heap_size=0 */ /* --stack_size=256 */ /* --library=rtsv7M3_T_le_eabi.lib */ /* The starting address of the application. Normally the interrupt vectors */ /* must be located at the beginning of the application. */ #define APP_BASE 0x00000000 #define FLASH_SIZE 0x20000 #define RAM_BASE 0x20000000 #define RAM_SIZE 0x5000 /* System memory map */ MEMORY { /* EDITOR'S NOTE: * the FLASH and SRAM lengths can be changed by defining * ICALL_STACK0_ADDR or ICALL_RAM0_ADDR in * Properties->ARM Linker->Advanced Options->Command File Preprocessing. */ /* Application stored in and executes from internal flash */ /* Flash Size 128 KB */ #ifdef ICALL_STACK0_ADDR FLASH (RX) : origin = APP_BASE, length = ICALL_STACK0_ADDR - APP_BASE - 1 #else // default FLASH (RX) : origin = APP_BASE, length = 0x00008FFF #endif // CCFG Page, contains .ccfg code section and some application code. FLASH_LAST_PAGE (RX) : origin = FLASH_SIZE - 0x1000, length = 0x1000 /* Application uses internal RAM for data */ /* RAM Size 16 KB */ #ifdef ICALL_RAM0_ADDR SRAM (RWX) : origin = RAM_BASE, length = ICALL_RAM0_ADDR - RAM_BASE - 1 #else //default SRAM (RWX) : origin = RAM_BASE, length = 0x00002CFF #endif } /* Section allocation in memory */ SECTIONS { .intvecs : > APP_BASE .text : >> FLASH | FLASH_LAST_PAGE .const : >> FLASH | FLASH_LAST_PAGE .constdata : >> FLASH | FLASH_LAST_PAGE .rodata : >> FLASH | FLASH_LAST_PAGE .cinit : > FLASH | FLASH_LAST_PAGE .pinit : >> FLASH | FLASH_LAST_PAGE .init_array : >> FLASH | FLASH_LAST_PAGE .emb_text : >> FLASH | FLASH_LAST_PAGE .ccfg : > FLASH_LAST_PAGE (HIGH) .vtable : > SRAM .vtable_ram : > SRAM vtable_ram : > SRAM .data : > SRAM .bss : > SRAM .sysmem : > SRAM .stack : > SRAM (HIGH) .nonretenvar : > SRAM } /* Create global constant that points to top of stack */ /* CCS: Change stack size under Project Properties */ __STACK_TOP = __stack + __STACK_SIZE; /* Allow main() to take args */ --args 0x8