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

Parents
  • No the size limit didn't come over from IAR. What's the ACTUAL error message? Have you registered your copy of SES to get the free Nordic license which allows full access and even commercial use, even though I believe that SES has no size limit either. 

  • Exact error is "Error [Li016]: size limit exceeded.  The application needs 0x864c (34380) bytes, which is greater than the limit of 0x8000 (32768) bytes."  When I check the Tools -> License Manager and choose Manage Activations, I see that the product is licensed to Mike Marks - Avid Technologies.

  • I assume the converted project file is either the <name>.emProject or <name>.emSession?  Checking both of those files does not show the error message.  The Compiler Options -> Linker shows no additional input files or linker scripts.  If the compiler is set to gcc, does that mean that the IAR compiler is not being used?

  • 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. 

Reply
  • 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. 

Children
  • 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. 

  • I did import the project again and, as you suggested, made sure that only the Internal choice was selected and not the external one.  When I first imported the project a few days ago, I may have had "both" chosen.  Either way, thanks much for the help.  I am not quite building yet, but trying to resolve a couple undefined references that I hope to solve tomorrow.  At least there is no IAR reference...so far on my build.

Related