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

  • Yes, I have but no success still.

    In SES I did 

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

    File > Open nRF Connect SDK Project... to re-open the project

    Then did a new build in a new empty build folder but the .config file is still not being updated with my config that is in prj_release.conf.

    For example I set CONFIG_LOG=n in prj_release.conf but in .config in the new build folder I see CONFIG_LOG=y.

    I then ran Cmake, as you suggested, 

    Project > Run CMake

    But nothing has changed in the .config file, see extract from the log trace below,

    Creating solution HomeBeacon_dev_sb.emProject
    -- Application: C:/Sandbox/HomeBeacon_dev_sb
    -- Zephyr version: 2.6.99 (C:/Zypher/v1.7.0/zephyr), build: v2.6.99-ncs1
    -- Found west (found suitable version "0.11.1", minimum required is "0.7.1")
    -- Board: nrf52833dk_nrf52833
    -- Cache files will be written to: C:/Zypher/v1.7.0/zephyr/.cache
    -- Found dtc: C:/Zypher/v1.7.0/toolchain/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6")
    -- Found toolchain: gnuarmemb (C:/Zypher/v1.7.0/toolchain/opt)
    -- Found BOARD.dts: C:/Zypher/v1.7.0/zephyr/boards/arm/nrf52833dk_nrf52833/nrf52833dk_nrf52833.dts
    -- Found devicetree overlay: C:/Sandbox/HomeBeacon_dev_sb/nrf52833dk_nrf52833.overlay
    -- Generated zephyr.dts: C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/zephyr/zephyr.dts
    -- Generated devicetree_unfixed.h: C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/zephyr/include/generated/devicetree_unfixed.h
    -- Generated device_extern.h: C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/zephyr/include/generated/device_extern.h
    -- Including generated dts.cmake file: C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/zephyr/dts.cmake
    Parsing C:/Sandbox/HomeBeacon_dev_sb/Kconfig
    Loaded configuration 'C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/zephyr/.config'
    No change to configuration in 'C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/zephyr/.config'
    No change to Kconfig header in 'C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/zephyr/include/generated/autoconf.h'
    -- Application: C:/Zypher/v1.7.0/bootloader/mcuboot/boot/zephyr
    -- Zephyr version: 2.6.99 (C:/Zypher/v1.7.0/zephyr), build: v2.6.99-ncs1
    -- Found west (found suitable version "0.11.1", minimum required is "0.7.1")
    -- Board: nrf52833dk_nrf52833
    -- Cache files will be written to: C:/Zypher/v1.7.0/zephyr/.cache
    -- Found dtc: C:/Zypher/v1.7.0/toolchain/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6")
    -- Found toolchain: gnuarmemb (C:/Zypher/v1.7.0/toolchain/opt)
    -- Found BOARD.dts: C:/Zypher/v1.7.0/zephyr/boards/arm/nrf52833dk_nrf52833/nrf52833dk_nrf52833.dts
    -- Found devicetree overlay: C:/Zypher/v1.7.0/bootloader/mcuboot/boot/zephyr/dts.overlay
    -- Found devicetree overlay: C:/Zypher/v1.7.0/bootloader/mcuboot/boot/zephyr/dts.overlay
    -- Generated zephyr.dts: C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/mcuboot/zephyr/zephyr.dts
    -- Generated devicetree_unfixed.h: C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/mcuboot/zephyr/include/generated/devicetree_unfixed.h
    -- Generated device_extern.h: C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/mcuboot/zephyr/include/generated/device_extern.h
    -- Including generated dts.cmake file: C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/mcuboot/zephyr/dts.cmake
    Parsing C:/Zypher/v1.7.0/bootloader/mcuboot/boot/zephyr/Kconfig
    Loaded configuration 'C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/mcuboot/zephyr/.config'
    No change to configuration in 'C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/mcuboot/zephyr/.config'
    No change to Kconfig header in 'C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/mcuboot/zephyr/include/generated/autoconf.h'
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake/mcuboot
    Partition 'mcuboot' is not included in the dynamic resolving since it is statically defined.
    Partition 'mcuboot_pad' is not included in the dynamic resolving since it is statically defined.
    Partition 'mcuboot_primary' is not included in the dynamic resolving since it is statically defined.
    Partition 'mcuboot_primary_app' is not included in the dynamic resolving since it is statically defined.
    Partition 'mcuboot_secondary' is not included in the dynamic resolving since it is statically defined.
    Dropping partition 'nvs_storage' since its size is 0.
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Sandbox/HomeBeacon_dev_sb/build_nrf52833dk_nrf52833_rel_v1399_cmake
    Including boilerplate (Zephyr base (cached)): C:/Zypher/v1.7.0/zephyr/cmake/app/boilerplate.cmake
    -- Using NCS Toolchain 1.7.0 for building. (C:/Zypher/v1.7.0/toolchain/cmake)

    === child image mcuboot - begin ===
    Including boilerplate (Zephyr base (cached)): C:/Zypher/v1.7.0/zephyr/cmake/app/boilerplate.cmake
    -- Using NCS Toolchain 1.7.0 for building. (C:/Zypher/v1.7.0/toolchain/cmake)
    MCUBoot bootloader key file: C:/Zypher/v1.7.0/bootloader/mcuboot/root-rsa-2048.pem
    === child image mcuboot - end ===

    CMake Warning at C:/Zypher/v1.7.0/nrf/modules/mcuboot/CMakeLists.txt:204 (message):

    ---------------------------------------------------------
    --- WARNING: Using default MCUBoot key, it should not ---
    --- be used for production. ---
    ---------------------------------------------------------


    Loading solution HomeBeacon_dev_sb.emProject
    Loading solution build.emProject
    Mapping project information
    Mapping project zephyr/merged.hex
    Mapping project all

    ...

    ...

    Let me know if you would like to see the whole trace.
    Kind regards
    Mohamed

  • Have you tried (at least for testing) to compile your project from command line using west and/or visual studio code? That can at least provide information if the issue is related to SES or not.

    Kenneth

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