Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

NRF51822 Taiyo Yuden DK . S130_2.0.1 SDK 12.3 Buttonless DFU Example

Hello All,

I have successfully built the secure_bootloader  app. I have the bootloader working with the button. I can upload application files using DFU. I tried the buttonless app and got so far as to having the app transferred and advertising. How do i write 0x01 to the DFU control point characteristic? I have tried writing the hex value over UART using the iOS version of the toolbox but that gives me 'writing value to characteristic has failed' unknown handler. Can someone please point me in the right direction on how to get this example working.

  • Hello,

    The nrf toolbox container app has a separate 'app' for doing DFU which automatically writes 0x1 to the DFU control point if it detects the buttonless DFU service. It's also possible to do it manually from the nRF connect app:

       

     

  • Thanks for your answer but it did not solve the issue.  The container DFU app does not do anything unless i manually put the device in DFU mode. It is advertising buttonless dfu.

    In the connect app i used the command as shown in the screen shot but no response. Any other recommendations.

  • The application should reset into bootloader dfu mode once it receives the command. "In the connect app i used the command as shown in the screen shot but no response": does it stay connected after send the command? Also, are you testing with your own app, or with the ble_app_buttonless_example?

  • I am using the default secure bootloader with the buttonless_dfu example. It stays connected after the command. I have attached a screenshot of the app.

    I have my main app working and wanted to now add the dfu option. I am using Taiyo Yuden EYSGCNZWY. 

    Here is the ld file settings

    ```

    /* Linker script to configure memory regions. */

    SEARCH_DIR(.)
    GROUP(-lgcc -lc -lnosys)

    MEMORY
    {
    FLASH (rx) : ORIGIN = 0x1b000, LENGTH = 0x24000
    RAM (rwx) : ORIGIN = 0x20001fe8, LENGTH = 0x6018
    BOOTLOADER_SETTINGS (rw) : ORIGIN = 0x0003FC00, LENGTH = 0x0400
    }

    SECTIONS
    {
    .bootloaderSettings(NOLOAD) :
    {

    } > BOOTLOADER_SETTINGS

    .fs_data :
    {
    PROVIDE(__start_fs_data = .);
    KEEP(*(.fs_data))
    PROVIDE(__stop_fs_data = .);
    } > RAM
    .pwr_mgmt_data :
    {
    PROVIDE(__start_pwr_mgmt_data = .);
    KEEP(*(.pwr_mgmt_data))
    PROVIDE(__stop_pwr_mgmt_data = .);
    } > RAM
    } INSERT AFTER .data;

    INCLUDE "nrf5x_common.ld"```

  • The screendump from nRF connect is only displaying the NUS service characteristics which are not included in the buttonless example. Maybe your phone has cached the attribute table (will do that if the service changed characteristic is not present). You can toggle flight mode enable on your phone to clear any cached attribute tables.

Related