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

S130 OTA DFU for QFAA IC (PCA10001 board)

Hi all, I have an PCA10001 board and a custom PCB which also uses the QFAA version (256KB flash, 16KB RAM). I'm trying to enable OTA feature for our custom board. I use the dual_bank_ble_s130 sample code (SDK8.0) with some modification to the linker script as below:

MEMORY { /** Flash start address for the bootloader. This setting will also be stored in UICR to allow the

  • MBR to init the bootloader when starting the system. This value must correspond to
  • BOOTLOADER_REGION_START found in dfu_types.h. The system is prevented from starting up if
  • those values do not match. The check is performed in main.c, see
  • APP_ERROR_CHECK_BOOL(*((uint32_t *)NRF_UICR_BOOT_START_ADDRESS) == BOOTLOADER_REGION_START); */ FLASH (rx) : ORIGIN = 0x3C000, LENGTH = 0x3C00

/** RAM Region for bootloader. This setting is suitable when used with s110, s120, s130, s310. / / RAM (rwx) : ORIGIN = 0x20002c00, LENGTH = 0x5380 */ RAM (rwx) : ORIGIN = 0x20002000, LENGTH = 0x1f80

/** Location of non initialized RAM. Non initialized RAM is used for exchanging bond information

  • from application to bootloader when using buttonluss DFU OTA. */ NOINIT (rwx) : ORIGIN = 0x20003f80, LENGTH = 0x80

I also change the LED display and BUTTON number used in the bootloader code (PCA10001 only has 2 LEDs and 2 buttons as compared to PCA10028). So the code compiles just fine using gcc toolchain. I downloaded the hex file and softdevice using openocd and jlink. At this point, i haven't downloaded any application code. The device is not advertising any DFU service at all. So i tried to use my Jlink debugger to debug the code. It can run to main() in bootloader code, turn on the LED in my board, but then it doesn't do anything. Hope you guys can help me figure this out.

Regards, Hoang

Parents
  • @Hoang: S110 8.0 doesn't work out of the box for chip version 2 and is not compatible with chip v1 (the one on PCA10001 board, depend on the version of the board, you may have chip v2 or chip v1. Please have a look at the compability matrix table to know which version your chip is). You would need to use the sd_ble_opt_set() function to set the CPU to be blocked by radio. Please have a look at the changes section in the S110 v8.0 release note. Have you managed to run any SDK v8.0 example ?

    To debug the bootloader, you would need to change the optimization level. Please have a look at question #F in this FAQ.

Reply
  • @Hoang: S110 8.0 doesn't work out of the box for chip version 2 and is not compatible with chip v1 (the one on PCA10001 board, depend on the version of the board, you may have chip v2 or chip v1. Please have a look at the compability matrix table to know which version your chip is). You would need to use the sd_ble_opt_set() function to set the CPU to be blocked by radio. Please have a look at the changes section in the S110 v8.0 release note. Have you managed to run any SDK v8.0 example ?

    To debug the bootloader, you would need to change the optimization level. Please have a look at question #F in this FAQ.

Children
No Data
Related