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/cc2640: Release build fails optimization while Debug build does not fail at same optimization parameters

Part Number: CC2640

Tool/software: Code Composer Studio

I have been developing my code for many months now and have finally decided to try a 'Release' build.

The program is large but runs well in Debug mode at Optimization levels shown here:

BUT at the same optimization parameters, the program fails miserably, in Release mode, at being able to fit in memory as shown here:

I hope that the Release configuration just needs to be tweaked but I can not figure out the tweak.

Any ideas?

Thanks,

Dale

  • So far I have simply made a copy of my Debug configuration and removed the _DEBUG define and that config builds fine.

    What else would normally be done in a Release configuration that I should add to my new 'Debug-no-_DEBUG-defined' configuration?

    As far as getting my Release configuration to build, I have compared the makefile from the Debug and Release configuration builds.

    There are many differences, mostly in what files are included but I don't know why they are missing from the Release, any ideas how to fix this? (makefile comparison showing all significant differences is shown below)

    Debug makefile on left and Release makefile on right

  • Dale,

    How was the 'Release' configuration initially created? Is this a project you created from scratch that initially created the Debug and Release configs? Or was it a project you copied over from some TI example?

    I think that comparing the build output of the Debug and Release build configurations for your project (by taking a close look at the CCS build console) should point you in the right direction. Let us know if that helps or if you need further assistance in tracking down the differences.
  • Dale,

    I assume you've been able to move forward on this by creating a new Release build configuration. However, if you still need assistance with understanding why your previous Release config failed to build, please attach the complete build logs for both the Debug and Release builds and we can take a look. If not, we will consider this issue resolved and close out the thread. Thanks!
  • AartiG,

    Sorry I have not figured this out yet.  I am continuing to develop my program in Debug configuration.  As you said in this posting, there is no way to create a new Release build configuration, so how do you assume I carried on by creating a new Release build config?

    https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/664004

    This project began as a ProjectZero.

    Here are copies of the Console for both builds:

    **** Build of configuration Debug for project Quyak ****
    
    "C:\\ti\\ccsv7\\utils\\bin\\gmake" -k -j 4 all -O 
    'Building file: ../Application/Quyak.c'
    'Invoking: ARM Compiler'
    "C:/ti/ccsv7/tools/compiler/ti-cgt-arm_5.2.6/bin/armcl" --cmd_file="C:/ti/simplelink/ble_sdk_2_02_01_18/src/config/build_components.opt" --cmd_file="C:/Users/Dale/workspace_Quyak_I2C/Quyak221Stack/TOOLS/build_config.opt" --cmd_file="C:/Users/Dale/workspace_Quyak_I2C/Quyak221Stack/TOOLS/ccs_compiler_defines.bcfg"  -mv7M3 --code_state=16 --abi=eabi -me -O4 --opt_for_speed=5 --include_path="C:/Users/Dale/workspace_Quyak_I2C/Quyak/Profiles" --include_path="C:/Users/Dale/workspace_Quyak_I2C/Quyak/Application" --include_path="C:/Users/Dale/workspace_Quyak_I2C/Quyak/ICallBLE" --include_path="C:/Users/Dale/workspace_Quyak_I2C/Quyak/Startup" --include_path="C:/Users/Dale/workspace_Quyak_I2C/Quyak/Board" --include_path="C:/ti/simplelink_academy_01_11_00_0000/modules/projects/support_files/Components/uart_log" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/examples/simple_peripheral/cc26xx/app" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/icall/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/profiles/roles/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/profiles/roles" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/profiles/dev_info" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/profiles/simple_profile/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/profiles/simple_profile" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/common/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/heapmgr" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/controller/cc26xx/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/hal/src/target/_common" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/hal/src/target" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/hal/src/target/_common/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/hal/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/osal/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/services/src/sdata" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/services/src/saddr" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/icall/src/inc" --include_path="C:/ti/tirtos_cc13xx_cc26xx_2_20_01_08/products/cc26xxware_2_24_02_17393" --include_path="C:/ti/ccsv7/tools/compiler/ti-cgt-arm_5.2.6/include" -g --c99 --gcc --define=_DEBUG --define=FEATURE_OAD --define=USE_ICALL --define=POWER_SAVING --define=SBP_TASK_STACK_SIZE=850 --define=GAPROLE_TASK_STACK_SIZE=802 --define=HEAPMGR_SIZE=0 --define=Display_DISABLE_ALL --define=BOARD_DISPLAY_EXCLUDE_UART --define=xBOARD_DISPLAY_EXCLUDE_LCD --define=ICALL_MAX_NUM_TASKS=3 --define=ICALL_MAX_NUM_ENTITIES=6 --define=xdc_runtime_Assert_DISABLE_ALL --define=xdc_runtime_Log_DISABLE_ALL --define=MAX_NUM_BLE_CONNS=1 --define=CC26XX --define=xdc_FILE="\"Quyak.c\"" --define=UARTLOG_NUM_EVT_BUF=32 --display_error_number --diag_warning=225 --diag_warning=255 --diag_wrap=off --gen_func_subsections=on --preproc_with_compile --preproc_dependency="Application/Quyak.d" --obj_directory="Application" --cmd_file="configPkg/compiler.opt" "../Application/Quyak.c"
    'Finished building: ../Application/Quyak.c'
    ' '
    'Building target: Quyak.out'
    'Invoking: ARM Linker'
    "C:/ti/ccsv7/tools/compiler/ti-cgt-arm_5.2.6/bin/armcl" --cmd_file="C:/ti/simplelink/ble_sdk_2_02_01_18/src/config/build_components.opt" --cmd_file="C:/Users/Dale/workspace_Quyak_I2C/Quyak221Stack/TOOLS/build_config.opt" --cmd_file="C:/Users/Dale/workspace_Quyak_I2C/Quyak221Stack/TOOLS/ccs_compiler_defines.bcfg"  -mv7M3 --code_state=16 --abi=eabi -me -O4 --opt_for_speed=5 -g --c99 --gcc --define=_DEBUG --define=FEATURE_OAD --define=USE_ICALL --define=POWER_SAVING --define=SBP_TASK_STACK_SIZE=850 --define=GAPROLE_TASK_STACK_SIZE=802 --define=HEAPMGR_SIZE=0 --define=Display_DISABLE_ALL --define=BOARD_DISPLAY_EXCLUDE_UART --define=xBOARD_DISPLAY_EXCLUDE_LCD --define=ICALL_MAX_NUM_TASKS=3 --define=ICALL_MAX_NUM_ENTITIES=6 --define=xdc_runtime_Assert_DISABLE_ALL --define=xdc_runtime_Log_DISABLE_ALL --define=MAX_NUM_BLE_CONNS=1 --define=CC26XX --define=xdc_FILE="\"\"" --define=UARTLOG_NUM_EVT_BUF=32 --display_error_number --diag_warning=225 --diag_warning=255 --diag_wrap=off --gen_func_subsections=on -z -m"Quyak.map" --stack_size=256 --heap_size=0 -i"C:/ti/ccsv7/tools/compiler/ti-cgt-arm_5.2.6/lib" -i"C:/ti/ccsv7/tools/compiler/ti-cgt-arm_5.2.6/include" --reread_libs --warn_sections --diag_wrap=off --display_error_number --diag_suppress=16002-D --diag_suppress=10247-D --diag_suppress=10325-D --diag_suppress=10229-D --xml_link_info="Quyak_linkInfo.xml" --rom_model -o "Quyak.out" "./Application/Quyak.obj" "./Application/util.obj" "./Board/QuyakV2a.obj" "./Drivers/ECC/ECCROMCC26XX.obj" "./Drivers/SPI/SPI.obj" "./Drivers/SPI/SPICC26XXDMA.obj" "./Drivers/TRNG/TRNGCC26XX.obj" "./ICall/icall.obj" "./ICall/icall_cc2650.obj" "./ICallBLE/ble_user_config.obj" "./ICallBLE/icall_api.obj" "./Middleware/extflash/ExtFlash.obj" "./PROFILES/gatt_uuid.obj" "./PROFILES/gattservapp_util.obj" "./PROFILES/halo_service.obj" "./PROFILES/oad_target_external_flash.obj" "./PROFILES/peripheral.obj" "./Startup/ccfg_app_ble.obj" "./Startup/main.obj" "./Utils/uart_logs.obj" -l"configPkg/linker.cmd" -l"C:/ti/tirtos_cc13xx_cc26xx_2_20_01_08/products/cc26xxware_2_24_02_17393/driverlib/bin/ccs/driverlib.lib" -l"C:/ti/simplelink/ble_sdk_2_02_01_18/src/rom/common_rom_releases/03282014/common_rom.symbols" -l"C:/Users/Dale/workspace_Quyak_I2C/Quyak221Stack/TOOLS/ccs_linker_defines.cmd" -l"C:/ti/simplelink/ble_sdk_2_02_01_18/src/common/cc26xx/ccs/cc26xx_app.cmd" -llibc.a -llibc.a 
    <Linking>
    'Finished building target: Quyak.out'
    ' '
    C:/ti/ccsv7/tools/compiler/ti-cgt-arm_5.2.6/bin/armhex -order MS --memwidth=8 --romwidth=8 --intel -o      Quyak.hex Quyak.out
    Translating to Intel format...
       "Quyak.out" .resetVecs ==> .resetVecs
       "Quyak.out" .text.1 ==> .text.1
       "Quyak.out" .const:ti_sysbios_knl_Task_Object__PARAMS__C ==> .const:ti_sysbios_knl_Task_Object__PARAMS__C
       "Quyak.out" .const:ti_sysbios_knl_Mailbox_Object__PARAMS__C ==> .const:ti_sysbios_knl_Mailbox_Object__PARAMS__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_Hwi_Object__PARAMS__C ==> .const:ti_sysbios_family_arm_m3_Hwi_Object__PARAMS__C
       "Quyak.out" .const:ti_sysbios_hal_Hwi_Object__PARAMS__C ==> .const:ti_sysbios_hal_Hwi_Object__PARAMS__C
       "Quyak.out" .const:ti_sysbios_heaps_HeapMem_Module__FXNS__C ==> .const:ti_sysbios_heaps_HeapMem_Module__FXNS__C
       "Quyak.out" .const:ti_sysbios_knl_Swi_Object__PARAMS__C ==> .const:ti_sysbios_knl_Swi_Object__PARAMS__C
       "Quyak.out" .const:ti_sysbios_gates_GateHwi_Module__FXNS__C ==> .const:ti_sysbios_gates_GateHwi_Module__FXNS__C
       "Quyak.out" .const:ti_sysbios_gates_GateMutex_Module__FXNS__C ==> .const:ti_sysbios_gates_GateMutex_Module__FXNS__C
       "Quyak.out" .const:ti_sysbios_heaps_HeapMem_Object__PARAMS__C ==> .const:ti_sysbios_heaps_HeapMem_Object__PARAMS__C
       "Quyak.out" .const:ti_sysbios_knl_Clock_Object__PARAMS__C ==> .const:ti_sysbios_knl_Clock_Object__PARAMS__C
       "Quyak.out" .const:ti_sysbios_knl_Semaphore_Object__PARAMS__C ==> .const:ti_sysbios_knl_Semaphore_Object__PARAMS__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_Hwi_Object__DESC__C ==> .const:ti_sysbios_family_arm_m3_Hwi_Object__DESC__C
       "Quyak.out" .const:ti_sysbios_gates_GateHwi_Object__DESC__C ==> .const:ti_sysbios_gates_GateHwi_Object__DESC__C
       "Quyak.out" .const:ti_sysbios_gates_GateMutex_Object__DESC__C ==> .const:ti_sysbios_gates_GateMutex_Object__DESC__C
       "Quyak.out" .const:ti_sysbios_hal_Hwi_Object__DESC__C ==> .const:ti_sysbios_hal_Hwi_Object__DESC__C
       "Quyak.out" .const:ti_sysbios_heaps_HeapMem_Object__DESC__C ==> .const:ti_sysbios_heaps_HeapMem_Object__DESC__C
       "Quyak.out" .const:ti_sysbios_knl_Clock_Object__DESC__C ==> .const:ti_sysbios_knl_Clock_Object__DESC__C
       "Quyak.out" .const:ti_sysbios_knl_Mailbox_Object__DESC__C ==> .const:ti_sysbios_knl_Mailbox_Object__DESC__C
       "Quyak.out" .const:ti_sysbios_knl_Queue_Object__DESC__C ==> .const:ti_sysbios_knl_Queue_Object__DESC__C
       "Quyak.out" .const:ti_sysbios_knl_Semaphore_Object__DESC__C ==> .const:ti_sysbios_knl_Semaphore_Object__DESC__C
       "Quyak.out" .const:ti_sysbios_knl_Swi_Object__DESC__C ==> .const:ti_sysbios_knl_Swi_Object__DESC__C
       "Quyak.out" .const:ti_sysbios_knl_Task_Object__DESC__C ==> .const:ti_sysbios_knl_Task_Object__DESC__C
       "Quyak.out" .const:ti_sysbios_gates_GateHwi_Object__PARAMS__C ==> .const:ti_sysbios_gates_GateHwi_Object__PARAMS__C
       "Quyak.out" .const:ti_sysbios_gates_GateMutex_Object__PARAMS__C ==> .const:ti_sysbios_gates_GateMutex_Object__PARAMS__C
       "Quyak.out" .const:ti_sysbios_knl_Queue_Object__PARAMS__C ==> .const:ti_sysbios_knl_Queue_Object__PARAMS__C
       "Quyak.out" .const:ti_sysbios_knl_Idle_funcList__C ==> .const:ti_sysbios_knl_Idle_funcList__C
       "Quyak.out" .text.2 ==> .text.2
       "Quyak.out" .const:ti_sysbios_family_arm_cc26xx_Timer_startupNeeded__C ==> .const:ti_sysbios_family_arm_cc26xx_Timer_startupNeeded__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_Hwi_E_alreadyDefined__C ==> .const:ti_sysbios_family_arm_m3_Hwi_E_alreadyDefined__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_Hwi_E_hwiLimitExceeded__C ==> .const:ti_sysbios_family_arm_m3_Hwi_E_hwiLimitExceeded__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_Hwi_NUM_INTERRUPTS__C ==> .const:ti_sysbios_family_arm_m3_Hwi_NUM_INTERRUPTS__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_Hwi_Object__count__C ==> .const:ti_sysbios_family_arm_m3_Hwi_Object__count__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_Hwi_Object__table__C ==> .const:ti_sysbios_family_arm_m3_Hwi_Object__table__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_Hwi_ccr__C ==> .const:ti_sysbios_family_arm_m3_Hwi_ccr__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_Hwi_excHandlerFunc__C ==> .const:ti_sysbios_family_arm_m3_Hwi_excHandlerFunc__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_Hwi_nullIsrFunc__C ==> .const:ti_sysbios_family_arm_m3_Hwi_nullIsrFunc__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_Hwi_numSparseInterrupts__C ==> .const:ti_sysbios_family_arm_m3_Hwi_numSparseInterrupts__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_Hwi_priGroup__C ==> .const:ti_sysbios_family_arm_m3_Hwi_priGroup__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_TaskSupport_stackAlignment__C ==> .const:ti_sysbios_family_arm_m3_TaskSupport_stackAlignment__C
       "Quyak.out" .const:ti_sysbios_heaps_HeapMem_E_memory__C ==> .const:ti_sysbios_heaps_HeapMem_E_memory__C
       "Quyak.out" .const:ti_sysbios_heaps_HeapMem_Module__gateObj__C ==> .const:ti_sysbios_heaps_HeapMem_Module__gateObj__C
       "Quyak.out" .const:ti_sysbios_heaps_HeapMem_Object__count__C ==> .const:ti_sysbios_heaps_HeapMem_Object__count__C
       "Quyak.out" .const:ti_sysbios_heaps_HeapMem_Object__table__C ==> .const:ti_sysbios_heaps_HeapMem_Object__table__C
       "Quyak.out" .const:ti_sysbios_heaps_HeapMem_reqAlign__C ==> .const:ti_sysbios_heaps_HeapMem_reqAlign__C
       "Quyak.out" .const:ti_sysbios_knl_Clock_serviceMargin__C ==> .const:ti_sysbios_knl_Clock_serviceMargin__C
       "Quyak.out" .const:ti_sysbios_knl_Mailbox_Object__count__C ==> .const:ti_sysbios_knl_Mailbox_Object__count__C
       "Quyak.out" .const:ti_sysbios_knl_Mailbox_Object__table__C ==> .const:ti_sysbios_knl_Mailbox_Object__table__C
       "Quyak.out" .const:ti_sysbios_knl_Queue_Object__count__C ==> .const:ti_sysbios_knl_Queue_Object__count__C
       "Quyak.out" .const:ti_sysbios_knl_Queue_Object__table__C ==> .const:ti_sysbios_knl_Queue_Object__table__C
       "Quyak.out" .const:ti_sysbios_knl_Swi_Object__count__C ==> .const:ti_sysbios_knl_Swi_Object__count__C
       "Quyak.out" .const:ti_sysbios_knl_Swi_Object__table__C ==> .const:ti_sysbios_knl_Swi_Object__table__C
       "Quyak.out" .const:ti_sysbios_knl_Swi_numPriorities__C ==> .const:ti_sysbios_knl_Swi_numPriorities__C
       "Quyak.out" .const:ti_sysbios_knl_Task_Object__count__C ==> .const:ti_sysbios_knl_Task_Object__count__C
       "Quyak.out" .const:ti_sysbios_knl_Task_Object__table__C ==> .const:ti_sysbios_knl_Task_Object__table__C
       "Quyak.out" .const:ti_sysbios_knl_Task_allBlockedFunc__C ==> .const:ti_sysbios_knl_Task_allBlockedFunc__C
       "Quyak.out" .const:ti_sysbios_knl_Task_defaultStackHeap__C ==> .const:ti_sysbios_knl_Task_defaultStackHeap__C
       "Quyak.out" .const:ti_sysbios_knl_Task_defaultStackSize__C ==> .const:ti_sysbios_knl_Task_defaultStackSize__C
       "Quyak.out" .const:ti_sysbios_knl_Task_numConstructedTasks__C ==> .const:ti_sysbios_knl_Task_numConstructedTasks__C
       "Quyak.out" .text.3 ==> .text.3
       "Quyak.out" .const:ti_sysbios_family_arm_cc26xx_Timer_Module__id__C ==> .const:ti_sysbios_family_arm_cc26xx_Timer_Module__id__C
       "Quyak.out" .const:ti_sysbios_family_arm_cc26xx_TimestampProvider_useClockTimer__C ==> .const:ti_sysbios_family_arm_cc26xx_TimestampProvider_useClockTimer__C
       "Quyak.out" .const:ti_sysbios_family_arm_m3_Hwi_Module__id__C ==> .const:ti_sysbios_family_arm_m3_Hwi_Module__id__C
       "Quyak.out" .const:ti_sysbios_gates_GateHwi_Module__id__C ==> .const:ti_sysbios_gates_GateHwi_Module__id__C
       "Quyak.out" .const:ti_sysbios_gates_GateMutex_Module__id__C ==> .const:ti_sysbios_gates_GateMutex_Module__id__C
       "Quyak.out" .const:ti_sysbios_heaps_HeapMem_Module__id__C ==> .const:ti_sysbios_heaps_HeapMem_Module__id__C
       "Quyak.out" .const:ti_sysbios_knl_Task_initStackFlag__C ==> .const:ti_sysbios_knl_Task_initStackFlag__C
       "Quyak.out" .const:ti_sysbios_knl_Clock_tickMode__C ==> .const:ti_sysbios_knl_Clock_tickMode__C
       "Quyak.out" .const:xdc_runtime_Startup_firstFxns__C ==> .const:xdc_runtime_Startup_firstFxns__C
       "Quyak.out" .const:xdc_runtime_Startup_lastFxns__C ==> .const:xdc_runtime_Startup_lastFxns__C
       "Quyak.out" .const:xdc_runtime_Assert_E_assertFailed__C ==> .const:xdc_runtime_Assert_E_assertFailed__C
       "Quyak.out" .const:xdc_runtime_Error_E_memory__C ==> .const:xdc_runtime_Error_E_memory__C
       "Quyak.out" .const:xdc_runtime_Error_policyFxn__C ==> .const:xdc_runtime_Error_policyFxn__C
       "Quyak.out" .const:xdc_runtime_IGateProvider_Interface__BASE__C ==> .const:xdc_runtime_IGateProvider_Interface__BASE__C
       "Quyak.out" .const:xdc_runtime_IHeap_Interface__BASE__C ==> .const:xdc_runtime_IHeap_Interface__BASE__C
       "Quyak.out" .const:xdc_runtime_IModule_Interface__BASE__C ==> .const:xdc_runtime_IModule_Interface__BASE__C
       "Quyak.out" .const:xdc_runtime_Main_Module__diagsEnabled__C ==> .const:xdc_runtime_Main_Module__diagsEnabled__C
       "Quyak.out" .const:xdc_runtime_Main_Module__diagsIncluded__C ==> .const:xdc_runtime_Main_Module__diagsIncluded__C
       "Quyak.out" .const:xdc_runtime_Main_Module__diagsMask__C ==> .const:xdc_runtime_Main_Module__diagsMask__C
       "Quyak.out" .const:xdc_runtime_Memory_defaultHeapInstance__C ==> .const:xdc_runtime_Memory_defaultHeapInstance__C
       "Quyak.out" .const:xdc_runtime_Startup_execImpl__C ==> .const:xdc_runtime_Startup_execImpl__C
       "Quyak.out" .const:xdc_runtime_Startup_maxPasses__C ==> .const:xdc_runtime_Startup_maxPasses__C
       "Quyak.out" .const:xdc_runtime_Startup_sfxnRts__C ==> .const:xdc_runtime_Startup_sfxnRts__C
       "Quyak.out" .const:xdc_runtime_Startup_sfxnTab__C ==> .const:xdc_runtime_Startup_sfxnTab__C
       "Quyak.out" .const:xdc_runtime_Startup_startModsFxn__C ==> .const:xdc_runtime_Startup_startModsFxn__C
       "Quyak.out" .const:xdc_runtime_SysCallback_abortFxn__C ==> .const:xdc_runtime_SysCallback_abortFxn__C
       "Quyak.out" .const:xdc_runtime_SysCallback_exitFxn__C ==> .const:xdc_runtime_SysCallback_exitFxn__C
       "Quyak.out" .const:xdc_runtime_System_abortFxn__C ==> .const:xdc_runtime_System_abortFxn__C
       "Quyak.out" .const:xdc_runtime_System_exitFxn__C ==> .const:xdc_runtime_System_exitFxn__C
       "Quyak.out" .const:xdc_runtime_System_maxAtexitHandlers__C ==> .const:xdc_runtime_System_maxAtexitHandlers__C
       "Quyak.out" .const:xdc_runtime_Text_charTab__C ==> .const:xdc_runtime_Text_charTab__C
       "Quyak.out" .const:xdc_runtime_Text_nameEmpty__C ==> .const:xdc_runtime_Text_nameEmpty__C
       "Quyak.out" .const:xdc_runtime_Text_nameStatic__C ==> .const:xdc_runtime_Text_nameStatic__C
       "Quyak.out" .const:xdc_runtime_Text_nameUnknown__C ==> .const:xdc_runtime_Text_nameUnknown__C
       "Quyak.out" .const:xdc_runtime_Main_Module__id__C ==> .const:xdc_runtime_Main_Module__id__C
       "Quyak.out" .const:xdc_runtime_Memory_Module__id__C ==> .const:xdc_runtime_Memory_Module__id__C
       "Quyak.out" .const:xdc_runtime_Text_charCnt__C ==> .const:xdc_runtime_Text_charCnt__C
       "Quyak.out" .const:xdc_runtime_Text_isLoaded__C ==> .const:xdc_runtime_Text_isLoaded__C
       "Quyak.out" .const:xdc_runtime_Error_policy__C ==> .const:xdc_runtime_Error_policy__C
       "Quyak.out" .const:ti_sysbios_rom_ROM_AONRTCChannelEnable ==> .const:ti_sysbios_rom_ROM_AONRTCChannelEnable
       "Quyak.out" .const:ti_sysbios_rom_ROM_AONRTCCompareValueSet ==> .const:ti_sysbios_rom_ROM_AONRTCCompareValueSet
       "Quyak.out" .const:ti_sysbios_rom_ROM_AONRTCCurrentCompareValueGet ==> .const:ti_sysbios_rom_ROM_AONRTCCurrentCompareValueGet
       "Quyak.out" .const:ti_sysbios_rom_ROM_AONRTCEventClear ==> .const:ti_sysbios_rom_ROM_AONRTCEventClear
       "Quyak.out" .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_getCount64__E ==> .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_getCount64__E
       "Quyak.out" .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_getCurrentTick__E ==> .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_getCurrentTick__E
       "Quyak.out" .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_getMaxTicks__E ==> .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_getMaxTicks__E
       "Quyak.out" .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_initDevice__I ==> .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_initDevice__I
       "Quyak.out" .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_setNextTick__E ==> .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_setNextTick__E
       "Quyak.out" .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_setThreshold__I ==> .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_setThreshold__I
       "Quyak.out" .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_start__E ==> .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_Timer_start__E
       "Quyak.out" .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_TimestampProvider_get32__E ==> .const:ti_sysbios_rom_ROM_ti_sysbios_family_arm_cc26xx_TimestampProvider_get32__E
       "Quyak.out" .const:ti_sysbios_rom_ROM_xdc_runtime_Startup_getState__I ==> .const:ti_sysbios_rom_ROM_xdc_runtime_Startup_getState__I
       "Quyak.out" .const:ti_sysbios_rom_ROM_xdc_runtime_System_SupportProxy_abort__E ==> .const:ti_sysbios_rom_ROM_xdc_runtime_System_SupportProxy_abort__E
       "Quyak.out" .const:ti_sysbios_rom_ROM_xdc_runtime_System_SupportProxy_exit__E ==> .const:ti_sysbios_rom_ROM_xdc_runtime_System_SupportProxy_exit__E
       "Quyak.out" .const:ti_sysbios_gates_GateMutex_Instance_State_sem__O ==> .const:ti_sysbios_gates_GateMutex_Instance_State_sem__O
       "Quyak.out" .const:ti_sysbios_knl_Clock_Module_State_clockQ__O ==> .const:ti_sysbios_knl_Clock_Module_State_clockQ__O
       "Quyak.out" .const:ti_sysbios_knl_Mailbox_Instance_State_dataQue__O ==> .const:ti_sysbios_knl_Mailbox_Instance_State_dataQue__O
       "Quyak.out" .const:ti_sysbios_knl_Mailbox_Instance_State_dataSem__O ==> .const:ti_sysbios_knl_Mailbox_Instance_State_dataSem__O
       "Quyak.out" .const:ti_sysbios_knl_Mailbox_Instance_State_freeQue__O ==> .const:ti_sysbios_knl_Mailbox_Instance_State_freeQue__O
       "Quyak.out" .const:ti_sysbios_knl_Mailbox_Instance_State_freeSem__O ==> .const:ti_sysbios_knl_Mailbox_Instance_State_freeSem__O
       "Quyak.out" .const:ti_sysbios_knl_Semaphore_Instance_State_pendQ__O ==> .const:ti_sysbios_knl_Semaphore_Instance_State_pendQ__O
       "Quyak.out" .const:ti_sysbios_knl_Task_Module_State_inactiveQ__O ==> .const:ti_sysbios_knl_Task_Module_State_inactiveQ__O
       "Quyak.out" .text.4 ==> .text.4
       "Quyak.out" .const ==> .const
       "Quyak.out" .imgHdr ==> .imgHdr
       "Quyak.out" .args ==> .args
       "Quyak.out" .cinit ==> .cinit
       "Quyak.out" .ccfg ==> .ccfg
    ' '
    
    **** Build Finished ****
    

    **** Build of configuration Release for project Quyak ****
    
    "C:\\ti\\ccsv7\\utils\\bin\\gmake" -j -k -j 4 all -O 
    'Building file: ../Application/Quyak.c'
    'Invoking: ARM Compiler'
    "C:/ti/ccsv7/tools/compiler/ti-cgt-arm_5.2.6/bin/armcl" --cmd_file="C:/ti/simplelink/ble_sdk_2_02_01_18/src/config/build_components.opt" --cmd_file="C:/Users/Dale/workspace_Quyak_I2C/Quyak221Stack/TOOLS/build_config.opt" --cmd_file="C:/Users/Dale/workspace_Quyak_I2C/Quyak221Stack/TOOLS/ccs_compiler_defines.bcfg"  -mv7M3 --code_state=16 --abi=eabi -me -O4 --opt_for_speed=5 --include_path="C:/Users/Dale/workspace_Quyak_I2C/Quyak/Profiles" --include_path="C:/Users/Dale/workspace_Quyak_I2C/Quyak/Application" --include_path="C:/Users/Dale/workspace_Quyak_I2C/Quyak/ICallBLE" --include_path="C:/Users/Dale/workspace_Quyak_I2C/Quyak/Startup" --include_path="C:/Users/Dale/workspace_Quyak_I2C/Quyak/Board" --include_path="C:/ti/simplelink_academy_01_11_00_0000/modules/projects/support_files/Components/uart_log" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/examples/simple_peripheral/cc26xx/app" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/icall/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/profiles/roles/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/profiles/roles" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/profiles/dev_info" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/profiles/simple_profile/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/profiles/simple_profile" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/common/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/heapmgr" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/controller/cc26xx/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/hal/src/target/_common" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/hal/src/target" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/hal/src/target/_common/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/hal/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/osal/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/services/src/sdata" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/services/src/saddr" --include_path="C:/ti/simplelink/ble_sdk_2_02_01_18/src/components/icall/src/inc" --include_path="C:/ti/tirtos_cc13xx_cc26xx_2_20_01_08/products/cc26xxware_2_24_02_17393" --include_path="C:/ti/ccsv7/tools/compiler/ti-cgt-arm_5.2.6/include" -g --c99 --gcc --define=USE_ICALL --define=POWER_SAVING --define=SBP_TASK_STACK_SIZE=700 --define=GAPROLE_TASK_STACK_SIZE=520 --define=HEAPMGR_SIZE=0 --define=Display_DISABLE_ALL --define=BOARD_DISPLAY_EXCLUDE_UART --define=xBOARD_DISPLAY_EXCLUDE_LCD --define=ICALL_MAX_NUM_TASKS=3 --define=ICALL_MAX_NUM_ENTITIES=6 --define=xdc_runtime_Assert_DISABLE_ALL --define=Xxdc_runtime_Log_DISABLE_ALL --define=MAX_NUM_BLE_CONNS=1 --define=CC26XX --define=xdc_FILE="\"Quyak.c\"" --define=UARTLOG_NUM_EVT_BUF=32 --display_error_number --diag_warning=225 --diag_warning=255 --diag_wrap=off --gen_func_subsections=on --preproc_with_compile --preproc_dependency="Application/Quyak.d" --obj_directory="Application" --cmd_file="configPkg/compiler.opt" "../Application/Quyak.c"
    'Finished building: ../Application/Quyak.c'
    ' '
    'Building target: Quyak.out'
    'Invoking: ARM Linker'
    "C:/ti/ccsv7/tools/compiler/ti-cgt-arm_5.2.6/bin/armcl" --cmd_file="C:/ti/simplelink/ble_sdk_2_02_01_18/src/config/build_components.opt" --cmd_file="C:/Users/Dale/workspace_Quyak_I2C/Quyak221Stack/TOOLS/build_config.opt" --cmd_file="C:/Users/Dale/workspace_Quyak_I2C/Quyak221Stack/TOOLS/ccs_compiler_defines.bcfg"  -mv7M3 --code_state=16 --abi=eabi -me -O4 --opt_for_speed=5 -g --c99 --gcc --define=USE_ICALL --define=POWER_SAVING --define=SBP_TASK_STACK_SIZE=700 --define=GAPROLE_TASK_STACK_SIZE=520 --define=HEAPMGR_SIZE=0 --define=Display_DISABLE_ALL --define=BOARD_DISPLAY_EXCLUDE_UART --define=xBOARD_DISPLAY_EXCLUDE_LCD --define=ICALL_MAX_NUM_TASKS=3 --define=ICALL_MAX_NUM_ENTITIES=6 --define=xdc_runtime_Assert_DISABLE_ALL --define=Xxdc_runtime_Log_DISABLE_ALL --define=MAX_NUM_BLE_CONNS=1 --define=CC26XX --define=xdc_FILE="\"\"" --define=UARTLOG_NUM_EVT_BUF=32 --display_error_number --diag_warning=225 --diag_warning=255 --diag_wrap=off --gen_func_subsections=on -z -m"Quyak.map" --stack_size=256 --heap_size=0 -i"C:/ti/ccsv7/tools/compiler/ti-cgt-arm_5.2.6/lib" -i"C:/ti/ccsv7/tools/compiler/ti-cgt-arm_5.2.6/include" --reread_libs --warn_sections --diag_wrap=off --display_error_number --diag_suppress=16002-D --diag_suppress=10247-D --diag_suppress=10325-D --diag_suppress=10229-D --xml_link_info="Quyak_linkInfo.xml" --rom_model -o "Quyak.out" "./Application/Quyak.obj" "./Application/util.obj" "./Board/QuyakV2a.obj" "./Drivers/ECC/ECCROMCC26XX.obj" "./Drivers/TRNG/TRNGCC26XX.obj" "./ICall/icall.obj" "./ICall/icall_cc2650.obj" "./ICallBLE/ble_user_config.obj" "./ICallBLE/icall_api.obj" "./PROFILES/data_service.obj" "./PROFILES/devinfoservice.obj" "./PROFILES/gatt_uuid.obj" "./PROFILES/gattservapp_util.obj" "./PROFILES/halo_service.obj" "./PROFILES/led_service.obj" "./PROFILES/peripheral.obj" "./Startup/ccfg_app_ble.obj" "./Startup/main.obj" "./Utils/uart_logs.obj" -l"configPkg/linker.cmd" -l"C:/ti/tirtos_cc13xx_cc26xx_2_20_01_08/products/cc26xxware_2_24_02_17393/driverlib/bin/ccs/driverlib.lib" -l"C:/ti/simplelink/ble_sdk_2_02_01_18/src/rom/common_rom_releases/03282014/common_rom.symbols" -l"C:/Users/Dale/workspace_Quyak_I2C/Quyak221Stack/TOOLS/ccs_linker_defines.cmd" -l"C:/ti/simplelink/ble_sdk_2_02_01_18/src/common/cc26xx/ccs/cc26xx_app.cmd" -llibc.a -llibc.a 
    <Linking>
    "C:/ti/simplelink/ble_sdk_2_02_01_18/src/common/cc26xx/ccs/cc26xx_app.cmd", line 120: error #10099-D: program will not fit into available memory.  placement with alignment fails for section ".text" size 0x12333 .  Available memory ranges:
       FLASH        size: 0x11000      unused: 0x3b         max hole: 0x3       
       FLASH_LAST_PAGE   size: 0x1000       unused: 0xb          max hole: 0x2       
    "C:/ti/simplelink/ble_sdk_2_02_01_18/src/common/cc26xx/ccs/cc26xx_app.cmd", line 121: error #10099-D: program will not fit into available memory.  placement with alignment fails for section ".const" size 0x1fcc .  Available memory ranges:
       FLASH        size: 0x11000      unused: 0x3b         max hole: 0x3       
       FLASH_LAST_PAGE   size: 0x1000       unused: 0xb          max hole: 0x2       
    "C:/ti/simplelink/ble_sdk_2_02_01_18/src/common/cc26xx/ccs/cc26xx_app.cmd", line 124: error #10099-D: program will not fit into available memory.  placement with alignment fails for section ".cinit" size 0x487 .  Available memory ranges:
       FLASH        size: 0x11000      unused: 0x6          max hole: 0x3       
       FLASH_LAST_PAGE   size: 0x1000       unused: 0x0          max hole: 0x0       
    
     undefined            first referenced                                                                               
      symbol                  in file                                                                                    
     ---------            ----------------                                                                               
     OADTarget_close      <whole-program>                                                                                
     OADTarget_eraseFlash <whole-program>                                                                                
     OADTarget_open       <whole-program>                                                                                
     OADTarget_readFlash  <whole-program>                                                                                
     OADTarget_writeFlash <whole-program>                                                                                
     execHandlerHook      C:\Users\Dale\workspace_Quyak_I2C\Quyak\Release\configPkg\package\cfg\app_ble_uartlog_pem3.oem3
    
    error #10234-D: unresolved symbols remain
    error #10010: errors encountered during linking; "Quyak.out" not built
    
    >> Compilation failure
    makefile:184: recipe for target 'Quyak.out' failed
    gmake[1]: *** [Quyak.out] Error 1
    gmake: *** [all] Error 2
    makefile:177: recipe for target 'all' failed
    
    **** Build Finished ****
    

  • Comparing the build outputs I see that the Release build pulls in some object files that the Debug build does not and vice versa. This matches with what you had seen earlier with the differences in the two makefiles. I cannot explain why this is, but perhaps the projects were created that way for some reason.

    You can confirm this by observing which source files are included/excluded from build for each build configuration in the Project Explorer view. If you want the two configurations to match up you would need to ensure that the source files included in the build for both configs are the same. 

    I also noticed that the Debug build contains --define=_DEBUG and --define=FEATURE_OAD, while the Release build does not. I believe that not having the --define=FEATURE_OAD is the reason for the undefined symbol errors you are seeing in the Release build.

    My recommendation for the best course to move forward is actually what you have already done - make a copy of the Debug configuration and modify the build options to what you would like the Release config to have. 

  • For some reason the OAD files and EXTFlash files were excluded from build on the Release build, fixed that and set the Stacks Sizes in release to same as Debug but still no luck. I guess we should consider this closed.