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

Segger Embedded Studio: Debug and Release build configurations

I created two build configurations a Debug and a Release in SES IDE.

Build > Build Configurations...

I wanted to select the  DEBUG_OPTIMIZATIONS level for the Debug build configuration and the SPEED_OPTIMIZATIONS for the Release one.

In Project Explorer, select the top Solution then select the 'Debug' build Configuration

Project > Configure nRF Connect Project... > DEBUG_OPTIMIZATIONS > Configure > Save solution (if prompted)

Then in Project Explorer, select the top Solution then select the 'Release' build Configuration

Project > Configure nRF Connect Project... > SIZE_OPTIMIZATIONS > Configure > Save solution (if prompted)

However, when I go back and select the 'Debug' build configuration to view its optimisation setting I find

Project > Configure nRF Connect Project... > SIZE_OPTIMIZATIONS   

NOT DEBUG_OPTIMIZATIONS as expected.

It looks like whichever build configuration is set last overwrites the other one.

Can you please tell me what I am doing wrong.

Thank you.

Mohamed Belaroussi

Parents
  • This seems like a bug in SES, I can report it, I assume you are using v4.52?

    In the meantime you can also control this in prj.conf by setting e.g. CONFIG_DEBUG_OPMTIMIZATIONS=y

  • Thank you Kenneth.

    I don't use the command line tools. I am using SES IDE and like any other IDE I used before I should be able to set debug and release configurations within SES Nordic Edition. I tried to get help from Segger but they directed me to Nordic because SES (Nordic Edition) is not supported by Segger. 

    I don't know how this can be done in SES, but

    If you don't know how it can be done maybe you can ask one of your colleagues or even Segger.

    I asked this question over six months ago, I was hoping by now someone somewhere would have figured out how to do this within SES. As I said earlier Segger were not willing to help me but if someone from Nordic approached them they might be be more accommodating.

    While waiting for a resolution to my ticket I am using two project configuration files prj-debug,conf and prj-release.conf, an extract from the two variants is shown below. My question is this,

    Do I need to remove the logging configurations (text in blue below) from the release project file prj-release.conf ?

    prj-debug.conf

    ---------------------

    ...

    ### COMPILER OPTIONS ###
    #
    CONFIG_DEBUG_OPTIMIZATIONS=y

    ### Logging ####
    #
    # For the PID 4 hardware we must set CONFIG_SERIAL=n because otherwise the SPI CS/BUSY
    # pins will be allocated to UART0 CTS/RTS pins.
    CONFIG_SERIAL=n
    CONFIG_LOG=y
    CONFIG_USE_SEGGER_RTT=y
    CONFIG_RTT_CONSOLE=y
    #CONFIG_UART_CONSOLE=n
    CONFIG_NEWLIB_LIBC=y
    CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y
    CONFIG_PRINTK=y

    ...

    prj-release.conf

    ----------------------

    ...

    ### COMPILER OPTIONS ###
    #
    #CONFIG_CODING_GUIDELINE_CHECK is not set
    # CONFIG_NATIVE_APPLICATION is not set
    CONFIG_SIZE_OPTIMIZATIONS=y
    CONFIG_SPEED_OPTIMIZATIONS=y
    CONFIG_DEBUG_OPTIMIZATIONS=n
    # CONFIG_NO_OPTIMIZATIONS is not set
    CONFIG_COMPILER_OPT=""
    # end of Compiler Options

    ### Logging ####
    #
    # For the PID 4 hardware we must set CONFIG_SERIAL=n because otherwise the SPI CS/BUSY
    # pins will be allocated to UART0 CTS/RTS pins.
    CONFIG_SERIAL=n
    CONFIG_LOG=y
    CONFIG_USE_SEGGER_RTT=y
    CONFIG_RTT_CONSOLE=y
    #CONFIG_UART_CONSOLE=n
    CONFIG_NEWLIB_LIBC=y
    CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y
    CONFIG_PRINTK=y

    ...

    Kind regards

    Mohamed

  • Hi Kenneth,

    Thank you for your on-going support. I do appreciate it.

    I have found the root cause of my problem. It is self-inflicted.

    I inherited a CMakelists.txt and in there I found these configuration lines,

    if (NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE debug)
    endif()

    # Set main PID4 configuration file
    set(CONF_FILE "${CMAKE_CURRENT_LIST_DIR}/prj_${CMAKE_BUILD_TYPE}.conf")

    So, it was always the prj_debug.conf that was used. It seems the content of the CMakelists.txt overrides whatever I specify in SES using -DCONF_FILE=....

    Tools > Options > nRF Connect then added -DCONF_FILE=prj_release.conf

    Now, I just change the line highlighted in yellow above to switch between debug and release configuration.
    However, I still cannot create debug and release configurations in SES. I asked the question over a year ago in this ticket but I still don't know how to do it. Can you hel?
    Kind regards
    Mohamed

  • I searched through all the CMakeLists.txt in ncs, and I could not find these lines used anywhere, do you know where you have gotten these lines of code? In any case, I suggest to remove them and follow the description in the documentation how to set build type.

    https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/gs_modifying.html#configuring-build-types 

  • Hi Kenneth,

    Maybe I did not make myself very clear in my previous message.
    I inherited the CMakelists.txt from a colleague not from ncs.
    I would appreciate it a great deal if you could address the following:
    I still cannot create debug and release configurations in SES. I asked this question over a year ago in this ticket but I still don't know how to do it. Can you help?
    Kind regards
    Mohamed
  • If you take a random application example, e.g. nRF Desktop which have a lot of build types:
    nrf\applications\nrf_desktop

    https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/applications/nrf_desktop/README.html#selecting-a-build-type 
    https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/applications/nrf_desktop/README.html#nrf-desktop-requirements-build-types 

    Does that work as you expect? I don't understand what problems you may have, since there are examples that already does this that you should be able to compare with.

    Kenneth

  • Thank you Kenneth.

    I should be able to build different build configurations in SES e.g. 'debug' or 'release'

    Build > Build Configurations...

    However, when I try to do this SES stop responding to any subsequent key presses. I have to press the ESC key to get SES to escape from this strange mode. However, this also means I escaped the Build Configurations... menu. So, I cannot build configurations. The only one available is the default Common configuration shown in the top left hand side above the Project explorer in SES IDE.

    Kind regards
    Mohamed

Reply
  • Thank you Kenneth.

    I should be able to build different build configurations in SES e.g. 'debug' or 'release'

    Build > Build Configurations...

    However, when I try to do this SES stop responding to any subsequent key presses. I have to press the ESC key to get SES to escape from this strange mode. However, this also means I escaped the Build Configurations... menu. So, I cannot build configurations. The only one available is the default Common configuration shown in the top left hand side above the Project explorer in SES IDE.

    Kind regards
    Mohamed

Children
Related