This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Segger Embedded Studio Code Size Limit?


I recently downloaded Segger's Embedded Studio to compare its performance and ease of use with IAR Embedded Workbench. We have a kickstarter version of IAR for ARM which has a 32K code size limit. Segger's site mentioned that the free evaluation license has no code size limit, but when I compile my now-slightly-over-32K project with the Segger, I get an error that the size limit of 0x8000 (32K) has been exceeded. Could this be related to the fact that I originally imported the Segger project from a project that was created on the IAR Kickstarter version and somehow inherited the 32K code size limit from IAR? I can't find anything under the Segger project options that sets the code size limit.

Thanks,

Mike

  • how about clean it - build it - paste the actual transcript from the build especially the last step. If there's a build error one stage must be generating it. 

  • Did a clean and then rebuilt the project - here is the output:

    Building ‘hm_chair’ from solution ‘hm_chair’ in configuration ‘nrf52832_xxaa External’
    Compiling ‘app_accel.c’
    Warning[Pe177]: variable "m_twi" was declared but never referenced
    Warning[Pe177]: variable "MagState" was declared but never referenced
    Warning[Pe177]: function "TwiHandler" was declared but never referenced
    Warning[Pe177]: function "TwiInit" was declared but never referenced
    Compiling ‘chair_state.c’
    Compiling ‘system_timer.c’
    Compiling ‘main.c’
    Warning[Pe177]: variable "loopCount" was declared but never referenced
    Compiling ‘ctl_accel.c’
    Warning[Pe550]: variable "iBfz" was set but never used
    Compiling ‘ctl_adc.c’
    Compiling ‘ctl_ANT.c’
    Compiling ‘ctl_flash.c’
    Assembling ‘iar_startup_nrf52.s’
    Compiling ‘system_nrf52.c’
    Compiling ‘ant_channel_config.c’
    Compiling ‘hmi_i2c.c’
    Compiling ‘nrf_drv_common.c’
    Compiling ‘nrf_drv_gpiote.c’
    Compiling ‘nrf_drv_saadc.c’
    Compiling ‘nrf_drv_timer.c’
    Compiling ‘nrf_drv_twi.c’
    Compiling ‘nrf_drv_uart.c’
    Compiling ‘nrf_saadc.c’
    Compiling ‘app_error_weak.c’
    Compiling ‘app_error.c’
    Compiling ‘app_fifo.c’
    Compiling ‘app_timer.c’
    Compiling ‘app_uart_fifo.c’
    Compiling ‘app_util_platform.c’
    Compiling ‘nrf_assert.c’
    Compiling ‘nrf_memobj.c’
    Compiling ‘nrf_balloc.c’
    Compiling ‘nrf_section_iter.c’
    Compiling ‘nrf_strerror.c’
    Compiling ‘retarget.c’
    Compiling ‘nrf_sdh.c’
    Compiling ‘nrf_sdh_ant.c’
    Linking ‘hm_chair.out’
    Error[Li016]: size limit exceeded. The application needs 0x864c (34 380) bytes, which is greater than the limit of 0x8000 (32 768) bytes.
    Build failed

  • I did see when checking Build -> Build Configurations that the first Private Configuration listed is "External IAR"?  Could this have something to do with my problem?  If so, what setting would I change to fix?  Thanks, Mike

  • Not quite as  much  info in that  build transcript as I'd hoped but the fact it has 'iar' startup in it and all the error message are IAR error messages says to me you're basically just running an external make and still using .. IAR. 

    If you read my message from a few days ago I asked "did you import  the project as some kind of external make project?" and it seems you did. So go re-import it again and don't pick external anything, choose one of the SES nordic native project templates. 

  • and running one myself I see SES creates configurations for both by default. So just select the 'internal' one instead of the 'external' one from the dropdown at the top left corner of your screen, or don't make an external one at all as it doesn't work. 

Related