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

Unable to debug with Hardfault_Handler

nrf52832

SDK 14.2

My application is locking up, and finding the cause is proving to be difficult. I've enabled DEBUG and DEBUG_NRF and included the hardfault library from the SDK including the file for the compiler I'm using (GCC, hardfault_handler_gcc.c). I was hopeful seeing the calls to NRF_LOG_ERROR in Hardfault_c_handler() that I might get some information about what is happening, but best I can tell this function is never executed. 

Using Segger's Ozone debugger, I can tell that the call stack halts on <Hardfault_Exception> but no error messages are provided. I've attempted trying to override Hardfault_process() and explicitly generate hardfaults using hardfault_genhf.h functions, but no information is ever provided in RTT. Any ideas on what I'm missing?

Parents
  • Hi,

     

    We have a known issue with GCC in SDK v14.2, where the define "NRF_BREAKPOINT_COND" expands to __builtin_trap(), which fails with newlib-nano.

    Here's the section in app_util_platform.h:

    #if defined(__GNUC__)
    #define NRF_BREAKPOINT __builtin_trap() // Expands to _exit()
     
    Define this to a __NOP() or an actual breakpoint "__asm__("BKPT 0");", and the "app_error" assert handler (and the SDK hardfault handler library) should work normally with GCC.
    Could you try this, and report back the fault-details?
     
    Cheers,
    Håkon
  • Hi Hakon, 

    Thanks for your response. I've tried changing NRF_BREAKPOINT to either __NOP() or __asm__("BKPT 0"); but neither changes the behavior. 

    Also, curiously, despite hardfault_implementation.c and hardfault_handler_gcc.c being included in the build and being compiled, it does not show up in the list of sources in Ozone's analysis of the .elf. This keeps me from putting a breakpoint in those files. 

    *Addition*

    I've enabled -frecord-gcc-switches to verify the following:

    * hardfault and hardfault/nrf52/handler are being included (-I)

    * -0g and -g3 GCC flags are set

    * DEBUG and DEBUG_NRF are set

  • Hi,

     

    Do you have the .c files included in your makefile, or just the include path?

    $(SDK_ROOT)/components/libraries/hardfault/hardfault_implementation.c \
    $(SDK_ROOT)/components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c \

     

    After adding these, and setting sdk_config.h::HARDFAULT_HANDLER_ENABLED 1, I was stuck in the fault handler, and able to set breakpoints:

    (gdb) b HardFault_Handler
    Note: breakpoint 2 also set at pc 0x25fbc.
    Breakpoint 3 at 0x25fbc: file ../../../../../../components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c, line 51.
    (gdb) b HardFault_c_handler
    Breakpoint 4 at 0x25eac: file ../../../../../../components/libraries/hardfault/hardfault_implementation.c, line 73.
    (gdb) c
    Continuing.
    
    Breakpoint 2, HardFault_Handler ()
        at ../../../../../../components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c:51
    51          __ASM volatile(
    (gdb) c
    Continuing.
    
    Breakpoint 4, HardFault_c_handler (p_stack_address=0x2000ffd0)
        at ../../../../../../components/libraries/hardfault/hardfault_implementation.c:73
    73      {
    (gdb)

     

    Did you remember to enable the hardfault handler in your sdk_config.h?

     

    Best regards,

    Håkon

  • Hi Hakon,

    Yes, I have #define HARDFAULT_HANDLER_ENABLED 1 in my sdk_config.h. 

    I am using CMake and compile the SDK as a library as follows (this is inspired by the Mesh SDK):

    *EDIT* Cleaned up things I wasn't using.

    set(SDK_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
    set(SDK_COMPONENTS "${SDK_ROOT}/components")
    set(SDK_LIBRARY "${SDK_COMPONENTS}/libraries")
    set(SDK_EXTERNAL "${SDK_ROOT}/external")
    set(SDK_DRIVER "${SDK_COMPONENTS}/drivers_nrf")
    set(SDK_SOFTDEVICE "${SDK_COMPONENTS}/softdevice")
    set(SDK_BLE "${SDK_COMPONENTS}/ble")
    
    set(SDK_SOURCE_FILES
        ${SDK_COMPONENTS}/boards/boards.c
        ${SDK_COMPONENTS}/toolchain/system_nrf52.c
    
        ${SDK_BLE}/ble_advertising/ble_advertising.c
        ${SDK_BLE}/common/ble_advdata.c
        ${SDK_BLE}/common/ble_conn_params.c
        ${SDK_BLE}/common/ble_conn_state.c
        ${SDK_BLE}/common/ble_srv_common.c
        ${SDK_BLE}/nrf_ble_gatt/nrf_ble_gatt.c
        ${SDK_BLE}/peer_manager/gatt_cache_manager.c
        ${SDK_BLE}/peer_manager/gatts_cache_manager.c
        ${SDK_BLE}/peer_manager/id_manager.c
        ${SDK_BLE}/peer_manager/peer_data_storage.c
        ${SDK_BLE}/peer_manager/peer_database.c
        ${SDK_BLE}/peer_manager/peer_id.c
        ${SDK_BLE}/peer_manager/peer_manager.c
        ${SDK_BLE}/peer_manager/pm_buffer.c
        ${SDK_BLE}/peer_manager/pm_mutex.c
        ${SDK_BLE}/peer_manager/security_dispatcher.c
        ${SDK_BLE}/peer_manager/security_manager.c
        ${SDK_BLE}/ble_services/ble_nus/ble_nus.c
    
        ${SDK_DRIVER}/clock/nrf_drv_clock.c
        ${SDK_DRIVER}/common/nrf_drv_common.c
        ${SDK_DRIVER}/gpiote/nrf_drv_gpiote.c
        ${SDK_DRIVER}/i2s/nrf_drv_i2s.c
        ${SDK_DRIVER}/spi_master/nrf_drv_spi.c
        ${SDK_DRIVER}/twi_master/nrf_drv_twi.c
        ${SDK_DRIVER}/uart/nrf_drv_uart.c
        ${SDK_DRIVER}/ppi/nrf_drv_ppi.c
        ${SDK_DRIVER}/timer/nrf_drv_timer.c
    
        ${SDK_LIBRARY}/atomic_fifo/nrf_atfifo.c
        ${SDK_LIBRARY}/uart/app_uart_fifo.c
        ${SDK_LIBRARY}/balloc/nrf_balloc.c
        ${SDK_LIBRARY}/bsp/bsp.c
        ${SDK_LIBRARY}/bsp/bsp_btn_ble.c
        ${SDK_LIBRARY}/bsp/bsp_nfc.c
        ${SDK_LIBRARY}/button/app_button.c
        ${SDK_LIBRARY}/fds/fds.c
        ${SDK_LIBRARY}/fifo/app_fifo.c
        ${SDK_LIBRARY}/fstorage/nrf_fstorage.c
        ${SDK_LIBRARY}/hardfault/hardfault_implementation.c
        ${SDK_LIBRARY}/hardfault/nrf52/handler/hardfault_handler_gcc.c
        ${SDK_LIBRARY}/experimental_memobj/nrf_memobj.c
        ${SDK_LIBRARY}/experimental_log/src/nrf_log_backend_rtt.c
        ${SDK_LIBRARY}/experimental_log/src/nrf_log_backend_serial.c
        ${SDK_LIBRARY}/experimental_log/src/nrf_log_backend_uart.c
        ${SDK_LIBRARY}/experimental_log/src/nrf_log_default_backends.c
        ${SDK_LIBRARY}/experimental_log/src/nrf_log_frontend.c
        ${SDK_LIBRARY}/experimental_log/src/nrf_log_str_formatter.c
        ${SDK_LIBRARY}/experimental_section_vars/nrf_section_iter.c
        ${SDK_LIBRARY}/pwr_mgmt/nrf_pwr_mgmt.c
        ${SDK_LIBRARY}/queue/nrf_queue.c
        ${SDK_LIBRARY}/scheduler/app_scheduler.c
        ${SDK_LIBRARY}/spi_mngr/nrf_spi_mngr.c
        ${SDK_LIBRARY}/strerror/nrf_strerror.c
        ${SDK_LIBRARY}/timer/app_timer.c
        ${SDK_LIBRARY}/twi_mngr/nrf_twi_mngr.c
        ${SDK_LIBRARY}/util/app_error.c
        ${SDK_LIBRARY}/util/app_error_weak.c
        ${SDK_LIBRARY}/util/app_util_platform.c
        ${SDK_LIBRARY}/util/nrf_assert.c
        ${SDK_LIBRARY}/util/sdk_mapped_flags.c
    
        ${SDK_SOFTDEVICE}/common/nrf_sdh.c
        ${SDK_SOFTDEVICE}/common/nrf_sdh_ble.c
        ${SDK_SOFTDEVICE}/common/nrf_sdh_soc.c
    
        ${SDK_EXTERNAL}/fprintf/nrf_fprintf.c
        ${SDK_EXTERNAL}/fprintf/nrf_fprintf_format.c
        ${SDK_EXTERNAL}/segger_rtt/SEGGER_RTT_Syscalls_GCC.c
        ${SDK_EXTERNAL}/segger_rtt/SEGGER_RTT.c
        ${SDK_EXTERNAL}/segger_rtt/SEGGER_RTT_printf.c)
    
    #set(SDK_SOURCE_FILES ${SDK_SOURCE_FILES} CACHE INTERNAL "")
    
    
    set(SDK_INCLUDE_DIRS
        ${CMAKE_SOURCE_DIR}/config
        ${SDK_COMPONENTS}
        ${SDK_COMPONENTS}/device
        ${SDK_COMPONENTS}/boards
        ${SDK_COMPONENTS}/toolchain/
        ${SDK_COMPONENTS}/toolchain/cmsis/include
        ${SDK_SOFTDEVICE}/common
        ${SDK_SOFTDEVICE}/${SOFTDEVICE_TYPE}/headers
        ${SDK_BLE}/ble_advertising
        ${SDK_BLE}/ble_dtm
        ${SDK_BLE}/ble_racp
        ${SDK_BLE}/ble_services/ble_ancs_c
        ${SDK_BLE}/ble_services/ble_ans_c
        ${SDK_BLE}/ble_services/ble_bas
        ${SDK_BLE}/ble_services/ble_bas_c
        ${SDK_BLE}/ble_services/ble_cscs
        ${SDK_BLE}/ble_services/ble_cts_c
        ${SDK_BLE}/ble_services/ble_dfu
        ${SDK_BLE}/ble_services/ble_dis
        ${SDK_BLE}/ble_services/ble_gls
        ${SDK_BLE}/ble_services/ble_hids
        ${SDK_BLE}/ble_services/ble_hrs
        ${SDK_BLE}/ble_services/ble_hrs_c
        ${SDK_BLE}/ble_services/ble_hts
        ${SDK_BLE}/ble_services/ble_ias
        ${SDK_BLE}/ble_services/ble_ias_c
        ${SDK_BLE}/ble_services/ble_lbs
        ${SDK_BLE}/ble_services/ble_lbs_c
        ${SDK_BLE}/ble_services/ble_lls
        ${SDK_BLE}/ble_services/ble_nus
        ${SDK_BLE}/ble_services/ble_nus_c
        ${SDK_BLE}/ble_services/ble_rscs
        ${SDK_BLE}/ble_services/ble_rscs_c
        ${SDK_BLE}/ble_services/ble_tps
        ${SDK_BLE}/common
        ${SDK_BLE}/nrf_ble_gatt
        ${SDK_BLE}/nrf_ble_qwr
        ${SDK_BLE}/peer_manager
        ${SDK_DRIVER}/clock
        ${SDK_DRIVER}/common
        ${SDK_DRIVER}/delay
        ${SDK_DRIVER}/gpiote
        ${SDK_DRIVER}/hal
        ${SDK_DRIVER}/i2s
        ${SDK_DRIVER}/ppi
        ${SDK_DRIVER}/rtc
        ${SDK_DRIVER}/spi_master
        ${SDK_DRIVER}/timer
        ${SDK_DRIVER}/twi_master
        ${SDK_DRIVER}/uart
        ${SDK_DRIVER}/wdt
        ${SDK_LIBRARY}/uart
        ${SDK_LIBRARY}/atomic
        ${SDK_LIBRARY}/atomic_fifo
        ${SDK_LIBRARY}/balloc
        ${SDK_LIBRARY}/bsp
        ${SDK_LIBRARY}/button
        ${SDK_LIBRARY}/experimental_log
        ${SDK_LIBRARY}/experimental_log/src
        ${SDK_LIBRARY}/experimental_memobj
        ${SDK_LIBRARY}/experimental_section_vars
        ${SDK_LIBRARY}/fds
        ${SDK_LIBRARY}/fifo
        ${SDK_LIBRARY}/fstorage
        ${SDK_LIBRARY}/gpiote
        ${SDK_LIBRARY}/hardfault
        ${SDK_LIBRARY}/hardfault/nrf52/handler
        ${SDK_LIBRARY}/mem_manager
        ${SDK_LIBRARY}/mutex
        ${SDK_LIBRARY}/pwr_mgmt
        ${SDK_LIBRARY}/queue
        ${SDK_LIBRARY}/scheduler
        ${SDK_LIBRARY}/strerror
        ${SDK_LIBRARY}/timer
        ${SDK_LIBRARY}/twi_mngr
        ${SDK_LIBRARY}/uart
        ${SDK_LIBRARY}/util
        ${SDK_EXTERNAL}/fprintf
        ${SDK_EXTERNAL}/segger_rtt
    )
    
    
    add_library(NRF5_SDK_${nRF5_SDK_VERSION}_${PLATFORM} STATIC ${SDK_SOURCE_FILES})
    
    set_target_link_options_nosection(NRF5_SDK_${nRF5_SDK_VERSION}_${PLATFORM})
    
    target_include_directories(NRF5_SDK_${nRF5_SDK_VERSION}_${PLATFORM} PUBLIC
            ${SDK_INCLUDE_DIRS})
    
    
    target_compile_options(NRF5_SDK_${nRF5_SDK_VERSION}_${PLATFORM} PUBLIC
            ${${ARCH}_DEFINES})
    
    message(${${ARCH}_DEFINES})
    
    target_compile_definitions(NRF5_SDK_${nRF5_SDK_VERSION}_${PLATFORM} PUBLIC
            ${USER_DEFINITIONS}
            ${${PLATFORM}_DEFINES}
            ${${BOARD}_DEFINES}
            ${${SOFTDEVICE}_DEFINES})
    
    #get_property(core_include_dirs TARGET NRF5_SDK_${nRF5_SDK_VERSION}_${PLATFORM} PROPERTY INCLUDE_DIRECTORIES)
    message(STATUS "NRF5 SDK ${nRF5_SDK_VERSION}")

    Other SDK libraries work correctly (such as TWI Manager, NRF Log, etc). 

    When I compile the project, I see the following messages suggesting the hardfault sources are being compiled:

    [ 42%] Building C object nrf5_sdk/14.2.0/CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/hardfault_implementation.c.obj
    [ 42%] Building C object nrf5_sdk/14.2.0/CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c.obj

    *EDIT* Here's my toolchain gccarmemb.cmake inspired from the Mesh SDK CMake files: 

    set(CMAKE_C_COMPILER arm-none-eabi-gcc)
    set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
    set(CMAKE_SIZE_UTIL arm-none-eabi-size)
    set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
    
    set(data_flags "-ffunction-sections -fdata-sections -fno-strict-aliasing -fno-builtin --short-enums")
    set(warning_flags "-Wall -Wno-attributes -Wno-format")
    set(CMAKE_C_FLAGS_INIT "--std=gnu11 ${warning_flags} ${data_flags}")
    set(CMAKE_C_FLAGS_DEBUG "-Og -g3 -frecord-gcc-switches" CACHE STRING "")
    set(CMAKE_C_FLAGS_MINSIZEREL "-Os -g" CACHE STRING "")
    set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -g" CACHE STRING "")
    set(CMAKE_C_FLAGS_RELEASE "-O3" CACHE STRING "")
    
    # removed -fstack-protector-strong  because of lssp linker error?
    set(cxx_flags "-fno-exceptions -fno-non-call-exceptions -fno-rtti -fno-use-cxa-atexit -ffreestanding -fno-common -fno-threadsafe-statics")
    set(CMAKE_CXX_FLAGS_INIT "${warning_flags} ${data_flags} ${cxx_flags}")
    set(CMAKE_CXX_FLAGS_DEBUG "-Og -g3 -frecord-gcc-switches" CACHE STRING "")
    set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -g" CACHE STRING "")
    set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g" CACHE STRING "")
    set(CMAKE_CXX_FLAGS_RELEASE "-O3" CACHE STRING "")
    
    
    set(cortex-m4f_DEFINES
        -mcpu=cortex-m4
        -mthumb
        -mabi=aapcs
        -mfloat-abi=hard
        -mfpu=fpv4-sp-d16)
    
    function (set_target_link_options target_name linker_file)
        set(link_flags
            ${${ARCH}_DEFINES}
            "-Wl,--gc-sections --specs=nano.specs -L\"${${PLATFORM}_LINK_INCLUDE_DIR}\" \"-L${CMAKE_CURRENT_SOURCE_DIR}/linker\""
            "-Xlinker -Map=\"${CMAKE_CURRENT_BINARY_DIR}/${target_name}.map\""
            "-T\"${linker_file}.ld\"")
    
        string(REGEX REPLACE ";" " " link_flags "${link_flags}")
        set_target_properties(${target_name} PROPERTIES LINK_FLAGS ${link_flags})
    endfunction (set_target_link_options)
    
    function (set_target_link_options_nosection target_name)
        set(link_flags
                ${${ARCH}_DEFINES}
                "-Wl,--gc-sections --specs=nano.specs -L\"${${PLATFORM}_LINK_INCLUDE_DIR}\" \"-L${CMAKE_CURRENT_SOURCE_DIR}/linker\""
                "-Xlinker -Map=\"${CMAKE_CURRENT_BINARY_DIR}/${target_name}.map\""
                )
    
        string(REGEX REPLACE ";" " " link_flags "${link_flags}")
        set_target_properties(${target_name} PROPERTIES LINK_FLAGS ${link_flags})
    endfunction (set_target_link_options_nosection)
    
    function (create_hex executable)
        add_custom_command(
            TARGET ${executable}
            POST_BUILD
            COMMAND arm-none-eabi-objcopy -O ihex ${CMAKE_CURRENT_BINARY_DIR}/${executable}.elf ${CMAKE_CURRENT_BINARY_DIR}/${executable}.hex
            COMMENT "Merging ${executable}.hex.."
        )
    endfunction(create_hex)
    
    

    My "platform" vka1.cmake:

    set(vka1_ARCH "cortex-m4f")
    set(vka1_SOURCE_FILES
            "${SDK_ROOT}/components/toolchain/system_nrf52.c")
    
    set(vka1_INCLUDE_DIRS
            "${SDK_ROOT}/components/device"
            "${SDK_ROOT}/components/toolchain"
            "${SDK_ROOT}/components/toolchain/cmsis/include")
    
    if (TOOLCHAIN MATCHES "gcc" OR TOOLCHAIN STREQUAL "clang")
        set(vka1_SOURCE_FILES
                ${vka1_SOURCE_FILES}
                "${SDK_ROOT}/components/toolchain/gcc/gcc_startup_nrf52.S")
        set(vka1_INCLUDE_DIRS
                ${vka1_INCLUDE_DIRS}
                "${SDK_ROOT}/components/toolchain/gcc"
                "${SDK_ROOT}/components/toolchain/dsp/GCC")
        set(vka1_LINK_INCLUDE_DIR
                "${SDK_ROOT}/components/toolchain/gcc")
    elseif (TOOLCHAIN STREQUAL "armcc")
        set(vka1_SOURCE_FILES
                ${vka1_SOURCE_FILES}
                "${SDK_ROOT}/components/toolchain/arm/arm_startup_nrf52.s")
        set(vka1_INCLUDE_DIRS
                ${vka1_INCLUDE_DIRS}
                "${SDK_ROOT}/components/toolchain/arm"
                "${SDK_R OOT}/components/toolchain/dsp/ARM")
    else ()
        message(FATAL_ERROR "Unknown toolchain ${TOOLCHAIN}")
    endif ()
    
    set(vka1_DEFINES
            -DNRF52
            -DNRF52_SERIES
            -DNRF52832
            -DNRF52832_XXAA
            -DDCONFIG_NFCT_PINS_AS_GPIOS
            -DDEBUG      # explicitly set for debugging hardfault issue
            -DDEBUG_NRF  # explicitly set for debugging hardfault issue
            )
    
    set(vka1_FAMILY "NRF52")
    set(vka1_FLASH_SIZE "524288")
    set(vka1_RAM_SIZE "65536")

    Utilizing APP_CONFIG (USE_APP_CONFIG) I have the following for my app_config.h:

    #pragma once
    
    #define DEVICE_NAME "HardFaultMeGently"
    
    #define DEBUG 1
    #define DEBUG_NRF 1
    #define HARDFAULT_HANDLER_ENABLED 1
    #define HARDFAULT_HANDLER_GDB_PSP_BACKTRACE 1
    
    // </h>
    //==========================================================
    
    // <h> Clock - SoftDevice clock configuration
    
    //==========================================================
    // <o> NRF_SDH_CLOCK_LF_SRC  - SoftDevice clock source.
    
    // <0=> NRF_CLOCK_LF_SRC_RC
    // <1=> NRF_CLOCK_LF_SRC_XTAL
    // <2=> NRF_CLOCK_LF_SRC_SYNTH
    #define NRF_SDH_CLOCK_LF_SRC 0
    
    // <o> NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval.
    #ifndef NRF_SDH_CLOCK_LF_RC_CTIV
    #define NRF_SDH_CLOCK_LF_RC_CTIV 16
    #endif
    
    // <o> NRF_SDH_CLOCK_LF_RC_TEMP_CTIV - SoftDevice calibration timer interval under constant temperature.
    // <i> How often (in number of calibration intervals) the RC oscillator shall be calibrated
    // <i>  if the temperature has not changed.
    
    #ifndef NRF_SDH_CLOCK_LF_RC_TEMP_CTIV
    #define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 2
    #endif
    
    // <o> NRF_SDH_CLOCK_LF_XTAL_ACCURACY  - External crystal clock accuracy used in the LL to compute timing windows.
    
    // <0=> NRF_CLOCK_LF_XTAL_ACCURACY_250_PPM
    // <1=> NRF_CLOCK_LF_XTAL_ACCURACY_500_PPM
    // <2=> NRF_CLOCK_LF_XTAL_ACCURACY_150_PPM
    // <3=> NRF_CLOCK_LF_XTAL_ACCURACY_100_PPM
    // <4=> NRF_CLOCK_LF_XTAL_ACCURACY_75_PPM
    // <5=> NRF_CLOCK_LF_XTAL_ACCURACY_50_PPM
    // <6=> NRF_CLOCK_LF_XTAL_ACCURACY_30_PPM
    // <7=> NRF_CLOCK_LF_XTAL_ACCURACY_20_PPM
    
    #ifndef NRF_SDH_CLOCK_LF_XTAL_ACCURACY
    #define NRF_SDH_CLOCK_LF_XTAL_ACCURACY 0
    #endif
    
    
    #define NRF_LOG_ENABLED 1
    #define NRF_LOG_BACKEND_RTT_ENABLED 1
    #define NRF_LOG_USES_COLORS 1
    #define NRF_LOG_USES_MODULE_NAME 1
    
    #define NRF_PWR_MGMT_CONFIG_LOG_ENABLED 1
    #define NRF_PWR_MGMT_CONFIG_CPU_USAGE_MONITOR_ENABLED 1
    #define NRF_PWR_MGMT_CONFIG_USE_SCHEDULER 1
    
    // <e> CLOCK_ENABLED - nrf_drv_clock - CLOCK peripheral driver
    #define CLOCK_ENABLED 1
    
    // <o> CLOCK_CONFIG_LF_SRC  - LF Clock Source
    
    // <0=> RC
    // <1=> XTAL
    // <2=> Synth
    #define CLOCK_CONFIG_LF_SRC 0
    
    // <e> PPI_ENABLED - nrf_drv_ppi - PPI peripheral driver
    #define PPI_ENABLED 1
    
    // <e> SPI_ENABLED - nrf_drv_spi - SPI/SPIM peripheral driver
    #define SPI_ENABLED 1
    
    // <e> SPI1_ENABLED - Enable SPI1 instance
    //==========================================================
    #define SPI1_ENABLED 1
    #if  SPI1_ENABLED
    // <q> SPI1_USE_EASY_DMA  - Use EasyDMA
    
    #define SPI1_USE_EASY_DMA 1
    
    // <o> SPI1_DEFAULT_FREQUENCY  - SPI frequency
    
    // <33554432=> 125 kHz
    // <67108864=> 250 kHz
    // <134217728=> 500 kHz
    // <268435456=> 1 MHz
    // <536870912=> 2 MHz
    // <1073741824=> 4 MHz
    // <2147483648=> 8 MHz
    #define SPI1_DEFAULT_FREQUENCY 536870912
    
    #endif //SPI1_ENABLED
    // </e>
    
    
    // <e> TIMER_ENABLED - nrf_drv_timer - TIMER periperal driver
    //==========================================================
    #define TIMER_ENABLED 1
    
    // <q> TIMER1_ENABLED  - Enable TIMER1 instance
    #define TIMER0_ENABLED 1
    #define TIMER1_ENABLED 1
    #define TIMER2_ENABLED 1
    #define TIMER3_ENABLED 1
    #define TIMER4_ENABLED 1
    
    
    // <e> TWI_ENABLED - nrf_drv_twi - TWI/TWIM peripheral driver
    //==========================================================
    #define TWI_ENABLED 1
    #if  TWI_ENABLED
    
    // <o> TWI_DEFAULT_CONFIG_FREQUENCY  - Frequency
    
    // <26738688=> 100k
    // <67108864=> 250k
    // <104857600=> 400k
    #define TWI_DEFAULT_CONFIG_FREQUENCY 104857600
    
    // <q> TWI_DEFAULT_CONFIG_CLR_BUS_INIT  - Enables bus clearing procedure during init
    #define TWI_DEFAULT_CONFIG_CLR_BUS_INIT 1
    
    // <e> TWI0_ENABLED - Enable TWI0 instance
    //==========================================================
    #define TWI0_ENABLED 1
    #if  TWI0_ENABLED
    // <q> TWI0_USE_EASY_DMA  - Use EasyDMA (if present)
    #define TWI0_USE_EASY_DMA 0
    #endif //TWI0_ENABLED
    // </e>
    #define TWIM_NRF52_ANOMALY_109_WORKAROUND_ENABLED 0
    #endif //TWI_ENABLED
    // </e>
    
    // <e> UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver
    //==========================================================
    #define UART_ENABLED 1
    #if  UART_ENABLED
    // <o> UART_DEFAULT_CONFIG_HWFC  - Hardware Flow Control
    
    // <0=> Disabled
    // <1=> Enabled
    #define UART_DEFAULT_CONFIG_HWFC 0
    
    // <o> UART_DEFAULT_CONFIG_PARITY  - Parity
    
    // <0=> Excluded
    // <14=> Included
    #define UART_DEFAULT_CONFIG_PARITY 0
    
    // <o> UART_DEFAULT_CONFIG_BAUDRATE  - Default Baudrate
    
    // <323584=> 1200 baud
    // <643072=> 2400 baud
    // <1290240=> 4800 baud
    // <2576384=> 9600 baud
    // <3862528=> 14400 baud
    // <5152768=> 19200 baud
    // <7716864=> 28800 baud
    // <10289152=> 38400 baud
    // <15400960=> 57600 baud
    // <20615168=> 76800 baud
    // <30801920=> 115200 baud
    // <61865984=> 230400 baud
    // <67108864=> 250000 baud
    // <121634816=> 460800 baud
    // <251658240=> 921600 baud
    // <268435456=> 57600 baud
    #define UART_DEFAULT_CONFIG_BAUDRATE 2576384
    
    // <o> UART_DEFAULT_CONFIG_IRQ_PRIORITY  - Interrupt priority
    
    
    // <i> Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice
    // <0=> 0 (highest)
    // <1=> 1
    // <2=> 2
    // <3=> 3
    // <4=> 4
    // <5=> 5
    // <6=> 6
    // <7=> 7
    #define UART_DEFAULT_CONFIG_IRQ_PRIORITY 7
    
    // <q> UART_EASY_DMA_SUPPORT  - Driver supporting EasyDMA
    #define UART_EASY_DMA_SUPPORT 1
    
    // <q> UART_LEGACY_SUPPORT  - Driver supporting Legacy mode
    #define UART_LEGACY_SUPPORT 0
    
    // <e> UART0_ENABLED - Enable UART0 instance
    //==========================================================
    #define UART0_ENABLED 1
    #if  UART0_ENABLED
    // <q> UART0_CONFIG_USE_EASY_DMA  - Default setting for using EasyDMA
    #define UART0_CONFIG_USE_EASY_DMA 1
    #endif //UART0_ENABLED
    // </e>
    #endif //UART_ENABLED
    // </e>
    
    
    // <h> nRF_Libraries
    
    //==========================================================
    #define APP_FIFO_ENABLED 1
    #define APP_UART_ENABLED 1
    #define APP_GPIOTE_ENABLED 1
    #define APP_SCHEDULER_ENABLED 1
    #define APP_TIMER_ENABLED 1
    #define APP_TIMER_CONFIG_USE_SCHEDULER 1
    #define APP_TIMER_KEEPS_RTC_ACTIVE 1  // Keep RTC1 active even when there are no timers (we need this for millis and micros)
    
    // <o> APP_TIMER_CONFIG_RTC_FREQUENCY  - Configure RTC prescaler.
    
    // <0=> 32768 Hz
    // <1=> 16384 Hz
    // <3=> 8192 Hz
    // <7=> 4096 Hz
    // <15=> 2048 Hz
    // <31=> 1024 Hz
    #define APP_TIMER_CONFIG_RTC_FREQUENCY 7
    
    #define NRF_TWI_MNGR_ENABLED 1
    #define BUTTON_ENABLED 0
    #define NRF_QUEUE_ENABLED 1
    #define NRF_SERIAL_ENABLED 0
    #define NRF_STRERROR_ENABLED 1

    My main.cpp to test this is:

    #include <libraries/hardfault/hardfault_genhf.h>
    #include <libraries/hardfault/hardfault.h>
    
    #include <VK_HAL.h>
    #include <libraries/timer/app_timer.h>
    
    
    const VK_HAL::HAL& hal = VK_HAL::get_HAL();
    APP_TIMER_DEF(test_hardfault_timer);
    
    extern "C" {
    
    void test_hardfault_timer_handler(void * p_context) {
    	NRF_LOG_INFO("Force a hardfault (undefined instruction)");
    	hardfault_genhf_undefined_instr();
    }
    
    }
    
    void setup() {
    	// Create a 5 second timer to generate a hardfault
    	APP_ERROR_CHECK(app_timer_create(&test_hardfault_timer, APP_TIMER_MODE_REPEATED, test_hardfault_timer_handler));
    	APP_ERROR_CHECK(app_timer_start(test_hardfault_timer, APP_TIMER_TICKS(5000), NULL));
    }
    
    
    void loop() {
    
    }
    
    VK_HAL_MAIN()  // Sets up a normal look with app_sched_execute() and nrf_pwr_mgmt_run

    My RTT Log is the following:

    ➜  ~ JLinkRTTClient
    ###RTT Client: ************************************************************
    ###RTT Client: *           SEGGER MICROCONTROLLER GmbH & Co KG            *
    ###RTT Client: *   Solutions for real time microcontroller applications   *
    ###RTT Client: ************************************************************
    ###RTT Client: *                                                          *
    ###RTT Client: *  (c) 2012 - 2016  SEGGER Microcontroller GmbH & Co KG    *
    ###RTT Client: *                                                          *
    ###RTT Client: *     www.segger.com     Support: [email protected]       *
    ###RTT Client: *                                                          *
    ###RTT Client: ************************************************************
    ###RTT Client: *                                                          *
    ###RTT Client: * SEGGER J-Link RTT Client   Compiled Dec 14 2017 18:33:57 *
    ###RTT Client: *                                                          *
    ###RTT Client: ************************************************************
    
    ###RTT Client: -----------------------------------------------
    ###RTT Client: Connecting to J-Link RTT Server via localhost:19021  Connected.
    SEGGER J-Link V6.22d - Real time terminal output
    J-Link OB-SAM3U128-V2-NordicSemi compiled Jul 24 2017 17:30:12 V1.0, SN=682228671
    Process: JLinkExe
    <info> BLE: BLE Stack Init
    <info> pwr_mgmt: Init
    <info> I2C: I2C Init
    <info> DRV_NCP1855: State:CHARGE DONE
    <info> DRV_KMX62: Init and detected
    <info> DRV_LSM6DSM: Init and detected
    <info> app: run()
    <info> pwr_mgmt: CPU Usage: 1%
    <info> pwr_mgmt: CPU Usage: 0%
    <info> pwr_mgmt: CPU Usage: 0%
    <info> pwr_mgmt: CPU Usage: 0%
    <info> pwr_mgmt: CPU Usage: 0%
    (Here the application freezes and no further information is provided)

  • Bringing HardFault_Handler() into my main.cpp makes it work as expected. I must be doing something wrong in how it gets linked from my SDK lib?

    main.cpp:

    #include <libraries/hardfault/hardfault_genhf.h>
    #include <libraries/hardfault/hardfault.h>
    
    #include <VK_HAL.h>
    #include <libraries/timer/app_timer.h>
    
    
    const VK_HAL::HAL& hal = VK_HAL::get_HAL();
    APP_TIMER_DEF(test_hardfault_timer);
    
    extern "C" {
    
    
    extern void HardFault_c_handler(uint32_t *);
    
    void HardFault_Handler(void) __attribute__(( naked ));
    
    void HardFault_Handler(void)
    {
    	__ASM volatile(
    	"   .syntax unified                        \n"
    
    			"   ldr   r0, =0xFFFFFFFD                  \n"
    			"   cmp   r0, lr                           \n"
    			"   bne   HardFault_Handler_ChooseMSP      \n"
    			/* Reading PSP into R0 */
    			"   mrs   r0, PSP                          \n"
    			"   b     HardFault_Handler_Continue       \n"
    			"HardFault_Handler_ChooseMSP:              \n"
    			/* Reading MSP into R0 */
    			"   mrs   r0, MSP                          \n"
    			/* -----------------------------------------------------------------
    			 * If we have selected MSP check if we may use stack safetly.
    			 * If not - reset the stack to the initial value. */
    			"   ldr   r1, =__StackTop                  \n"
    			"   ldr   r2, =__StackLimit                \n"
    
    			/* MSP is in the range of the stack area */
    			"   cmp   r0, r1                           \n"
    			"   bhi   HardFault_MoveSP                 \n"
    			"   cmp   r0, r2                           \n"
    			"   bhi   HardFault_Handler_Continue       \n"
    			/* ----------------------------------------------------------------- */
    			"HardFault_MoveSP:                         \n"
    			"   mov   SP, r1                           \n"
    			"   movs  r0, #0                           \n"
    
    			"HardFault_Handler_Continue:               \n"
    			"   ldr r3, =%0                            \n"
    			"   bx r3                                  \n"
    
    			"   .ltorg                                 \n"
    	: : "X"(HardFault_c_handler)
    	);
    }
    
    void test_hardfault_timer_handler(void * p_context) {
    	NRF_LOG_INFO("Force a hardfault (undefined instruction)");
    	hardfault_genhf_undefined_instr();
    }
    
    } // Extern C
    
    void setup() {
    	// Create a 5 second timer to generate a hardfault
    	APP_ERROR_CHECK(app_timer_create(&test_hardfault_timer, APP_TIMER_MODE_REPEATED, test_hardfault_timer_handler));
    	APP_ERROR_CHECK(app_timer_start(test_hardfault_timer, APP_TIMER_TICKS(5000), NULL));
    }
    
    
    void loop() {
    
    }
    
    VK_HAL_MAIN()  // Sets up a normal look with app_sched_execute() and nrf_pwr_mgmt_run()

    RTT:

    Process: JLinkExe
    <info> BLE: BLE Stack Init
    <info> pwr_mgmt: Init
    <info> I2C: I2C Init
    <info> DRV_NCP1855: State:CHARGE DONE
    <info> DRV_KMX62: Init and detected
    <info> DRV_LSM6DSM: Init and detected
    <info> app: run()
    <info> pwr_mgmt: CPU Usage: 1%
    <info> pwr_mgmt: CPU Usage: 0%
    <info> pwr_mgmt: CPU Usage: 0%
    <info> pwr_mgmt: CPU Usage: 0%
    <info> pwr_mgmt: CPU Usage: 0%
    <info> app: Force a hardfault (undefined instruction)
    <error> hardfault: HARD FAULT at 0x000232CA
    <error> hardfault:   R0:  0x0000000C  R1:  0x00000001  R2:  0x200023C8  R3:  0x00000000
    <error> hardfault:   R12: 0x00000000  LR:  0x00023FF7  PSR: 0x01000000
    <error> hardfault: Cause: The processor has attempted to execute an undefined instruction.

  •  

    I cannot spot anything that should provide issues debugging this library, based on your configuration and build files. Could you do a "make VERBOSE=1" just to see that the proper debug flags (optimization and debug level) are actually being passed to the compiler?

     

    Cheers,

    Håkon

  • ➜  build git:(master) ✗ make clean
    ➜  build git:(master) ✗ make flash_basicapp_vka1_s132_5.0.0 -j8 VERBOSE=1 | grep hardfault_implementation
    [ 39%] Building C object nrf5_sdk/14.2.0/CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/hardfault_implementation.c.obj
    cd /Users/todd/Projects/myproject/build/nrf5_sdk/14.2.0 && /usr/local/bin/arm-none-eabi-gcc -DBOARD_VKAB010001 -DCONFIG_GPIO_AS_PINRESET -DDCONFIG_NFCT_PINS_AS_GPIOS -DDEBUG -DDEBUG_NRF -DNRF52 -DNRF52832 -DNRF52832_XXAA -DNRF52_SERIES -DNRF_SD_BLE_API_VERSION=5 -DS132 -DSD_BLE_API_VERSION=5 -DSOFTDEVICE_PRESENT -I/Users/todd/Projects/myproject/config -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/device -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/boards -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/toolchain -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/toolchain/cmsis/include -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/softdevice/common -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/softdevice/s132/headers -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_advertising -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_dtm -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_racp -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ancs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ans_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_bas -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_bas_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_cscs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_cts_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_dfu -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_dis -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_gls -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hids -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hrs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hrs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hts -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ias -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ias_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_lbs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_lbs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_lls -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_nus -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_nus_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_rscs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_rscs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_tps -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/common -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/nrf_ble_gatt -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/nrf_ble_qwr -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/peer_manager -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/clock -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/common -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/delay -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/gpiote -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/hal -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/i2s -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/ppi -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/rtc -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/spi_master -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/timer -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/twi_master -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/uart -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/wdt -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/uart -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/atomic -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/atomic_fifo -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/balloc -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/bsp -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/button -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_log -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_log/src -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_memobj -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_section_vars -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/fds -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/fifo -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/fstorage -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/gpiote -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/hardfault -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/hardfault/nrf52/handler -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/mem_manager -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/mutex -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/pwr_mgmt -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/queue -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/scheduler -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/strerror -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/timer -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/twi_mngr -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/util -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/external/fprintf -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/external/segger_rtt  --std=gnu99 -Wall -Wno-attributes -Wno-format -ffunction-sections -fdata-sections -fno-strict-aliasing -fno-builtin --short-enums -Og -g3   -mcpu=cortex-m4 -mthumb -mabi=aapcs -mfloat-abi=hard -mfpu=fpv4-sp-d16 -std=gnu11 -o CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/hardfault_implementation.c.obj   -c /Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/hardfault/hardfault_implementation.c
    /usr/local/bin/arm-none-eabi-ar qc libNRF5_SDK_14.2.0_vka1.a  CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/boards/boards.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/toolchain/system_nrf52.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/ble_advertising/ble_advertising.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_advdata.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_conn_params.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_conn_state.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_srv_common.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/nrf_ble_gatt/nrf_ble_gatt.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/gatt_cache_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/gatts_cache_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/id_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_data_storage.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_database.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_id.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/pm_buffer.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/pm_mutex.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/security_dispatcher.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/security_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/ble_services/ble_nus/ble_nus.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/clock/nrf_drv_clock.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/common/nrf_drv_common.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/gpiote/nrf_drv_gpiote.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/i2s/nrf_drv_i2s.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/spi_master/nrf_drv_spi.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/twi_master/nrf_drv_twi.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/uart/nrf_drv_uart.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/ppi/nrf_drv_ppi.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/timer/nrf_drv_timer.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/atomic_fifo/nrf_atfifo.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/uart/app_uart_fifo.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/balloc/nrf_balloc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/bsp/bsp.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/bsp/bsp_btn_ble.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/bsp/bsp_nfc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/button/app_button.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/fds/fds.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/fifo/app_fifo.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/fstorage/nrf_fstorage.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/hardfault_implementation.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_memobj/nrf_memobj.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_backend_rtt.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_backend_serial.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_backend_uart.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_default_backends.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_frontend.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_str_formatter.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_section_vars/nrf_section_iter.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/pwr_mgmt/nrf_pwr_mgmt.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/queue/nrf_queue.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/scheduler/app_scheduler.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/spi_mngr/nrf_spi_mngr.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/strerror/nrf_strerror.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/timer/app_timer.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/twi_mngr/nrf_twi_mngr.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/app_error.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/app_error_weak.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/app_util_platform.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/nrf_assert.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/sdk_mapped_flags.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/softdevice/common/nrf_sdh.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/softdevice/common/nrf_sdh_ble.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/softdevice/common/nrf_sdh_soc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/fprintf/nrf_fprintf.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/fprintf/nrf_fprintf_format.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/segger_rtt/SEGGER_RTT.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/segger_rtt/SEGGER_RTT_printf.c.obj
    
    ➜  build git:(master) ✗ make clean
    ➜  build git:(master) ✗ make flash_basicapp_vka1_s132_5.0.0 -j8 VERBOSE=1 | grep hardfault_handler_gcc
    [ 40%] Building C object nrf5_sdk/14.2.0/CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c.obj
    cd /Users/todd/Projects/myproject/build/nrf5_sdk/14.2.0 && /usr/local/bin/arm-none-eabi-gcc -DBOARD_VKAB010001 -DCONFIG_GPIO_AS_PINRESET -DDCONFIG_NFCT_PINS_AS_GPIOS -DDEBUG -DDEBUG_NRF -DNRF52 -DNRF52832 -DNRF52832_XXAA -DNRF52_SERIES -DNRF_SD_BLE_API_VERSION=5 -DS132 -DSD_BLE_API_VERSION=5 -DSOFTDEVICE_PRESENT -I/Users/todd/Projects/myproject/config -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/device -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/boards -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/toolchain -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/toolchain/cmsis/include -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/softdevice/common -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/softdevice/s132/headers -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_advertising -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_dtm -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_racp -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ancs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ans_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_bas -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_bas_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_cscs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_cts_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_dfu -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_dis -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_gls -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hids -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hrs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hrs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hts -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ias -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ias_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_lbs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_lbs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_lls -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_nus -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_nus_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_rscs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_rscs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_tps -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/common -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/nrf_ble_gatt -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/nrf_ble_qwr -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/peer_manager -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/clock -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/common -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/delay -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/gpiote -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/hal -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/i2s -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/ppi -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/rtc -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/spi_master -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/timer -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/twi_master -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/uart -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/wdt -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/uart -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/atomic -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/atomic_fifo -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/balloc -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/bsp -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/button -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_log -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_log/src -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_memobj -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_section_vars -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/fds -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/fifo -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/fstorage -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/gpiote -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/hardfault -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/hardfault/nrf52/handler -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/mem_manager -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/mutex -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/pwr_mgmt -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/queue -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/scheduler -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/strerror -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/timer -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/twi_mngr -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/util -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/external/fprintf -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/external/segger_rtt  --std=gnu99 -Wall -Wno-attributes -Wno-format -ffunction-sections -fdata-sections -fno-strict-aliasing -fno-builtin --short-enums -Og -g3   -mcpu=cortex-m4 -mthumb -mabi=aapcs -mfloat-abi=hard -mfpu=fpv4-sp-d16 -std=gnu11 -o CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c.obj   -c /Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c
    /usr/local/bin/arm-none-eabi-ar qc libNRF5_SDK_14.2.0_vka1.a  CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/boards/boards.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/toolchain/system_nrf52.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/ble_advertising/ble_advertising.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_advdata.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_conn_params.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_conn_state.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_srv_common.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/nrf_ble_gatt/nrf_ble_gatt.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/gatt_cache_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/gatts_cache_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/id_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_data_storage.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_database.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_id.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/pm_buffer.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/pm_mutex.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/security_dispatcher.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/security_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/ble_services/ble_nus/ble_nus.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/clock/nrf_drv_clock.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/common/nrf_drv_common.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/gpiote/nrf_drv_gpiote.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/i2s/nrf_drv_i2s.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/spi_master/nrf_drv_spi.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/twi_master/nrf_drv_twi.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/uart/nrf_drv_uart.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/ppi/nrf_drv_ppi.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/timer/nrf_drv_timer.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/atomic_fifo/nrf_atfifo.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/uart/app_uart_fifo.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/balloc/nrf_balloc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/bsp/bsp.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/bsp/bsp_btn_ble.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/bsp/bsp_nfc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/button/app_button.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/fds/fds.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/fifo/app_fifo.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/fstorage/nrf_fstorage.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/hardfault_implementation.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_memobj/nrf_memobj.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_backend_rtt.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_backend_serial.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_backend_uart.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_default_backends.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_frontend.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_str_formatter.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_section_vars/nrf_section_iter.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/pwr_mgmt/nrf_pwr_mgmt.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/queue/nrf_queue.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/scheduler/app_scheduler.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/spi_mngr/nrf_spi_mngr.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/strerror/nrf_strerror.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/timer/app_timer.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/twi_mngr/nrf_twi_mngr.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/app_error.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/app_error_weak.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/app_util_platform.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/nrf_assert.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/sdk_mapped_flags.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/softdevice/common/nrf_sdh.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/softdevice/common/nrf_sdh_ble.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/softdevice/common/nrf_sdh_soc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/fprintf/nrf_fprintf.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/fprintf/nrf_fprintf_format.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/segger_rtt/SEGGER_RTT.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/segger_rtt/SEGGER_RTT_printf.c.obj

Reply
  • ➜  build git:(master) ✗ make clean
    ➜  build git:(master) ✗ make flash_basicapp_vka1_s132_5.0.0 -j8 VERBOSE=1 | grep hardfault_implementation
    [ 39%] Building C object nrf5_sdk/14.2.0/CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/hardfault_implementation.c.obj
    cd /Users/todd/Projects/myproject/build/nrf5_sdk/14.2.0 && /usr/local/bin/arm-none-eabi-gcc -DBOARD_VKAB010001 -DCONFIG_GPIO_AS_PINRESET -DDCONFIG_NFCT_PINS_AS_GPIOS -DDEBUG -DDEBUG_NRF -DNRF52 -DNRF52832 -DNRF52832_XXAA -DNRF52_SERIES -DNRF_SD_BLE_API_VERSION=5 -DS132 -DSD_BLE_API_VERSION=5 -DSOFTDEVICE_PRESENT -I/Users/todd/Projects/myproject/config -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/device -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/boards -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/toolchain -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/toolchain/cmsis/include -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/softdevice/common -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/softdevice/s132/headers -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_advertising -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_dtm -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_racp -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ancs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ans_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_bas -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_bas_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_cscs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_cts_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_dfu -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_dis -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_gls -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hids -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hrs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hrs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hts -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ias -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ias_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_lbs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_lbs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_lls -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_nus -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_nus_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_rscs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_rscs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_tps -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/common -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/nrf_ble_gatt -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/nrf_ble_qwr -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/peer_manager -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/clock -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/common -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/delay -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/gpiote -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/hal -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/i2s -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/ppi -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/rtc -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/spi_master -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/timer -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/twi_master -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/uart -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/wdt -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/uart -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/atomic -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/atomic_fifo -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/balloc -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/bsp -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/button -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_log -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_log/src -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_memobj -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_section_vars -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/fds -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/fifo -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/fstorage -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/gpiote -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/hardfault -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/hardfault/nrf52/handler -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/mem_manager -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/mutex -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/pwr_mgmt -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/queue -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/scheduler -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/strerror -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/timer -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/twi_mngr -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/util -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/external/fprintf -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/external/segger_rtt  --std=gnu99 -Wall -Wno-attributes -Wno-format -ffunction-sections -fdata-sections -fno-strict-aliasing -fno-builtin --short-enums -Og -g3   -mcpu=cortex-m4 -mthumb -mabi=aapcs -mfloat-abi=hard -mfpu=fpv4-sp-d16 -std=gnu11 -o CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/hardfault_implementation.c.obj   -c /Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/hardfault/hardfault_implementation.c
    /usr/local/bin/arm-none-eabi-ar qc libNRF5_SDK_14.2.0_vka1.a  CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/boards/boards.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/toolchain/system_nrf52.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/ble_advertising/ble_advertising.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_advdata.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_conn_params.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_conn_state.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_srv_common.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/nrf_ble_gatt/nrf_ble_gatt.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/gatt_cache_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/gatts_cache_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/id_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_data_storage.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_database.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_id.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/pm_buffer.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/pm_mutex.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/security_dispatcher.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/security_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/ble_services/ble_nus/ble_nus.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/clock/nrf_drv_clock.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/common/nrf_drv_common.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/gpiote/nrf_drv_gpiote.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/i2s/nrf_drv_i2s.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/spi_master/nrf_drv_spi.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/twi_master/nrf_drv_twi.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/uart/nrf_drv_uart.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/ppi/nrf_drv_ppi.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/timer/nrf_drv_timer.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/atomic_fifo/nrf_atfifo.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/uart/app_uart_fifo.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/balloc/nrf_balloc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/bsp/bsp.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/bsp/bsp_btn_ble.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/bsp/bsp_nfc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/button/app_button.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/fds/fds.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/fifo/app_fifo.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/fstorage/nrf_fstorage.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/hardfault_implementation.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_memobj/nrf_memobj.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_backend_rtt.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_backend_serial.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_backend_uart.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_default_backends.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_frontend.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_str_formatter.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_section_vars/nrf_section_iter.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/pwr_mgmt/nrf_pwr_mgmt.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/queue/nrf_queue.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/scheduler/app_scheduler.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/spi_mngr/nrf_spi_mngr.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/strerror/nrf_strerror.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/timer/app_timer.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/twi_mngr/nrf_twi_mngr.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/app_error.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/app_error_weak.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/app_util_platform.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/nrf_assert.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/sdk_mapped_flags.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/softdevice/common/nrf_sdh.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/softdevice/common/nrf_sdh_ble.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/softdevice/common/nrf_sdh_soc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/fprintf/nrf_fprintf.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/fprintf/nrf_fprintf_format.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/segger_rtt/SEGGER_RTT.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/segger_rtt/SEGGER_RTT_printf.c.obj
    
    ➜  build git:(master) ✗ make clean
    ➜  build git:(master) ✗ make flash_basicapp_vka1_s132_5.0.0 -j8 VERBOSE=1 | grep hardfault_handler_gcc
    [ 40%] Building C object nrf5_sdk/14.2.0/CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c.obj
    cd /Users/todd/Projects/myproject/build/nrf5_sdk/14.2.0 && /usr/local/bin/arm-none-eabi-gcc -DBOARD_VKAB010001 -DCONFIG_GPIO_AS_PINRESET -DDCONFIG_NFCT_PINS_AS_GPIOS -DDEBUG -DDEBUG_NRF -DNRF52 -DNRF52832 -DNRF52832_XXAA -DNRF52_SERIES -DNRF_SD_BLE_API_VERSION=5 -DS132 -DSD_BLE_API_VERSION=5 -DSOFTDEVICE_PRESENT -I/Users/todd/Projects/myproject/config -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/device -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/boards -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/toolchain -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/toolchain/cmsis/include -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/softdevice/common -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/softdevice/s132/headers -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_advertising -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_dtm -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_racp -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ancs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ans_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_bas -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_bas_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_cscs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_cts_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_dfu -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_dis -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_gls -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hids -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hrs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hrs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_hts -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ias -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_ias_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_lbs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_lbs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_lls -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_nus -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_nus_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_rscs -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_rscs_c -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/ble_services/ble_tps -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/common -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/nrf_ble_gatt -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/nrf_ble_qwr -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/ble/peer_manager -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/clock -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/common -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/delay -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/gpiote -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/hal -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/i2s -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/ppi -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/rtc -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/spi_master -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/timer -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/twi_master -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/uart -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/drivers_nrf/wdt -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/uart -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/atomic -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/atomic_fifo -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/balloc -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/bsp -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/button -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_log -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_log/src -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_memobj -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/experimental_section_vars -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/fds -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/fifo -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/fstorage -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/gpiote -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/hardfault -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/hardfault/nrf52/handler -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/mem_manager -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/mutex -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/pwr_mgmt -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/queue -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/scheduler -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/strerror -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/timer -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/twi_mngr -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/util -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/external/fprintf -I/Users/todd/Projects/myproject/nrf5_sdk/14.2.0/external/segger_rtt  --std=gnu99 -Wall -Wno-attributes -Wno-format -ffunction-sections -fdata-sections -fno-strict-aliasing -fno-builtin --short-enums -Og -g3   -mcpu=cortex-m4 -mthumb -mabi=aapcs -mfloat-abi=hard -mfpu=fpv4-sp-d16 -std=gnu11 -o CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c.obj   -c /Users/todd/Projects/myproject/nrf5_sdk/14.2.0/components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c
    /usr/local/bin/arm-none-eabi-ar qc libNRF5_SDK_14.2.0_vka1.a  CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/boards/boards.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/toolchain/system_nrf52.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/ble_advertising/ble_advertising.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_advdata.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_conn_params.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_conn_state.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/common/ble_srv_common.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/nrf_ble_gatt/nrf_ble_gatt.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/gatt_cache_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/gatts_cache_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/id_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_data_storage.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_database.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_id.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/peer_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/pm_buffer.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/pm_mutex.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/security_dispatcher.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/peer_manager/security_manager.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/ble/ble_services/ble_nus/ble_nus.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/clock/nrf_drv_clock.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/common/nrf_drv_common.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/gpiote/nrf_drv_gpiote.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/i2s/nrf_drv_i2s.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/spi_master/nrf_drv_spi.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/twi_master/nrf_drv_twi.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/uart/nrf_drv_uart.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/ppi/nrf_drv_ppi.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/drivers_nrf/timer/nrf_drv_timer.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/atomic_fifo/nrf_atfifo.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/uart/app_uart_fifo.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/balloc/nrf_balloc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/bsp/bsp.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/bsp/bsp_btn_ble.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/bsp/bsp_nfc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/button/app_button.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/fds/fds.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/fifo/app_fifo.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/fstorage/nrf_fstorage.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/hardfault_implementation.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_memobj/nrf_memobj.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_backend_rtt.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_backend_serial.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_backend_uart.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_default_backends.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_frontend.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_log/src/nrf_log_str_formatter.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/experimental_section_vars/nrf_section_iter.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/pwr_mgmt/nrf_pwr_mgmt.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/queue/nrf_queue.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/scheduler/app_scheduler.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/spi_mngr/nrf_spi_mngr.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/strerror/nrf_strerror.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/timer/app_timer.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/twi_mngr/nrf_twi_mngr.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/app_error.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/app_error_weak.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/app_util_platform.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/nrf_assert.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/libraries/util/sdk_mapped_flags.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/softdevice/common/nrf_sdh.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/softdevice/common/nrf_sdh_ble.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/components/softdevice/common/nrf_sdh_soc.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/fprintf/nrf_fprintf.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/fprintf/nrf_fprintf_format.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/segger_rtt/SEGGER_RTT.c.obj CMakeFiles/NRF5_SDK_14.2.0_vka1.dir/external/segger_rtt/SEGGER_RTT_printf.c.obj

Children
  • Everything looks normal. I see that you're creating a full library, then most likely linking a .elf based on the library. This is the only step I can see that differs.

    Does the .elf file list this as a function at all?

    You can check using objdump:

    $ arm-none-eabi-objdump <my.elf> -t | grep HardFault

    This should list them as functions:
    00025fde l .text 00000000 HardFault_Handler_Continue
    00025fd8 l .text 00000000 HardFault_MoveSP
    00025fbc g F .text 00000040 HardFault_Handler
    00025eac g F .text 00000110 HardFault_c_handler
    00025e88 w F .text 00000024 HardFault_process

    If that is not present as functions in your .elf file, I suspect there's some forced inlining happening under-the-hood, or some stripping of debug information due to the .o -> .a -> .elf. Here's a thread on stackoverflow which shows issues with the "naked" keyword when using a static library: https://stackoverflow.com/questions/30355013/linking-with-static-library-not-equivalent-to-linking-with-its-objects

     

    If the .elf does not have the above mentioned functions, could you try skipping the "create library" part of your build?

     

    Cheers,

    Håkon

  • I think your suspicion is correct:

    arm-none-eabi-objdump basicapp_vka1_s132_5.0.0.elf -t | grep HardFault
    00023822  w    F .text	00000002 HardFault_Handler

    vs

    arm-none-eabi-objdump libNRF5_SDK_14.2.0_vka1.a -t | grep HardFault
    00000000 l    d  .text.HardFault_process	00000000 .text.HardFault_process
    00000000 l    d  .text.HardFault_c_handler	00000000 .text.HardFault_c_handler
    00000000 l    d  .rodata.HardFault_c_handler.str1.4	00000000 .rodata.HardFault_c_handler.str1.4
    00000000  w    F .text.HardFault_process	00000024 HardFault_process
    00000000 g     F .text.HardFault_c_handler	00000118 HardFault_c_handler
    00000004       O *COM*	00000004 HardFault_p_stack
    00000000 l    d  .text.HardFault_Handler	00000000 .text.HardFault_Handler
    00000022 l       .text.HardFault_Handler	00000000 HardFault_Handler_Continue
    0000001c l       .text.HardFault_Handler	00000000 HardFault_MoveSP
    00000000 g     F .text.HardFault_Handler	00000040 HardFault_Handler
    00000000         *UND*	00000000 HardFault_c_handler

    I'll work on doing it without the library.

  • Including the SDK instead of building it as a library works. 

Related