This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

"twi + softdevice" not working !!! makefile build fails

hello,

my makefile use to work before i add the twi nrf_drv_twi.c file and included the directory INC_PATHS += -I$(abspath ../../../../../../components/drivers_nrf/nrf_soc_nosd)

i get the error below when building at app_util_platform.c:

 app_util_platform.c: In function 'app_util_critical_region_enter':
/Users/brookgebremedhin/nordicSDK11/components/libraries/util/app_util_platform.c:36:3: error: implicit declaration of function 'sd_nvic_critical_region_enter' [-Werror=implicit-function-declaration]
   (void)sd_nvic_critical_region_enter(p_nested);
   ^
/Users/brookgebremedhin/nordicSDK11/components/libraries/util/app_util_platform.c: In function 'app_util_critical_region_exit':
/Users/brookgebremedhin/nordicSDK11/components/libraries/util/app_util_platform.c:49:3: error: implicit declaration of function 'sd_nvic_critical_region_exit' [-Werror=implicit-function-declaration]

if i tell the makefile that i am not using the soft device then it can build. cam anyone show me a working makefile that uses twi and soft device together ?

my makefile is attached below

thanks

Makefile

  • Do not add the directory ../../../../../../components/drivers_nrf/nrf_soc_nosd to your include path if you are using the SoftDevice. That directory is only for projects that don't use the SoftDevice.

    Instead, add the directory ../../../../../../components/softdevice/s130/headers to your include path.

  • @paolod , thanks

    after i remove that now i have another error now

        nrf_drv_twi.c:38:6: error: #error "Wrong configuration."
         #error "Wrong configuration."
          ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c: In function 'nrf_drv_twi_init':
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:189:5: error: implicit declaration of function 'CODE_FOR_TWIM' [-Werror=implicit-function-declaration]
         (
         ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:190:9: error: 'NRF_TWIM_Type' undeclared (first use in this function)
             NRF_TWIM_Type * p_twim = p_instance->reg.p_twim;
             ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:190:9: note: each undeclared identifier is reported only once for each function it appears in
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:190:25: error: 'p_twim' undeclared (first use in this function)
             NRF_TWIM_Type * p_twim = p_instance->reg.p_twim;
                             ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:190:49: error: 'const union <anonymous>' has no member named 'p_twim'
             NRF_TWIM_Type * p_twim = p_instance->reg.p_twim;
                                                     ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:190:56: error: expected ')' before ';' token
             NRF_TWIM_Type * p_twim = p_instance->reg.p_twim;
                                                            ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:195:5: error: expected ';' before 'CODE_FOR_TWI'
         CODE_FOR_TWI
         ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c: In function 'nrf_drv_twi_uninit':
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:231:80: error: 'const union <anonymous>' has no member named 'p_twim'
                 nrf_drv_common_irq_disable(nrf_drv_get_IRQn((void *)p_instance->reg.p_twim));
                                                                                    ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:231:89: error: expected ')' before ';' token
                 nrf_drv_common_irq_disable(nrf_drv_get_IRQn((void *)p_instance->reg.p_twim));
                                                                                             ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:233:9: error: expected ';' before 'CODE_FOR_TWI'
             CODE_FOR_TWI
             ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c: In function 'nrf_drv_twi_enable':
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:254:9: error: 'NRF_TWIM_Type' undeclared (first use in this function)
             NRF_TWIM_Type * p_twim = p_instance->reg.p_twim;
             ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:254:25: error: 'p_twim' undeclared (first use in this function)
             NRF_TWIM_Type * p_twim = p_instance->reg.p_twim;
                             ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:254:49: error: 'const union <anonymous>' has no member named 'p_twim'
             NRF_TWIM_Type * p_twim = p_instance->reg.p_twim;
                                                     ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:254:56: error: expected ')' before ';' token
             NRF_TWIM_Type * p_twim = p_instance->reg.p_twim;
                                                            ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:258:5: error: expected ';' before 'CODE_FOR_TWI'
         CODE_FOR_TWI
         ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:249:27: error: unused variable 'p_cb' [-Werror=unused-variable]
         twi_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx];
                               ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c: In function 'nrf_drv_twi_disable':
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:275:9: error: 'NRF_TWIM_Type' undeclared (first use in this function)
             NRF_TWIM_Type * p_twim = p_instance->reg.p_twim;
             ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:275:25: error: 'p_twim' undeclared (first use in this function)
             NRF_TWIM_Type * p_twim = p_instance->reg.p_twim;
                             ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:275:49: error: 'const union <anonymous>' has no member named 'p_twim'
             NRF_TWIM_Type * p_twim = p_instance->reg.p_twim;
                                                     ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:275:56: error: expected ')' before ';' token
             NRF_TWIM_Type * p_twim = p_instance->reg.p_twim;
                                                            ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:281:5: error: expected ';' before 'CODE_FOR_TWI'
         CODE_FOR_TWI
         ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:270:27: error: unused variable 'p_cb' [-Werror=unused-variable]
         twi_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx];
                               ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c: In function 'nrf_drv_twi_xfer':
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:727:9: error: implicit declaration of function 'twim_xfer' [-Werror=implicit-function-declaration]
             ret = twim_xfer(p_cb, (NRF_TWIM_Type *)p_instance->reg.p_twim, p_xfer_desc, flags);
             ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:727:32: error: 'NRF_TWIM_Type' undeclared (first use in this function)
             ret = twim_xfer(p_cb, (NRF_TWIM_Type *)p_instance->reg.p_twim, p_xfer_desc, flags);
                                    ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:727:47: error: expected expression before ')' token
             ret = twim_xfer(p_cb, (NRF_TWIM_Type *)p_instance->reg.p_twim, p_xfer_desc, flags);
                                                   ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:727:91: error: expected ')' before ';' token
             ret = twim_xfer(p_cb, (NRF_TWIM_Type *)p_instance->reg.p_twim, p_xfer_desc, flags);
                                                                                               ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:729:5: error: expected ';' before 'CODE_FOR_TWI'
         CODE_FOR_TWI
         ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:718:16: error: variable 'ret' set but not used [-Werror=unused-but-set-variable]
         ret_code_t ret = NRF_SUCCESS;
                    ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c: In function 'nrf_drv_twi_data_count_get':
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:764:22: error: expected expression before ';' token
             ASSERT(false);
                          ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:767:5: error: expected ';' before 'CODE_FOR_TWI'
         CODE_FOR_TWI
         ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c: In function 'nrf_drv_twi_start_task_get':
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:776:9: error: expected expression before 'return'
             return (uint32_t)nrf_twim_task_address_get(p_instance->reg.p_twim,
             ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:779:5: error: expected ';' before 'CODE_FOR_TWI'
         CODE_FOR_TWI
         ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c: In function 'nrf_drv_twi_stopped_event_get':
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:790:9: error: expected expression before 'return'
             return (uint32_t)nrf_twim_event_address_get(p_instance->reg.p_twim, NRF_TWIM_EVENT_STOPPED);
             ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:792:5: error: expected ';' before 'CODE_FOR_TWI'
         CODE_FOR_TWI
         ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c: In function 'nrf_drv_twi_xfer':
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:738:1: error: control reaches end of non-void function [-Werror=return-type]
     }
     ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c: In function 'nrf_drv_twi_data_count_get':
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:771:1: error: control reaches end of non-void function [-Werror=return-type]
     }
     ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c: In function 'nrf_drv_twi_start_task_get':
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:784:1: error: control reaches end of non-void function [-Werror=return-type]
     }
     ^
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c: In function 'nrf_drv_twi_stopped_event_get':
    /home/brook/Desktop/nordicSDK11/components/drivers_nrf/twi_master/nrf_drv_twi.c:796:1: error: control reaches end of non-void function [-Werror=return-type]
     }
     ^
    cc1: all warnings being treated as errors
    

    what could be the problem now

  • The project needs to have the file nrf_drv_config.h added, and then edited to enable the TWI interface. Either set TWI0_ENABLED to 1 or TWI1_ENABLED to 1, depending on which of the two TWI peripherals you want to use. And set TWI0_USE_EASY_DMA or TWI1_USE_EASY_DMA to 0, since Easy DMA is only supported for nRF52.

  • One of my habits is to search the Nordic SDK for certain file names when they appear in my compiler error messages. This has taught me things that I have trouble finding in the SDK documentation or tutorials.

    I'm using the PCA 10036 board and SDK 0.9.2. There are THREE versions of the file nrf_error.h in SDK 0.9.2. They are located in the following directories:

    components/softdevice/s132/headers
    components/softdevice/s212/headers
    components/drivers_nrf/nrf_soc_nosd
    

    Eventually I figured out that "nosd" stands for "NO SoftDevice." Hope that helps someone else.

Related