nRF52 library

Comments

1 comment

  • Avatar
    Philip Ouellette

    We are using it. Made us hate life for a while.

     

    Issues: The SDK_Config.h file in every single example project has had all unused definitions stripped out. This means that if you try to merge examples you have to manually merge their respective SDK_Config.h files.

    You also have to manually add every user include directory to the project properties. Here is an example of what we ended up with.

    $(PackagesDir)/CMSIS_4/CMSIS/Include

    .

    ./config

    ../wrt_common

    $(NRF_SDK)/components

    $(NRF_SDK)/components/boards

    $(NRF_SDK)/components/device

    $(NRF_SDK)/components/drivers_nrf/clock

    $(NRF_SDK)/components/drivers_nrf/common

    $(NRF_SDK)/components/drivers_nrf/gpiote

    $(NRF_SDK)/components/drivers_nrf/delay

    $(NRF_SDK)/components/drivers_nrf/hal

    $(NRF_SDK)/components/drivers_nrf/nrf_soc_nosd

    $(NRF_SDK)/components/drivers_nrf/uart

    $(NRF_SDK)/components/drivers_nrf/rtc

    $(NRF_SDK)/components/drivers_nrf/twi_master

    $(NRF_SDK)/components/libraries/atomic

    $(NRF_SDK)/components/libraries/balloc

    $(NRF_SDK)/components/libraries/bsp

    $(NRF_SDK)/components/libraries/button

    $(NRF_SDK)/components/libraries/experimental_log

    $(NRF_SDK)/components/libraries/experimental_log/src

    $(NRF_SDK)/components/libraries/experimental_memobj

    $(NRF_SDK)/components/libraries/experimental_section_vars

    $(NRF_SDK)/components/libraries/fifo

    $(NRF_SDK)/components/libraries/strerror

    $(NRF_SDK)/components/libraries/timer

    $(NRF_SDK)/components/libraries/uart

    $(NRF_SDK)/components/libraries/util

    $(NRF_SDK)/components/libraries/twi

    $(NRF_SDK)/components/toolchain

    ../../..

    $(NRF_SDK)/external/freertos/config

    $(NRF_SDK)/external/freertos/portable/GCC/nrf52

    $(NRF_SDK)/external/freertos/portable/CMSIS/nrf52

    $(NRF_SDK)/external/freertos/source/include

    ../config

    $(NRF_SDK)/components/libraries/serial

    $(NRF_SDK)/components/libraries/queue

    $(NRF_SDK)/components/libraries/mutex

    $(NRF_SDK)/components/proprietary_rf/esb

    $(NRF_SDK)/components/drivers_nrf/saadc

    $(NRF_SDK)/components/drivers_nrf/ppi

    $(NRF_SDK)/components/drivers_nrf/timer

    Once you get past these issues you get to deal with the insane level of indirection applied to every single function in the SDK. The functions will work, but each simple operation (toggling a GPIO) results in 5 or more nested function calls. I was able to bit bang SPI data from an ADC faster than the SDK would using the SPI hardware.

    Once you strip this crap out, it works fine and is very efficient.

    Note: None of these issues are Crossworks fault. The SDK examples were built with Keil which handles the user include directories somewhat differently (but still requires you to tell it about them).

     

     

    0
    Comment actions Permalink

Please sign in to leave a comment.