Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs

nRF52 DK - Peripheral UART example unmodified fails if CONFIG_BT_SERVICES is enabled.

I'm testing out the Peripheral Uart example on the nRF52 DK with zero modifications using visual studio code.  However, when I run it, it constantly reboots.  When using the debugger, it seems to be that something in the bt_enable() function causes it to SIGTRAP.

This is the output of the debug console

Thread 9 received signal SIGTRAP, Trace/breakpoint trap.
[Switching to Remote target]
z_arm_is_synchronous_svc (esf=0x20006548 <z_main_stack+8>) at C:/ncs/v2.1.0-rc2/zephyr/arch/arm/core/aarch32/cortex_m/fault.c:649
649 uint16_t fault_insn = *(ret_addr - 1);

The RTT doesn't display anything.  And if I use the debugger, it dies in the z_arm_is_synchronous_svc() with a null pointer.

In doing some more digging, it seems the fault occurs with bt_settings_init().  If I turn CONFIG_BT_SERVICES off, the application seems to boot fine.  

This is a new DK and I've not paired it with anything in the past.  Not sure if this is exposing a bug associated with new hardware?

Parents
  • I have the same problem. SDK 2.3.0. For me, helped the following:

    //////////////////////////
    // my additions to work on clean MCU
    #include <zephyr/storage/flash_map.h>
    //////////////////////////

    void main(void)
    {
        int blink_status = 0;
        int err = 0;

        //////////////////////////
        // my additions to work on clean MCU
        if (!device_is_ready(FIXED_PARTITION_DEVICE(storage_partition))) {
            printk("Flash device %s is not ready\n", FIXED_PARTITION_DEVICE(storage_partition)->name);
            return;    
        }
        //////////////////////////

      

Reply
  • I have the same problem. SDK 2.3.0. For me, helped the following:

    //////////////////////////
    // my additions to work on clean MCU
    #include <zephyr/storage/flash_map.h>
    //////////////////////////

    void main(void)
    {
        int blink_status = 0;
        int err = 0;

        //////////////////////////
        // my additions to work on clean MCU
        if (!device_is_ready(FIXED_PARTITION_DEVICE(storage_partition))) {
            printk("Flash device %s is not ready\n", FIXED_PARTITION_DEVICE(storage_partition)->name);
            return;    
        }
        //////////////////////////

      

Children
Related