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

There is a question in Test Setp about the buttonless DFU sample using the nRF52832 DK board. (SDK is using 12.3.)

Hi
I am currently testing Buttonless DFU using SDK 12.3, nRF52832 DK.
Example test was conducted first using the DK board, but as you can see in the picture, it will fail. I don't know why.
Is the method wrong?

 

  • This file is a log of an issue where only the same log I talked about repeatedly is taken and DFU is not going on. This log is from Nordic's nRF Connect app.
    Would you please take a look?

    nRF Connect, 2019-08-28
    Nordic_Buttonless (FE:75:B9:3E:5E:1C)
    V	11:36:52.277	Connecting to FE:75:B9:3E:5E:1C...
    D	11:36:52.277	gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE)
    D	11:36:52.659	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
    I	11:36:52.659	Connected to FE:75:B9:3E:5E:1C
    D	11:36:52.673	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
    V	11:36:52.682	Discovering services...
    D	11:36:52.682	gatt.discoverServices()
    D	11:36:53.255	[Callback] Services discovered with status: 0
    I	11:36:53.255	Services discovered
    V	11:36:53.276	Generic Access (0x1800)
    - Device Name [R W] (0x2A00)
    - Appearance [R] (0x2A01)
    - Peripheral Preferred Connection Parameters [R] (0x2A04)
    - Central Address Resolution [R] (0x2AA6)
    Generic Attribute (0x1801)
    Experimental Buttonless DFU Service (8e400001-f315-4f60-9fb8-838830daea50)
    - Experimental Buttonless DFU [N W] (8e400001-f315-4f60-9fb8-838830daea50)
     Client Characteristic Configuration (0x2902)
    V	11:36:59.589	Enabling notifications for 8e400001-f315-4f60-9fb8-838830daea50
    D	11:36:59.589	gatt.setCharacteristicNotification(8e400001-f315-4f60-9fb8-838830daea50, true)
    D	11:36:59.591	gatt.writeDescriptor(00002902-0000-1000-8000-00805f9b34fb, value=0x0100)
    I	11:36:59.936	Data written to descr. 00002902-0000-1000-8000-00805f9b34fb, value: (0x) 01-00
    A	11:36:59.936	"Notifications enabled" sent
    V	11:36:59.947	Notifications enabled for 8e400001-f315-4f60-9fb8-838830daea50
    V	11:37:02.588	Writing request to characteristic 8e400001-f315-4f60-9fb8-838830daea50
    D	11:37:02.588	gatt.writeCharacteristic(8e400001-f315-4f60-9fb8-838830daea50, value=0x01)
    I	11:37:02.932	Notification received from 8e400001-f315-4f60-9fb8-838830daea50, value: (0x) 20-01-01
    A	11:37:02.932	"Response for: Enter bootloader
    Status: Success" received
    I	11:37:02.933	Data written to 8e400001-f315-4f60-9fb8-838830daea50, value: (0x) 20-01-01
    A	11:37:02.933	"Response for: Enter bootloader
    Status: Success" sent
    D	11:37:04.079	[Callback] Connection state changed with status: 19 and new state: DISCONNECTED (0)
    W	11:37:04.079	Connection terminated by peer (status 19)
    I	11:37:04.079	Disconnected
    D	11:37:04.088	gatt.refresh() (hidden)
    D	11:37:04.137	[Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
    D	11:37:17.066	gatt.close()
    D	11:37:17.068	wait(200)
    V	11:37:17.273	Connecting to FE:75:B9:3E:5E:1C...
    D	11:37:17.274	gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE)
    D	11:37:19.117	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
    I	11:37:19.117	Connected to FE:75:B9:3E:5E:1C
    D	11:37:19.139	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
    V	11:37:19.151	Discovering services...
    D	11:37:19.151	gatt.discoverServices()
    D	11:37:19.863	[Callback] Services discovered with status: 0
    I	11:37:19.863	Services discovered
    V	11:37:19.874	Generic Access (0x1800)
    - Device Name [R W] (0x2A00)
    - Appearance [R] (0x2A01)
    - Peripheral Preferred Connection Parameters [R] (0x2A04)
    - Central Address Resolution [R] (0x2AA6)
    Generic Attribute (0x1801)
    Experimental Buttonless DFU Service (8e400001-f315-4f60-9fb8-838830daea50)
    - Experimental Buttonless DFU [N W] (8e400001-f315-4f60-9fb8-838830daea50)
     Client Characteristic Configuration (0x2902)
    ------------------------------------------------
    V	11:37:27.302	[DFU] DFU service started
    V	11:37:27.302	[DFU] Opening file...
    I	11:37:27.328	[DFU] Firmware file opened successfully
    V	11:37:27.329	[DFU] Connecting to DFU target...
    D	11:37:27.330	[DFU] gatt = device.connectGatt(autoConnect = false)
    I	11:37:27.333	[DFU] Connected to FE:75:B9:3E:5E:1C
    V	11:37:27.334	[DFU] Discovering services...
    D	11:37:27.334	[DFU] gatt.discoverServices()
    I	11:37:27.336	[DFU] Services discovered
    D	11:37:27.349	[DFU] wait(1000)
    W	11:37:28.359	[DFU] Application with buttonless update found
    V	11:37:28.360	[DFU] Jumping to the DFU Bootloader...
    V	11:37:28.360	[DFU] Enabling notifications for 8e400001-f315-4f60-9fb8-838830daea50
    D	11:37:28.360	[DFU] gatt.setCharacteristicNotification(8e400001-f315-4f60-9fb8-838830daea50, true)
    D	11:37:28.360	[DFU] gatt.writeDescriptor(00002902-0000-1000-8000-00805f9b34fb, value=0x01-00)
    I	11:37:28.695	[DFU] Data written to descr.8e400001-f315-4f60-9fb8-838830daea50, value (0x): 01-00
    V	11:37:28.696	[DFU] Notifications enabled for 8e400001-f315-4f60-9fb8-838830daea50
    A	11:37:28.696	[DFU] Notifications enabled
    D	11:37:28.696	[DFU] wait(1000)
    V	11:37:29.737	[DFU] Writing to characteristic 8e400001-f315-4f60-9fb8-838830daea50
    D	11:37:29.737	[DFU] gatt.writeCharacteristic(8e400001-f315-4f60-9fb8-838830daea50)
    I	11:37:30.158	[DFU] Notification received from 8e400001-f315-4f60-9fb8-838830daea50, value (0x): 20-01-01
    A	11:37:30.158	[DFU] Enter bootloader sent (Op Code = 1)
    A	11:37:30.158	[DFU] Response received (Op Code = 1, Status = 1)
    D	11:37:31.258	[Callback] Connection state changed with status: 19 and new state: DISCONNECTED (0)
    W	11:37:31.258	Connection terminated by peer (status 19)
    I	11:37:31.258	Disconnected
    D	11:37:31.263	gatt.refresh() (hidden)
    I	11:37:31.294	[DFU] Disconnected by the remote device
    D	11:37:31.294	[DFU] gatt.refresh() (hidden)
    D	11:37:31.294	[DFU] gatt.close()
    V	11:37:31.294	[DFU] Scanning for the DFU Bootloader...
    D	11:37:31.308	[Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
    D	11:37:31.326	[DFU] [Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
    I	11:37:31.554	[DFU] DFU Bootloader found with address FE:75:B9:3E:5E:1C
    ------------------------------------------------
    V	11:37:31.585	[DFU] DFU service started
    I	11:37:31.585	[DFU] Firmware file opened successfully
    D	11:37:31.585	[DFU] wait(1000)
    D	11:37:32.599	[DFU] wait(1000)
    V	11:37:33.597	[DFU] Connecting to DFU target...
    D	11:37:33.642	[DFU] gatt = device.connectGatt(autoConnect = false)
    I	11:37:33.933	[DFU] Connected to FE:75:B9:3E:5E:1C
    V	11:37:33.933	[DFU] Discovering services...
    D	11:37:33.933	[DFU] gatt.discoverServices()
    D	11:37:33.933	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
    D	11:37:33.948	[DFU] [Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
    I	11:37:34.525	[DFU] Services discovered
    D	11:37:34.555	[DFU] wait(1000)
    W	11:37:35.542	[DFU] Application with buttonless update found
    V	11:37:35.542	[DFU] Jumping to the DFU Bootloader...
    V	11:37:35.542	[DFU] Enabling notifications for 8e400001-f315-4f60-9fb8-838830daea50
    D	11:37:35.542	[DFU] gatt.setCharacteristicNotification(8e400001-f315-4f60-9fb8-838830daea50, true)
    D	11:37:35.542	[DFU] gatt.writeDescriptor(00002902-0000-1000-8000-00805f9b34fb, value=0x01-00)
    I	11:37:35.640	[DFU] Data written to descr.8e400001-f315-4f60-9fb8-838830daea50, value (0x): 01-00
    V	11:37:35.640	[DFU] Notifications enabled for 8e400001-f315-4f60-9fb8-838830daea50
    A	11:37:35.640	[DFU] Notifications enabled
    D	11:37:35.640	[DFU] wait(1000)
    V	11:37:36.659	[DFU] Writing to characteristic 8e400001-f315-4f60-9fb8-838830daea50
    D	11:37:36.660	[DFU] gatt.writeCharacteristic(8e400001-f315-4f60-9fb8-838830daea50)
    I	11:37:36.750	[DFU] Notification received from 8e400001-f315-4f60-9fb8-838830daea50, value (0x): 20-01-01
    A	11:37:36.750	[DFU] Enter bootloader sent (Op Code = 1)
    A	11:37:36.750	[DFU] Response received (Op Code = 1, Status = 1)
    I	11:37:37.186	[DFU] Disconnected by the remote device
    D	11:37:37.186	[DFU] gatt.refresh() (hidden)
    D	11:37:37.186	[DFU] gatt.close()
    V	11:37:37.186	[DFU] Scanning for the DFU Bootloader...
    D	11:37:37.212	[Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
    D	11:37:37.235	[DFU] [Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
    I	11:37:37.482	[DFU] DFU Bootloader found with address FE:75:B9:3E:5E:1C
    ------------------------------------------------
    V	11:37:37.514	[DFU] DFU service started
    I	11:37:37.514	[DFU] Firmware file opened successfully
    D	11:37:37.514	[DFU] wait(1000)
    D	11:37:38.512	[DFU] wait(1000)
    V	11:37:39.509	[DFU] Connecting to DFU target...
    D	11:37:39.557	[DFU] gatt = device.connectGatt(autoConnect = false)
    I	11:37:44.129	[DFU] Connected to FE:75:B9:3E:5E:1C
    V	11:37:44.129	[DFU] Discovering services...
    D	11:37:44.129	[DFU] gatt.discoverServices()
    D	11:37:44.139	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
    D	11:37:44.154	[DFU] [Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
    I	11:37:44.900	[DFU] Services discovered
    D	11:37:44.924	[DFU] wait(1000)
    W	11:37:45.915	[DFU] Application with buttonless update found
    V	11:37:45.915	[DFU] Jumping to the DFU Bootloader...
    V	11:37:45.915	[DFU] Enabling notifications for 8e400001-f315-4f60-9fb8-838830daea50
    D	11:37:45.915	[DFU] gatt.setCharacteristicNotification(8e400001-f315-4f60-9fb8-838830daea50, true)
    D	11:37:45.915	[DFU] gatt.writeDescriptor(00002902-0000-1000-8000-00805f9b34fb, value=0x01-00)
    I	11:37:46.013	[DFU] Data written to descr.8e400001-f315-4f60-9fb8-838830daea50, value (0x): 01-00
    V	11:37:46.013	[DFU] Notifications enabled for 8e400001-f315-4f60-9fb8-838830daea50
    A	11:37:46.013	[DFU] Notifications enabled
    D	11:37:46.013	[DFU] wait(1000)
    V	11:37:47.057	[DFU] Writing to characteristic 8e400001-f315-4f60-9fb8-838830daea50
    D	11:37:47.061	[DFU] gatt.writeCharacteristic(8e400001-f315-4f60-9fb8-838830daea50)
    I	11:37:47.122	[DFU] Notification received from 8e400001-f315-4f60-9fb8-838830daea50, value (0x): 20-01-01
    A	11:37:47.122	[DFU] Enter bootloader sent (Op Code = 1)
    A	11:37:47.122	[DFU] Response received (Op Code = 1, Status = 1)
    I	11:37:47.575	[DFU] Disconnected by the remote device
    D	11:37:47.575	[DFU] gatt.refresh() (hidden)
    D	11:37:47.575	[DFU] gatt.close()
    V	11:37:47.575	[DFU] Scanning for the DFU Bootloader...
    D	11:37:47.585	[Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
    D	11:37:47.604	[DFU] [Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
    I	11:37:47.873	[DFU] DFU Bootloader found with address FE:75:B9:3E:5E:1C
    ------------------------------------------------
    V	11:37:47.889	[DFU] DFU service started
    I	11:37:47.889	[DFU] Firmware file opened successfully
    D	11:37:47.889	[DFU] wait(1000)
    D	11:37:48.890	[DFU] wait(1000)
    V	11:37:49.906	[DFU] Connecting to DFU target...
    D	11:37:49.947	[DFU] gatt = device.connectGatt(autoConnect = false)
    

  • I just found the source of this problem through the nRF Connect utility.
    The problem was confirmed that the memory map areas overlap.
    The bootloader area overlaps with the application (buttonless) area.
    However, I do not understand that these two sources were tested using the original ones, and I do not understand that this phenomenon occurs.
    Do you have a solution that you know?

  • Oh! I solved it.
    I didn't know that I had to merge boot.hex and application.hex and download them to the chip in order to set the device to invoke boot mode without a button when the application is up.
    I'm working on fixing that issue now and applying source to my project.

    But I still can't find a command to call boot mode haha .... ㅠㅠ :(
    Instead, the command you gave me seems to help a bit.
    Is it right to call boot mode using that part?
    I will try more. Thank you.

  • Hi Aser, 

    RAM overlapping shouldn't be a problem. The bootloader and the application wouldn't run at the same time. I just tested here and don't see the problem that you are having. 

    Could you let me know how exactly you flashed the bootloader and the application ? with step by step. For example: 

    1. Flash softdevice using nrfjprog. (please specify what exact command you used to test)

    2. Flash bootloader

    3. .... 

    I attached here the hex files (BL,SD,APP) that I read from my board. You can use this file to test. 

    I have modified the bootloader so that it by default will jump to the application. The sequence you would need to do with nrfjprog (don't use nrfconnect) is: 

    1. nrfjprog --eraseall

    2.  nrfjprog --program .\s132_nrf52_3.0.0_softdevice.hex

    3. nrfjprog --program .\buttonless.hex --sectorerase

    4. nrfjprog --program .\nrf52832_xxaa_s132_compressed.hex --sectorerase

    Please use the exact sequence. If you flash the bootloader before the application you may risk erasing the bootloader setting. 

    buttonless.zip

Related