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

Segmentation fault after enabling BLE stack

I have my system working with softdevice compiled in but not enabled. System communicates with external chip using SPIM peripheral, everything is working fine until I enable the softdevice.

As soon as I issue

    ret_code_t err_code;
    err_code = nrf_sdh_enable_request();

the first spim_xfer ends with segmentation fault:

#0  0x000257ae in ?? ()
#1  <signal handler called>
#2  nrf_spim_event_clear (spim_event=NRF_SPIM_EVENT_END, p_reg=<optimized out>) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/hal/nrf_spim.h:517
#3  spim_xfer (flags=0, p_xfer_desc=0x2003ff9c, p_cb=0x20004220 <m_cb+44>, p_spim=<optimized out>) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:501
#4  nrfx_spim_xfer (p_instance=<optimized out>, p_xfer_desc=0x2003ff9c, flags=0) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:607
#5  0x0000000e in ?? ()
#6  0x000373b0 in _fini ()

I am sure I am missing something simple here, but I can't remember what. Any tips?

Parents
  • Hi.

    Which SDK and SoftDevice do you use?

    Have you tried to debug the project and looked at what happend when you enabled the SoftDevice?

    Best regards,

    Andreas

  • I am using s140. I have tried single stepping thru code, the problem definitely is due to spim_xfer, but I could not pinpoint the exact line that throws the Segfault. If I step thru SPIM functions I can step thru all of them without error, and the segfault happens while doing nrfx_spim_uninit(&spim), but if I run it without debugging spim_xfer never returns.

    Below is my debugging session:

    Breakpoint 1, main () at .//main.c:179
    179        ads1293_init();
    (gdb) s
    ads1293_init () at .//ads1293.c:284
    284        power_init();
    (gdb) n
    285        power_on();
    (gdb) n
    283    void ads1293_init() {
    (gdb) n
    284        power_init();
    (gdb) n
    286        delay(1);
    (gdb) n
    285        power_on();
    (gdb) n
    289        spi_init();
    (gdb) n
    286        delay(1);
    (gdb) n
    287        clock_pin_init(ADS1293_CLK_IN_PIN);
    (gdb) n
    289        spi_init();
    (gdb) n
    290        ads1293_write_register(CONFIG, 2);
    (gdb) s
    ads1293_write_register (value=2 '\002', reg=CONFIG) at .//ads1293.c:299
    299        nrfx_spim_xfer_desc_t xfer = NRFX_SPIM_SINGLE_XFER(m_tx_buf, 2, m_rx_buf, 2);
    (gdb) n
    297        m_tx_buf[0] = COMMAND_WRITE & reg;
    (gdb) n
    299        nrfx_spim_xfer_desc_t xfer = NRFX_SPIM_SINGLE_XFER(m_tx_buf, 2, m_rx_buf, 2);
    (gdb) n
    297        m_tx_buf[0] = COMMAND_WRITE & reg;
    (gdb) n
    300        APP_ERROR_CHECK(nrfx_spim_xfer(&spim, &xfer, 0));
    (gdb) s
    298        m_tx_buf[1] = value;
    (gdb) n
    300        APP_ERROR_CHECK(nrfx_spim_xfer(&spim, &xfer, 0));
    (gdb) n
    298        m_tx_buf[1] = value;
    (gdb) n
    297        m_tx_buf[0] = COMMAND_WRITE & reg;
    (gdb) n
    300        APP_ERROR_CHECK(nrfx_spim_xfer(&spim, &xfer, 0));
    (gdb) s
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:561
    561        spim_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx];
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    560    {
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    560    {
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    560    {
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    581            if (p_cb->handler && !(flags & (NRFX_SPIM_FLAG_REPEATED_XFER |
    (gdb) n
    588        p_cb->evt.xfer_desc = *p_xfer_desc;
    (gdb) n
    590        if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    588        p_cb->evt.xfer_desc = *p_xfer_desc;
    (gdb) n
    590        if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    588        p_cb->evt.xfer_desc = *p_xfer_desc;
    (gdb) n
    590        if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    593            if (!p_cb->use_hw_ss)
    (gdb) n
    596                if (p_cb->ss_active_high)
    (gdb) n
    602                    nrf_gpio_pin_clear(p_cb->ss_pin);
    (gdb) n
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) s
    spim_xfer (flags=0, p_xfer_desc=0x2003ffac, p_cb=0x20003b24 <m_cb+44>, p_spim=0x4002f000) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:475
    475        if ((p_xfer_desc->p_tx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_tx_buffer)) ||
    (gdb) n
    476            (p_xfer_desc->p_rx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_rx_buffer)))
    (gdb) n
    475        if ((p_xfer_desc->p_tx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_tx_buffer)) ||
    (gdb) n
    476            (p_xfer_desc->p_rx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_rx_buffer)))
    (gdb) n
    487        p_cb->tx_length = 0;
    (gdb) n
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:607
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) s
    spim_xfer (flags=0, p_xfer_desc=0x2003ffac, p_cb=0x20003b24 <m_cb+44>, p_spim=<optimized out>) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:488
    488        p_cb->rx_length = 0;
    (gdb) n
    491        nrf_spim_tx_buffer_set(p_spim, p_xfer_desc->p_tx_buffer, p_xfer_desc->tx_length);
    (gdb) n
    492        nrf_spim_rx_buffer_set(p_spim, p_xfer_desc->p_rx_buffer, p_xfer_desc->rx_length);
    (gdb) n
    495        if (p_spim == NRF_SPIM3)
    (gdb) n
    492        nrf_spim_rx_buffer_set(p_spim, p_xfer_desc->p_rx_buffer, p_xfer_desc->rx_length);
    (gdb) n
    495        if (p_spim == NRF_SPIM3)
    (gdb) n
    492        nrf_spim_rx_buffer_set(p_spim, p_xfer_desc->p_rx_buffer, p_xfer_desc->rx_length);
    (gdb) n
    495        if (p_spim == NRF_SPIM3)
    (gdb) n
    497            anomaly_198_enable(p_xfer_desc->p_tx_buffer, p_xfer_desc->tx_length);
    (gdb) n
    501        nrf_spim_event_clear(p_spim, NRF_SPIM_EVENT_END);
    (gdb) n
    503        spim_list_enable_handle(p_spim, flags);
    (gdb) n
    505        if (!(flags & NRFX_SPIM_FLAG_HOLD_XFER))
    (gdb) n
    507            nrf_spim_task_trigger(p_spim, NRF_SPIM_TASK_START);
    (gdb) n
    521        if (!p_cb->handler)
    (gdb) n
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:607
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) s
    spim_xfer (flags=0, p_xfer_desc=0x2003ffac, p_cb=0x20003b24 <m_cb+44>, p_spim=<optimized out>) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:607
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) s
    nrf_spim_event_check (spim_event=NRF_SPIM_EVENT_END, p_reg=<optimized out>) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/hal/nrf_spim.h:525
    525        return (bool)*(volatile uint32_t *)((uint8_t *)p_reg + (uint32_t)spim_event);
    (gdb) s
    spim_xfer (flags=0, p_xfer_desc=0x2003ffac, p_cb=0x20003b24 <m_cb+44>, p_spim=<optimized out>) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:523
    523            while (!nrf_spim_event_check(p_spim, NRF_SPIM_EVENT_END)){}
    (gdb) n
    526            if (p_spim == NRF_SPIM3)
    (gdb) n
    528                anomaly_198_disable();
    (gdb) n
    531            if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    534                if (!p_cb->use_hw_ss)
    (gdb) n
    537                    if (p_cb->ss_active_high)
    (gdb) n
    543                        nrf_gpio_pin_set(p_cb->ss_pin);
    (gdb) n
    554        return err_code;
    (gdb) n
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:608
    608    }
    (gdb) s
    ads1293_init () at .//ads1293.c:293
    293        spi_uninit();
    (gdb) s
    spi_uninit () at .//ads1293.c:78
    78        nrfx_spim_uninit(&spim);
    (gdb) s
    
    Program received signal SIGSEGV, Segmentation fault.
    0x000257ae in ?? ()
    (gdb) r
    Starting program: /home/miceuz/Xaltura/zive/Firmware/zive1/_build/nrf52840_xxaa.out
    
    Breakpoint 1, main () at .//main.c:179
    179        ads1293_init();
    (gdb) s
    ads1293_init () at .//ads1293.c:284
    284        power_init();
    (gdb) n
    285        power_on();
    (gdb) n
    283    void ads1293_init() {
    (gdb) n
    284        power_init();
    (gdb) n
    286        delay(1);
    (gdb) n
    285        power_on();
    (gdb) n
    289        spi_init();
    (gdb) n
    286        delay(1);
    (gdb) n
    287        clock_pin_init(ADS1293_CLK_IN_PIN);
    (gdb) n
    289        spi_init();
    (gdb) n
    290        ads1293_write_register(CONFIG, 2);
    (gdb) s
    ads1293_write_register (value=2 '\002', reg=CONFIG) at .//ads1293.c:299
    299        nrfx_spim_xfer_desc_t xfer = NRFX_SPIM_SINGLE_XFER(m_tx_buf, 2, m_rx_buf, 2);
    (gdb) n
    297        m_tx_buf[0] = COMMAND_WRITE & reg;
    (gdb) n
    299        nrfx_spim_xfer_desc_t xfer = NRFX_SPIM_SINGLE_XFER(m_tx_buf, 2, m_rx_buf, 2);
    (gdb) n
    297        m_tx_buf[0] = COMMAND_WRITE & reg;
    (gdb) n
    300        APP_ERROR_CHECK(nrfx_spim_xfer(&spim, &xfer, 0));
    (gdb) n
    298        m_tx_buf[1] = value;
    (gdb) n
    300        APP_ERROR_CHECK(nrfx_spim_xfer(&spim, &xfer, 0));
    (gdb) n
    298        m_tx_buf[1] = value;
    (gdb) n
    297        m_tx_buf[0] = COMMAND_WRITE & reg;
    (gdb) n
    300        APP_ERROR_CHECK(nrfx_spim_xfer(&spim, &xfer, 0));
    (gdb) s
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:561
    561        spim_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx];
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    560    {
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    560    {
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    560    {
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    581            if (p_cb->handler && !(flags & (NRFX_SPIM_FLAG_REPEATED_XFER |
    (gdb) n
    588        p_cb->evt.xfer_desc = *p_xfer_desc;
    (gdb) n
    590        if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    588        p_cb->evt.xfer_desc = *p_xfer_desc;
    (gdb) n
    590        if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    588        p_cb->evt.xfer_desc = *p_xfer_desc;
    (gdb) n
    590        if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    593            if (!p_cb->use_hw_ss)
    (gdb) n
    596                if (p_cb->ss_active_high)
    (gdb) n
    602                    nrf_gpio_pin_clear(p_cb->ss_pin);
    (gdb) n
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) s
    spim_xfer (flags=0, p_xfer_desc=0x2003ffac, p_cb=0x20003b24 <m_cb+44>, p_spim=0x4002f000) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:475
    475        if ((p_xfer_desc->p_tx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_tx_buffer)) ||
    (gdb) n
    476            (p_xfer_desc->p_rx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_rx_buffer)))
    (gdb) n
    475        if ((p_xfer_desc->p_tx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_tx_buffer)) ||
    (gdb) n
    476            (p_xfer_desc->p_rx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_rx_buffer)))
    (gdb) n
    487        p_cb->tx_length = 0;
    (gdb) n
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:607
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) s
    spim_xfer (flags=0, p_xfer_desc=0x2003ffac, p_cb=0x20003b24 <m_cb+44>, p_spim=<optimized out>) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:488
    488        p_cb->rx_length = 0;
    (gdb) n
    491        nrf_spim_tx_buffer_set(p_spim, p_xfer_desc->p_tx_buffer, p_xfer_desc->tx_length);
    (gdb) n
    492        nrf_spim_rx_buffer_set(p_spim, p_xfer_desc->p_rx_buffer, p_xfer_desc->rx_length);
    (gdb) n
    495        if (p_spim == NRF_SPIM3)
    (gdb) n
    492        nrf_spim_rx_buffer_set(p_spim, p_xfer_desc->p_rx_buffer, p_xfer_desc->rx_length);
    (gdb) n
    495        if (p_spim == NRF_SPIM3)
    (gdb) n
    492        nrf_spim_rx_buffer_set(p_spim, p_xfer_desc->p_rx_buffer, p_xfer_desc->rx_length);
    (gdb) n
    495        if (p_spim == NRF_SPIM3)
    (gdb) n
    497            anomaly_198_enable(p_xfer_desc->p_tx_buffer, p_xfer_desc->tx_length);
    (gdb) n
    501        nrf_spim_event_clear(p_spim, NRF_SPIM_EVENT_END);
    (gdb) n
    503        spim_list_enable_handle(p_spim, flags);
    (gdb) n
    505        if (!(flags & NRFX_SPIM_FLAG_HOLD_XFER))
    (gdb) n
    507            nrf_spim_task_trigger(p_spim, NRF_SPIM_TASK_START);
    (gdb) n
    521        if (!p_cb->handler)
    (gdb) n
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:607
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) n
    608    }
    (gdb) n
    ads1293_init () at .//ads1293.c:293
    293        spi_uninit();
    (gdb) s
    spi_uninit () at .//ads1293.c:78
    78        nrfx_spim_uninit(&spim);
    (gdb) s
    
    Program received signal SIGSEGV, Segmentation fault.
    0x000257ae in ?? ()

