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

ble_app_hrs crash

Hello,

I have modified the ble_app_hrs to work with PCA10100 and softDevice S113. The application seems to function correctly, advertisements work fine and I can connect from the nRFToolbox android app and receive data. However, I have noticed that the app randomly crashes while in advertising mode (i.e. the debugger stops in the middle of some assembly code in embedded Studio). I have mostly modified the project file. I have also done minor modifications in sdk_config.h (i.e. NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED set to zero and NRF_LOG_BACKEND_RTT_ENABLED set to one). I have not modified main.c. The emProject file contents is copied below (For some reason I couldn't attach it as a file or copy it in the message as code).

I am using Segger Embedded Studio version 4.52b under Windows 10 x64 and sdk nRF5_SDK_16.0.0_98a08e2.

Thank you very much for your help,

Sam

<!DOCTYPE CrossStudio_Project_File>
<solution Name="ble_app_hrs_pca10100_s113" target="8" version="2">
<project Name="ble_app_hrs_pca10100_s113">
<configuration
Name="Common"
arm_architecture="v7EM"
arm_core_type="Cortex-M4"
arm_endian="Little"
arm_fp_abi="Hard"
arm_fpu_type="FPv4-SP-D16"
arm_linker_heap_size="2048"
arm_linker_process_stack_size="0"
arm_linker_stack_size="2048"
arm_linker_treat_warnings_as_errors="No"
arm_simulator_memory_simulation_parameter="RWX 00000000,00100000,FFFFFFFF;RWX 20000000,00010000,CDCDCDCD"
arm_target_device_name="nRF52833_xxAA"
arm_target_interface_type="SWD"
c_preprocessor_definitions="APP_TIMER_V2;APP_TIMER_V2_RTC1_ENABLED;BLE_STACK_SUPPORT_REQD;BOARD_PCA10100;CONFIG_GPIO_AS_PINRESET;FLOAT_ABI_HARD;INITIALIZE_USER_SECTIONS;MBEDTLS_CONFIG_FILE=&quot;nrf_crypto_mbedtls_config.h&quot;;NO_VTOR_CONFIG;NRF52;NRF52833_XXAA;NRF52_PAN_74;NRF_CRYPTO_MAX_INSTANCE_COUNT=1;NRF_SD_BLE_API_VERSION=7;S113;SOFTDEVICE_PRESENT;"
c_user_include_directories="../../../config;../../../../../../components;../../../../../../components/ble/ble_advertising;../../../../../../components/ble/ble_dtm;../../../../../../components/ble/ble_racp;../../../../../../components/ble/ble_services/ble_ancs_c;../../../../../../components/ble/ble_services/ble_ans_c;../../../../../../components/ble/ble_services/ble_bas;../../../../../../components/ble/ble_services/ble_bas_c;../../../../../../components/ble/ble_services/ble_cscs;../../../../../../components/ble/ble_services/ble_cts_c;../../../../../../components/ble/ble_services/ble_dfu;../../../../../../components/ble/ble_services/ble_dis;../../../../../../components/ble/ble_services/ble_gls;../../../../../../components/ble/ble_services/ble_hids;../../../../../../components/ble/ble_services/ble_hrs;../../../../../../components/ble/ble_services/ble_hrs_c;../../../../../../components/ble/ble_services/ble_hts;../../../../../../components/ble/ble_services/ble_ias;../../../../../../components/ble/ble_services/ble_ias_c;../../../../../../components/ble/ble_services/ble_lbs;../../../../../../components/ble/ble_services/ble_lbs_c;../../../../../../components/ble/ble_services/ble_lls;../../../../../../components/ble/ble_services/ble_nus;../../../../../../components/ble/ble_services/ble_nus_c;../../../../../../components/ble/ble_services/ble_rscs;../../../../../../components/ble/ble_services/ble_rscs_c;../../../../../../components/ble/ble_services/ble_tps;../../../../../../components/ble/common;../../../../../../components/ble/nrf_ble_gatt;../../../../../../components/ble/nrf_ble_qwr;../../../../../../components/ble/peer_manager;../../../../../../components/boards;../../../../../../components/libraries/atomic;../../../../../../components/libraries/atomic_fifo;../../../../../../components/libraries/atomic_flags;../../../../../../components/libraries/balloc;../../../../../../components/libraries/bootloader/ble_dfu;../../../../../../components/libraries/bsp;../../../../../../components/libraries/button;../../../../../../components/libraries/cli;../../../../../../components/libraries/crc16;../../../../../../components/libraries/crc32;../../../../../../components/libraries/crypto;../../../../../../components/libraries/crypto/backend/cc310;../../../../../../components/libraries/crypto/backend/cc310_bl;../../../../../../components/libraries/crypto/backend/cifra;../../../../../../components/libraries/crypto/backend/mbedtls;../../../../../../components/libraries/crypto/backend/micro_ecc;../../../../../../components/libraries/crypto/backend/nrf_hw;../../../../../../components/libraries/crypto/backend/nrf_sw;../../../../../../components/libraries/crypto/backend/oberon;../../../../../../components/libraries/crypto/backend/optiga;../../../../../../components/libraries/csense;../../../../../../components/libraries/csense_drv;../../../../../../components/libraries/delay;../../../../../../components/libraries/ecc;../../../../../../components/libraries/experimental_section_vars;../../../../../../components/libraries/experimental_task_manager;../../../../../../components/libraries/fds;../../../../../../components/libraries/fstorage;../../../../../../components/libraries/gfx;../../../../../../components/libraries/gpiote;../../../../../../components/libraries/hardfault;../../../../../../components/libraries/hci;../../../../../../components/libraries/led_softblink;../../../../../../components/libraries/log;../../../../../../components/libraries/log/src;../../../../../../components/libraries/low_power_pwm;../../../../../../components/libraries/mem_manager;../../../../../../components/libraries/memobj;../../../../../../components/libraries/mpu;../../../../../../components/libraries/mutex;../../../../../../components/libraries/pwm;../../../../../../components/libraries/pwr_mgmt;../../../../../../components/libraries/queue;../../../../../../components/libraries/ringbuf;../../../../../../components/libraries/scheduler;../../../../../../components/libraries/sdcard;../../../../../../components/libraries/sensorsim;../../../../../../components/libraries/slip;../../../../../../components/libraries/sortlist;../../../../../../components/libraries/spi_mngr;../../../../../../components/libraries/stack_guard;../../../../../../components/libraries/stack_info;../../../../../../components/libraries/strerror;../../../../../../components/libraries/svc;../../../../../../components/libraries/timer;../../../../../../components/libraries/twi_mngr;../../../../../../components/libraries/twi_sensor;../../../../../../components/libraries/usbd;../../../../../../components/libraries/usbd/class/audio;../../../../../../components/libraries/usbd/class/cdc;../../../../../../components/libraries/usbd/class/cdc/acm;../../../../../../components/libraries/usbd/class/hid;../../../../../../components/libraries/usbd/class/hid/generic;../../../../../../components/libraries/usbd/class/hid/kbd;../../../../../../components/libraries/usbd/class/hid/mouse;../../../../../../components/libraries/usbd/class/msc;../../../../../../components/libraries/util;../../../../../../components/nfc/ndef/conn_hand_parser;../../../../../../components/nfc/ndef/conn_hand_parser/ac_rec_parser;../../../../../../components/nfc/ndef/conn_hand_parser/ble_oob_advdata_parser;../../../../../../components/nfc/ndef/conn_hand_parser/le_oob_rec_parser;../../../../../../components/nfc/ndef/connection_handover/ac_rec;../../../../../../components/nfc/ndef/connection_handover/ble_oob_advdata;../../../../../../components/nfc/ndef/connection_handover/ble_pair_lib;../../../../../../components/nfc/ndef/connection_handover/ble_pair_msg;../../../../../../components/nfc/ndef/connection_handover/common;../../../../../../components/nfc/ndef/connection_handover/ep_oob_rec;../../../../../../components/nfc/ndef/connection_handover/hs_rec;../../../../../../components/nfc/ndef/connection_handover/le_oob_rec;../../../../../../components/nfc/ndef/generic/message;../../../../../../components/nfc/ndef/generic/record;../../../../../../components/nfc/ndef/launchapp;../../../../../../components/nfc/ndef/parser/message;../../../../../../components/nfc/ndef/parser/record;../../../../../../components/nfc/ndef/text;../../../../../../components/nfc/ndef/uri;../../../../../../components/nfc/platform;../../../../../../components/nfc/t2t_lib;../../../../../../components/nfc/t2t_parser;../../../../../../components/nfc/t4t_lib;../../../../../../components/nfc/t4t_parser/apdu;../../../../../../components/nfc/t4t_parser/cc_file;../../../../../../components/nfc/t4t_parser/hl_detection_procedure;../../../../../../components/nfc/t4t_parser/tlv;../../../../../../components/softdevice/common;../../../../../../components/softdevice/s113/headers;../../../../../../components/softdevice/s113/headers/nrf52;../../../../../../components/toolchain/cmsis/include;../../../../../../external/fprintf;../../../../../../external/mbedtls/include;../../../../../../external/nrf_cc310/include;../../../../../../external/nrf_oberon;../../../../../../external/nrf_oberon/include;../../../../../../external/nrf_tls/mbedtls/nrf_crypto/config;../../../../../../external/segger_rtt;../../../../../../external/utf_converter;../../../../../../integration/nrfx;../../../../../../integration/nrfx/legacy;../../../../../../modules/nrfx;../../../../../../modules/nrfx/drivers/include;../../../../../../modules/nrfx/hal;../../../../../../modules/nrfx/mdk;../config;"
debug_additional_load_file="../../../../../../components/softdevice/s113/hex/s113_nrf52_7.0.1_softdevice.hex"
debug_register_definition_file="../../../../../../modules/nrfx/mdk/nrf52833.svd"
debug_start_from_entry_point_symbol="No"
debug_target_connection="J-Link"
gcc_debugging_level="Level 3"
gcc_entry_point="Reset_Handler"
linker_output_format="hex"
linker_printf_fmt_level="long"
linker_printf_width_precision_supported="Yes"
linker_scanf_fmt_level="long"
linker_section_placement_file="flash_placement.xml"
linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x80000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x20000;FLASH_START=0x1c000;FLASH_SIZE=0x64000;RAM_START=0x20002700;RAM_SIZE=0x1d900"
linker_section_placements_segments="FLASH RX 0x0 0x80000;RAM RWX 0x20000000 0x20000"
macros="CMSIS_CONFIG_TOOL=../../../../../../external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar"
project_directory=""
project_type="Executable" />
<folder Name="Segger Startup Files">
<file file_name="$(StudioDir)/source/thumb_crt0.s" />
</folder>
<folder Name="nrf_cc310">
<file file_name="../../../../../../external/nrf_cc310/lib/cortex-m4/hard-float/libnrf_cc310_0.9.12.a" />
</folder>
<folder Name="Board Support">
<file file_name="../../../../../../components/libraries/bsp/bsp.c" />
<file file_name="../../../../../../components/libraries/bsp/bsp_btn_ble.c" />
</folder>
<folder Name="nRF_Crypto backend nRF HW">
<file file_name="../../../../../../components/libraries/crypto/backend/nrf_hw/nrf_hw_backend_init.c" />
<file file_name="../../../../../../components/libraries/crypto/backend/nrf_hw/nrf_hw_backend_rng.c" />
<file file_name="../../../../../../components/libraries/crypto/backend/nrf_hw/nrf_hw_backend_rng_mbedtls.c" />
</folder>
<folder Name="nRF_Libraries">
<file file_name="../../../../../../components/libraries/button/app_button.c" />
<file file_name="../../../../../../components/libraries/util/app_error.c" />
<file file_name="../../../../../../components/libraries/util/app_error_handler_gcc.c" />
<file file_name="../../../../../../components/libraries/util/app_error_weak.c" />
<file file_name="../../../../../../components/libraries/scheduler/app_scheduler.c" />
<file file_name="../../../../../../components/libraries/timer/app_timer2.c" />
<file file_name="../../../../../../components/libraries/util/app_util_platform.c" />
<file file_name="../../../../../../components/libraries/crc16/crc16.c" />
<file file_name="../../../../../../components/libraries/timer/drv_rtc.c" />
<file file_name="../../../../../../components/libraries/fds/fds.c" />
<file file_name="../../../../../../components/libraries/hardfault/hardfault_implementation.c" />
<file file_name="../../../../../../components/libraries/mem_manager/mem_manager.c" />
<file file_name="../../../../../../components/libraries/util/nrf_assert.c" />
<file file_name="../../../../../../components/libraries/atomic_fifo/nrf_atfifo.c" />
<file file_name="../../../../../../components/libraries/atomic_flags/nrf_atflags.c" />
<file file_name="../../../../../../components/libraries/atomic/nrf_atomic.c" />
<file file_name="../../../../../../components/libraries/balloc/nrf_balloc.c" />
<file file_name="../../../../../../external/fprintf/nrf_fprintf.c" />
<file file_name="../../../../../../external/fprintf/nrf_fprintf_format.c" />
<file file_name="../../../../../../components/libraries/fstorage/nrf_fstorage.c" />
<file file_name="../../../../../../components/libraries/fstorage/nrf_fstorage_sd.c" />
<file file_name="../../../../../../components/libraries/memobj/nrf_memobj.c" />
<file file_name="../../../../../../components/libraries/pwr_mgmt/nrf_pwr_mgmt.c" />
<file file_name="../../../../../../components/libraries/queue/nrf_queue.c" />
<file file_name="../../../../../../components/libraries/ringbuf/nrf_ringbuf.c" />
<file file_name="../../../../../../components/libraries/experimental_section_vars/nrf_section_iter.c" />
<file file_name="../../../../../../components/libraries/sortlist/nrf_sortlist.c" />
<file file_name="../../../../../../components/libraries/strerror/nrf_strerror.c" />
<file file_name="../../../../../../components/libraries/sensorsim/sensorsim.c" />
</folder>
<folder Name="nRF_Drivers">
<file file_name="../../../../../../integration/nrfx/legacy/nrf_drv_clock.c" />
<file file_name="../../../../../../integration/nrfx/legacy/nrf_drv_rng.c" />
<file file_name="../../../../../../integration/nrfx/legacy/nrf_drv_uart.c" />
<file file_name="../../../../../../modules/nrfx/soc/nrfx_atomic.c" />
<file file_name="../../../../../../modules/nrfx/drivers/src/nrfx_clock.c" />
<file file_name="../../../../../../modules/nrfx/drivers/src/nrfx_gpiote.c" />
<file file_name="../../../../../../modules/nrfx/drivers/src/prs/nrfx_prs.c" />
<file file_name="../../../../../../modules/nrfx/drivers/src/nrfx_rng.c" />
<file file_name="../../../../../../modules/nrfx/drivers/src/nrfx_uart.c" />
<file file_name="../../../../../../modules/nrfx/drivers/src/nrfx_uarte.c" />
</folder>
<folder Name="Board Definition">
<file file_name="../../../../../../components/boards/boards.c" />
</folder>
<folder Name="nRF_Log">
<file file_name="../../../../../../components/libraries/log/src/nrf_log_backend_rtt.c" />
<file file_name="../../../../../../components/libraries/log/src/nrf_log_backend_serial.c" />
<file file_name="../../../../../../components/libraries/log/src/nrf_log_backend_uart.c" />
<file file_name="../../../../../../components/libraries/log/src/nrf_log_default_backends.c" />
<file file_name="../../../../../../components/libraries/log/src/nrf_log_frontend.c" />
<file file_name="../../../../../../components/libraries/log/src/nrf_log_str_formatter.c" />
</folder>
<folder Name="nRF_TLS">
<file file_name="../../../../../../external/mbedtls/library/aes.c" />
<file file_name="../../../../../../external/mbedtls/library/ctr_drbg.c" />
</folder>
<folder Name="nRF_Oberon_Crypto">
<file file_name="../../../../../../external/nrf_oberon/lib/cortex-m4/hard-float/liboberon_3.0.1.a" />
</folder>
<folder Name="nRF_Crypto">
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_aead.c" />
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_aes.c" />
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_aes_shared.c" />
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_ecc.c" />
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_ecdh.c" />
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_ecdsa.c" />
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_eddsa.c" />
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_error.c" />
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_hash.c" />
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_hkdf.c" />
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_hmac.c" />
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_init.c" />
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_rng.c" />
<file file_name="../../../../../../components/libraries/crypto/nrf_crypto_shared.c" />
</folder>
<folder Name="Application">
<file file_name="../../../main.c" />
<file file_name="../config/sdk_config.h" />
</folder>
<folder Name="nRF_Segger_RTT">
<file file_name="../../../../../../external/segger_rtt/SEGGER_RTT.c" />
<file file_name="../../../../../../external/segger_rtt/SEGGER_RTT_Syscalls_SES.c" />
<file file_name="../../../../../../external/segger_rtt/SEGGER_RTT_printf.c" />
</folder>
<folder Name="None">
<file file_name="../../../../../../modules/nrfx/mdk/ses_startup_nrf52.s" />
<file file_name="../../../../../../modules/nrfx/mdk/ses_startup_nrf_common.s" />
<file file_name="../../../../../../modules/nrfx/mdk/system_nrf52.c" />
</folder>
<folder Name="nRF_BLE">
<file file_name="../../../../../../components/ble/peer_manager/auth_status_tracker.c" />
<file file_name="../../../../../../components/ble/common/ble_advdata.c" />
<file file_name="../../../../../../components/ble/ble_advertising/ble_advertising.c" />
<file file_name="../../../../../../components/ble/common/ble_conn_params.c" />
<file file_name="../../../../../../components/ble/common/ble_conn_state.c" />
<file file_name="../../../../../../components/ble/common/ble_srv_common.c" />
<file file_name="../../../../../../components/ble/peer_manager/gatt_cache_manager.c" />
<file file_name="../../../../../../components/ble/peer_manager/gatts_cache_manager.c" />
<file file_name="../../../../../../components/ble/peer_manager/id_manager.c" />
<file file_name="../../../../../../components/ble/nrf_ble_gatt/nrf_ble_gatt.c" />
<file file_name="../../../../../../components/ble/peer_manager/nrf_ble_lesc.c" />
<file file_name="../../../../../../components/ble/nrf_ble_qwr/nrf_ble_qwr.c" />
<file file_name="../../../../../../components/ble/peer_manager/peer_data_storage.c" />
<file file_name="../../../../../../components/ble/peer_manager/peer_database.c" />
<file file_name="../../../../../../components/ble/peer_manager/peer_id.c" />
<file file_name="../../../../../../components/ble/peer_manager/peer_manager.c" />
<file file_name="../../../../../../components/ble/peer_manager/peer_manager_handler.c" />
<file file_name="../../../../../../components/ble/peer_manager/pm_buffer.c" />
<file file_name="../../../../../../components/ble/peer_manager/security_dispatcher.c" />
<file file_name="../../../../../../components/ble/peer_manager/security_manager.c" />
</folder>
<folder Name="UTF8/UTF16 converter">
<file file_name="../../../../../../external/utf_converter/utf.c" />
</folder>
<folder Name="nRF_BLE_Services">
<file file_name="../../../../../../components/ble/ble_services/ble_bas/ble_bas.c" />
<file file_name="../../../../../../components/ble/ble_services/ble_dis/ble_dis.c" />
<file file_name="../../../../../../components/ble/ble_services/ble_hrs/ble_hrs.c" />
</folder>
<folder Name="nRF_SoftDevice">
<file file_name="../../../../../../components/softdevice/common/nrf_sdh.c" />
<file file_name="../../../../../../components/softdevice/common/nrf_sdh_ble.c" />
<file file_name="../../../../../../components/softdevice/common/nrf_sdh_soc.c" />
</folder>
<folder Name="nRF_Crypto backend Oberon">
<file file_name="../../../../../../components/libraries/crypto/backend/oberon/oberon_backend_chacha_poly_aead.c" />
<file file_name="../../../../../../components/libraries/crypto/backend/oberon/oberon_backend_ecc.c" />
<file file_name="../../../../../../components/libraries/crypto/backend/oberon/oberon_backend_ecdh.c" />
<file file_name="../../../../../../components/libraries/crypto/backend/oberon/oberon_backend_ecdsa.c" />
<file file_name="../../../../../../components/libraries/crypto/backend/oberon/oberon_backend_eddsa.c" />
<file file_name="../../../../../../components/libraries/crypto/backend/oberon/oberon_backend_hash.c" />
<file file_name="../../../../../../components/libraries/crypto/backend/oberon/oberon_backend_hmac.c" />
</folder>
</project>
<configuration
Name="Release"
c_preprocessor_definitions="NDEBUG"
gcc_optimization_level="Optimize For Size" />
<configuration
Name="Debug"
c_preprocessor_definitions="DEBUG; DEBUG_NRF"
gcc_optimization_level="None" />
</solution>

Parents Reply
  • Hi Hung,

    The problem is actually easily reproducible. I loaded the application and set a break point on the error handler. The board starts to advertise and it looks like the problem happens when the advertisement period is over after 180 seconds. I have attached a screenshot. It looked like the filename in the error handler was '*'.

    I have also tried with ble_app_uart and the same issue happens at the same moment. I have attached a screenshot.

Children
Related