nRF52 library
Hi
Before investing a lot of time to get the Fanstel module with nRF52840 to work, I'd like to know others active with the Nordic SDK drivers. Is the Crossworks support well supported? (I've only tested Nordics with Keil - but will not add the costly full blown Keil to the toolbox.
-
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).
Please sign in to leave a comment.
Comments
1 comment