Reply
  • I am using s140. I have tried single stepping thru code, the problem definitely is due to spim_xfer, but I could not pinpoint the exact line that throws the Segfault. If I step thru SPIM functions I can step thru all of them without error, and the segfault happens while doing nrfx_spim_uninit(&spim), but if I run it without debugging spim_xfer never returns.

    Below is my debugging session:

    Breakpoint 1, main () at .//main.c:179
    179        ads1293_init();
    (gdb) s
    ads1293_init () at .//ads1293.c:284
    284        power_init();
    (gdb) n
    285        power_on();
    (gdb) n
    283    void ads1293_init() {
    (gdb) n
    284        power_init();
    (gdb) n
    286        delay(1);
    (gdb) n
    285        power_on();
    (gdb) n
    289        spi_init();
    (gdb) n
    286        delay(1);
    (gdb) n
    287        clock_pin_init(ADS1293_CLK_IN_PIN);
    (gdb) n
    289        spi_init();
    (gdb) n
    290        ads1293_write_register(CONFIG, 2);
    (gdb) s
    ads1293_write_register (value=2 '\002', reg=CONFIG) at .//ads1293.c:299
    299        nrfx_spim_xfer_desc_t xfer = NRFX_SPIM_SINGLE_XFER(m_tx_buf, 2, m_rx_buf, 2);
    (gdb) n
    297        m_tx_buf[0] = COMMAND_WRITE & reg;
    (gdb) n
    299        nrfx_spim_xfer_desc_t xfer = NRFX_SPIM_SINGLE_XFER(m_tx_buf, 2, m_rx_buf, 2);
    (gdb) n
    297        m_tx_buf[0] = COMMAND_WRITE & reg;
    (gdb) n
    300        APP_ERROR_CHECK(nrfx_spim_xfer(&spim, &xfer, 0));
    (gdb) s
    298        m_tx_buf[1] = value;
    (gdb) n
    300        APP_ERROR_CHECK(nrfx_spim_xfer(&spim, &xfer, 0));
    (gdb) n
    298        m_tx_buf[1] = value;
    (gdb) n
    297        m_tx_buf[0] = COMMAND_WRITE & reg;
    (gdb) n
    300        APP_ERROR_CHECK(nrfx_spim_xfer(&spim, &xfer, 0));
    (gdb) s
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:561
    561        spim_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx];
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    560    {
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    560    {
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    560    {
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    581            if (p_cb->handler && !(flags & (NRFX_SPIM_FLAG_REPEATED_XFER |
    (gdb) n
    588        p_cb->evt.xfer_desc = *p_xfer_desc;
    (gdb) n
    590        if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    588        p_cb->evt.xfer_desc = *p_xfer_desc;
    (gdb) n
    590        if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    588        p_cb->evt.xfer_desc = *p_xfer_desc;
    (gdb) n
    590        if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    593            if (!p_cb->use_hw_ss)
    (gdb) n
    596                if (p_cb->ss_active_high)
    (gdb) n
    602                    nrf_gpio_pin_clear(p_cb->ss_pin);
    (gdb) n
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) s
    spim_xfer (flags=0, p_xfer_desc=0x2003ffac, p_cb=0x20003b24 <m_cb+44>, p_spim=0x4002f000) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:475
    475        if ((p_xfer_desc->p_tx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_tx_buffer)) ||
    (gdb) n
    476            (p_xfer_desc->p_rx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_rx_buffer)))
    (gdb) n
    475        if ((p_xfer_desc->p_tx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_tx_buffer)) ||
    (gdb) n
    476            (p_xfer_desc->p_rx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_rx_buffer)))
    (gdb) n
    487        p_cb->tx_length = 0;
    (gdb) n
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:607
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) s
    spim_xfer (flags=0, p_xfer_desc=0x2003ffac, p_cb=0x20003b24 <m_cb+44>, p_spim=<optimized out>) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:488
    488        p_cb->rx_length = 0;
    (gdb) n
    491        nrf_spim_tx_buffer_set(p_spim, p_xfer_desc->p_tx_buffer, p_xfer_desc->tx_length);
    (gdb) n
    492        nrf_spim_rx_buffer_set(p_spim, p_xfer_desc->p_rx_buffer, p_xfer_desc->rx_length);
    (gdb) n
    495        if (p_spim == NRF_SPIM3)
    (gdb) n
    492        nrf_spim_rx_buffer_set(p_spim, p_xfer_desc->p_rx_buffer, p_xfer_desc->rx_length);
    (gdb) n
    495        if (p_spim == NRF_SPIM3)
    (gdb) n
    492        nrf_spim_rx_buffer_set(p_spim, p_xfer_desc->p_rx_buffer, p_xfer_desc->rx_length);
    (gdb) n
    495        if (p_spim == NRF_SPIM3)
    (gdb) n
    497            anomaly_198_enable(p_xfer_desc->p_tx_buffer, p_xfer_desc->tx_length);
    (gdb) n
    501        nrf_spim_event_clear(p_spim, NRF_SPIM_EVENT_END);
    (gdb) n
    503        spim_list_enable_handle(p_spim, flags);
    (gdb) n
    505        if (!(flags & NRFX_SPIM_FLAG_HOLD_XFER))
    (gdb) n
    507            nrf_spim_task_trigger(p_spim, NRF_SPIM_TASK_START);
    (gdb) n
    521        if (!p_cb->handler)
    (gdb) n
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:607
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) s
    spim_xfer (flags=0, p_xfer_desc=0x2003ffac, p_cb=0x20003b24 <m_cb+44>, p_spim=<optimized out>) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:607
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) s
    nrf_spim_event_check (spim_event=NRF_SPIM_EVENT_END, p_reg=<optimized out>) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/hal/nrf_spim.h:525
    525        return (bool)*(volatile uint32_t *)((uint8_t *)p_reg + (uint32_t)spim_event);
    (gdb) s
    spim_xfer (flags=0, p_xfer_desc=0x2003ffac, p_cb=0x20003b24 <m_cb+44>, p_spim=<optimized out>) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:523
    523            while (!nrf_spim_event_check(p_spim, NRF_SPIM_EVENT_END)){}
    (gdb) n
    526            if (p_spim == NRF_SPIM3)
    (gdb) n
    528                anomaly_198_disable();
    (gdb) n
    531            if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    534                if (!p_cb->use_hw_ss)
    (gdb) n
    537                    if (p_cb->ss_active_high)
    (gdb) n
    543                        nrf_gpio_pin_set(p_cb->ss_pin);
    (gdb) n
    554        return err_code;
    (gdb) n
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:608
    608    }
    (gdb) s
    ads1293_init () at .//ads1293.c:293
    293        spi_uninit();
    (gdb) s
    spi_uninit () at .//ads1293.c:78
    78        nrfx_spim_uninit(&spim);
    (gdb) s
    
    Program received signal SIGSEGV, Segmentation fault.
    0x000257ae in ?? ()
    (gdb) r
    Starting program: /home/miceuz/Xaltura/zive/Firmware/zive1/_build/nrf52840_xxaa.out
    
    Breakpoint 1, main () at .//main.c:179
    179        ads1293_init();
    (gdb) s
    ads1293_init () at .//ads1293.c:284
    284        power_init();
    (gdb) n
    285        power_on();
    (gdb) n
    283    void ads1293_init() {
    (gdb) n
    284        power_init();
    (gdb) n
    286        delay(1);
    (gdb) n
    285        power_on();
    (gdb) n
    289        spi_init();
    (gdb) n
    286        delay(1);
    (gdb) n
    287        clock_pin_init(ADS1293_CLK_IN_PIN);
    (gdb) n
    289        spi_init();
    (gdb) n
    290        ads1293_write_register(CONFIG, 2);
    (gdb) s
    ads1293_write_register (value=2 '\002', reg=CONFIG) at .//ads1293.c:299
    299        nrfx_spim_xfer_desc_t xfer = NRFX_SPIM_SINGLE_XFER(m_tx_buf, 2, m_rx_buf, 2);
    (gdb) n
    297        m_tx_buf[0] = COMMAND_WRITE & reg;
    (gdb) n
    299        nrfx_spim_xfer_desc_t xfer = NRFX_SPIM_SINGLE_XFER(m_tx_buf, 2, m_rx_buf, 2);
    (gdb) n
    297        m_tx_buf[0] = COMMAND_WRITE & reg;
    (gdb) n
    300        APP_ERROR_CHECK(nrfx_spim_xfer(&spim, &xfer, 0));
    (gdb) n
    298        m_tx_buf[1] = value;
    (gdb) n
    300        APP_ERROR_CHECK(nrfx_spim_xfer(&spim, &xfer, 0));
    (gdb) n
    298        m_tx_buf[1] = value;
    (gdb) n
    297        m_tx_buf[0] = COMMAND_WRITE & reg;
    (gdb) n
    300        APP_ERROR_CHECK(nrfx_spim_xfer(&spim, &xfer, 0));
    (gdb) s
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:561
    561        spim_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx];
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    560    {
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    560    {
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    560    {
    (gdb) n
    571        if (p_cb->transfer_in_progress)
    (gdb) n
    581            if (p_cb->handler && !(flags & (NRFX_SPIM_FLAG_REPEATED_XFER |
    (gdb) n
    588        p_cb->evt.xfer_desc = *p_xfer_desc;
    (gdb) n
    590        if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    588        p_cb->evt.xfer_desc = *p_xfer_desc;
    (gdb) n
    590        if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    588        p_cb->evt.xfer_desc = *p_xfer_desc;
    (gdb) n
    590        if (p_cb->ss_pin != NRFX_SPIM_PIN_NOT_USED)
    (gdb) n
    593            if (!p_cb->use_hw_ss)
    (gdb) n
    596                if (p_cb->ss_active_high)
    (gdb) n
    602                    nrf_gpio_pin_clear(p_cb->ss_pin);
    (gdb) n
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) s
    spim_xfer (flags=0, p_xfer_desc=0x2003ffac, p_cb=0x20003b24 <m_cb+44>, p_spim=0x4002f000) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:475
    475        if ((p_xfer_desc->p_tx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_tx_buffer)) ||
    (gdb) n
    476            (p_xfer_desc->p_rx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_rx_buffer)))
    (gdb) n
    475        if ((p_xfer_desc->p_tx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_tx_buffer)) ||
    (gdb) n
    476            (p_xfer_desc->p_rx_buffer != NULL && !nrfx_is_in_ram(p_xfer_desc->p_rx_buffer)))
    (gdb) n
    487        p_cb->tx_length = 0;
    (gdb) n
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:607
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) s
    spim_xfer (flags=0, p_xfer_desc=0x2003ffac, p_cb=0x20003b24 <m_cb+44>, p_spim=<optimized out>) at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:488
    488        p_cb->rx_length = 0;
    (gdb) n
    491        nrf_spim_tx_buffer_set(p_spim, p_xfer_desc->p_tx_buffer, p_xfer_desc->tx_length);
    (gdb) n
    492        nrf_spim_rx_buffer_set(p_spim, p_xfer_desc->p_rx_buffer, p_xfer_desc->rx_length);
    (gdb) n
    495        if (p_spim == NRF_SPIM3)
    (gdb) n
    492        nrf_spim_rx_buffer_set(p_spim, p_xfer_desc->p_rx_buffer, p_xfer_desc->rx_length);
    (gdb) n
    495        if (p_spim == NRF_SPIM3)
    (gdb) n
    492        nrf_spim_rx_buffer_set(p_spim, p_xfer_desc->p_rx_buffer, p_xfer_desc->rx_length);
    (gdb) n
    495        if (p_spim == NRF_SPIM3)
    (gdb) n
    497            anomaly_198_enable(p_xfer_desc->p_tx_buffer, p_xfer_desc->tx_length);
    (gdb) n
    501        nrf_spim_event_clear(p_spim, NRF_SPIM_EVENT_END);
    (gdb) n
    503        spim_list_enable_handle(p_spim, flags);
    (gdb) n
    505        if (!(flags & NRFX_SPIM_FLAG_HOLD_XFER))
    (gdb) n
    507            nrf_spim_task_trigger(p_spim, NRF_SPIM_TASK_START);
    (gdb) n
    521        if (!p_cb->handler)
    (gdb) n
    nrfx_spim_xfer (p_instance=p_instance@entry=0x33148 <spim>, p_xfer_desc=p_xfer_desc@entry=0x2003ffac, flags=flags@entry=0)
        at /home/miceuz/nrf/nRF5_SDK/modules/nrfx/drivers/src/nrfx_spim.c:607
    607        return spim_xfer(p_instance->p_reg, p_cb,  p_xfer_desc, flags);
    (gdb) n
    608    }
    (gdb) n
    ads1293_init () at .//ads1293.c:293
    293        spi_uninit();
    (gdb) s
    spi_uninit () at .//ads1293.c:78
    78        nrfx_spim_uninit(&spim);
    (gdb) s
    
    Program received signal SIGSEGV, Segmentation fault.
    0x000257ae in ?? ()

Children
Related