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

gcc compiled Experimental Buttonless DFU not working

Experimental Buttonless DFU worked correctly when compiled with keil, but the same example compiled in eclipse by gcc is not switching to bootloader mode. value 0x01 is updated at control point.

Parents
  • Thank you Hung Bui, it was same problem, I edited the linker file and it worked

    /* Linker script to configure memory regions. */
    
    SEARCH_DIR(.)
    GROUP(-lgcc -lc -lnosys)
    
    MEMORY
    {
      FLASH (rx) : ORIGIN = 0x1b000, LENGTH = 0x25000
      RAM (rwx) :  ORIGIN = 0x20001fe8, LENGTH = 0x6018
        /** Location of bootloader setting in flash. */
      BOOTLOADER_SETTINGS (rw) : ORIGIN = 0x0003FC00, LENGTH = 0x1000 
    
    }
    
    SECTIONS
    {
       /* Place the bootloader settings page in flash. */
      .bootloaderSettings(NOLOAD) :
      {
    
      } > BOOTLOADER_SETTINGS
    
      .fs_data :
      {
        PROVIDE(__start_fs_data = .);
        KEEP(*(.fs_data))
        PROVIDE(__stop_fs_data = .);
      } > RAM
    } INSERT AFTER .data;
    
    INCLUDE "nrf5x_common.ld"
    

    Bootloader origin is specified by BOOTLOADER_SETTINGS_ADDRESS in nrf_dfu_types.h

Reply
  • Thank you Hung Bui, it was same problem, I edited the linker file and it worked

    /* Linker script to configure memory regions. */
    
    SEARCH_DIR(.)
    GROUP(-lgcc -lc -lnosys)
    
    MEMORY
    {
      FLASH (rx) : ORIGIN = 0x1b000, LENGTH = 0x25000
      RAM (rwx) :  ORIGIN = 0x20001fe8, LENGTH = 0x6018
        /** Location of bootloader setting in flash. */
      BOOTLOADER_SETTINGS (rw) : ORIGIN = 0x0003FC00, LENGTH = 0x1000 
    
    }
    
    SECTIONS
    {
       /* Place the bootloader settings page in flash. */
      .bootloaderSettings(NOLOAD) :
      {
    
      } > BOOTLOADER_SETTINGS
    
      .fs_data :
      {
        PROVIDE(__start_fs_data = .);
        KEEP(*(.fs_data))
        PROVIDE(__stop_fs_data = .);
      } > RAM
    } INSERT AFTER .data;
    
    INCLUDE "nrf5x_common.ld"
    

    Bootloader origin is specified by BOOTLOADER_SETTINGS_ADDRESS in nrf_dfu_types.h

Children
No Data
Related