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

nRFgo Studio ERROR "This hex file has data in Softdevice region"

Hi,

  • We are developing a Bluetooth 2d-3d mouse with OTA -DFU service.
  • The controller we are using NRF52832  QFABB0 it contain 32KB RAM and 256KB of flash memory.
  • SDK we are using is "nRF5_SDK_15.3.0_59ac345" .
  • To work an OTA-DFU application successfully ,we need to flash SOFTDEVICE ,BOOTLOADER AND APPLICATION into the nrf52832.
  • SOFTDEVICE :- "s132_nrf52_6.1.1_softdevice"
  • BOOTLOADER :-(....\nRF5_SDK_15.3.0_59ac345\examples\dfu\secure_bootloader\) some modification done in this ,we made it buttonless and the led pins was changed according to our custom board .
  • APPLICATION :- (.....\nRF5_SDK_15.3.0_59ac345\examples\ble_peripheral\ble_app_hids_mouse) we modified these code with our needs.

ISSUES 

  • I TRIED TO FLASH THE SOFTDEVICE WITH "nRFgo Studio" AND ITS FLASHED SUCESSFULLY. THEN I TRIED TO FLASH THE BOOTLOADER WITH "nRFgo Studio" BUT ITS SHOWING SOME ERROR LOOK THE SCREEN SHORT.

NOTE:- when i flashed the BOOTLOADER  directly from the SEGGER IDE  its  flashing successfully  and its also advertising as "DfuTrag" and the OTA - firware update is taking place successfully too. 

DOUBTS

  1. Why these issues  happening in "nRFgo Studio"?
  2. how can we solve these issue?

note :-I also tried the solutions in error command box in the screen short but then also the bootloader code is not working .

PLEASE ANSWER TO 1 AND 2.

Parents
  • Summary of what was found in the private case:

    In order to change the Bootloader and bootloader settings flash placement (in case you have a 256kB Flash sized nRF52832) in SEGGER Embedded Studios please follow these instructions:

    • FLASH_START needs to be set in SES Section Placement Macros according to the Adjustment of RAM and Flash memory guide.
    • Next, go to Memory Segments and set mbr_params_page RX 0x0003E000 and bootloader_settings_page RX 0x0003F000.
    • Finally, open the nrf_dfu_types.h file in  ..\nRF5_SDK_15.3.0_59ac345\components\libraries\bootloader\dfu, and set #define BOOTLOADER_SETTINGS_ADDRESS     (0x0003F000UL) on line 101, and #define NRF_MBR_PARAMS_PAGE_ADDRESS         (0x0003E000UL) on line 123.

    This should ensure that the bootloader and the bootloader settings .hex files are correctly configured. Keep in mind that this is only valid for the 256kB flash version of the nRF52832, and you have to change it back for it to be optimized for the 512kB flash version of the nRF52832.

    Note that when you're using the debug bootloader settings file, it won't handle the CRC check like it would if you use the non-debug bootloader, and hence, it will start the application (which was not present in this case), and therefore didn't advertise as "DfuTarg". If you use the non-debug bootloader settings, the CRC check will be handled properly, and "DfuTarg" will advertise as intended.

    Best regards,

    Simon

Reply
  • Summary of what was found in the private case:

    In order to change the Bootloader and bootloader settings flash placement (in case you have a 256kB Flash sized nRF52832) in SEGGER Embedded Studios please follow these instructions:

    • FLASH_START needs to be set in SES Section Placement Macros according to the Adjustment of RAM and Flash memory guide.
    • Next, go to Memory Segments and set mbr_params_page RX 0x0003E000 and bootloader_settings_page RX 0x0003F000.
    • Finally, open the nrf_dfu_types.h file in  ..\nRF5_SDK_15.3.0_59ac345\components\libraries\bootloader\dfu, and set #define BOOTLOADER_SETTINGS_ADDRESS     (0x0003F000UL) on line 101, and #define NRF_MBR_PARAMS_PAGE_ADDRESS         (0x0003E000UL) on line 123.

    This should ensure that the bootloader and the bootloader settings .hex files are correctly configured. Keep in mind that this is only valid for the 256kB flash version of the nRF52832, and you have to change it back for it to be optimized for the 512kB flash version of the nRF52832.

    Note that when you're using the debug bootloader settings file, it won't handle the CRC check like it would if you use the non-debug bootloader, and hence, it will start the application (which was not present in this case), and therefore didn't advertise as "DfuTarg". If you use the non-debug bootloader settings, the CRC check will be handled properly, and "DfuTarg" will advertise as intended.

    Best regards,

    Simon

Children
  • Next, go to Memory Segments and set mbr_params_page RX 0x0003E000 and bootloader_settings_page RX 0x0003F000.

    Simon , Memory segments change is depend on which IDE we are using.

    If we are using KEIL IDE the Memory segments change has to be done on these"secure_bootloader_gcc_nrf52.ld"  file(path:-........\nRF5_SDK_15.3.0_59ac345\examples\dfu\secure_bootloader\pca10040_ble\armgcc)

    If we are using SEGGER IDE the Memory segments change has to  done on these "flash_placement.xml" file                        (path:-..............\nRF5_SDK_15.3.0_59ac345\examples\dfu\secure_bootloader\pca10040_ble\ses)

Related