Arduino TARGET_SDK_15_0 vs Nordic's nRF5 SDK

Sorry if this is a dumb question, but I'm trying to find out if Arduino's NRF5x SDK provides the same performance as when downloading it directly from Nordic? Nordic nRF5 SDK

Directory: Arduino15\packages\arduino\hardware\mbed_nano\2.5.2\cores\arduino\mbed\targets\TARGET_NORDIC\TARGET_NRF5x\TARGET_SDK_15_0\modules\nrfx\hal

I'm guessing the Arduino technical wizards have needed to modify the files to some extent, but to be honest I have no idea.

I'm also guessing performance will be virtually identical but would still appreciate some confirmation about this before I get started.

My application is to use GPIOTE to create 1 microsecond precision timing for PWM and PPM servo control.

The performance should be about the same as the compilers seem to be the same (gcc).

I wasn't involved but I would expect the Arduino people to have used the SDK files unchanged. Adapting with every version Nordic releases would be too much effort I guess.
Usually the Arduino stuff is built on top of the vendor specific SDK.

I must ask: what does performance mean here? As the same compiler creates the code the execution speed should be more or less identical (different versions of gcc might have slight differences in the speed of the resulting code but that's usually undetectable).

Although you failed to provide a link to that product I guess you mean the Nordic module of that name. If you plan to use that I don't see why you should use the Arduino environment for development as the biggest benefits (ease of use and portability) are available to you anyway.

1 Like

Thanks pylon. Regarding the 1st three points, not so much the compilers – but I was wondering more along the lines of if the Arduino implementation of Nordic's SDK is 100% identical, without needing to have added any compatibility coding to make the SDK work within the Arduino IDE environment...

For example, if it's simply a matter of using the SDK files unchanged, then I have to ask, why is Arduino still using version 15 when Nordic's SDK is at version 17 ?

Regarding the last point GPIOTE "general purpose input output task events" – seems to be a technique used in association with accessing the hardware timer peripheral more directly, i.e., without having to involve the main processing too much. So, for pulse width modulation (PWM) which works to 1 microsecond precision, using software interrupts doesn't provide as good timing accuracy, apparently...

The board I'm using is a Nano 33 BLE which itself uses a NRF52840 chip, and the GPIOTE and Timers are documented as peripheral functionality of that chip, I think so anyway, but I'm still learning :slight_smile:

I guess that checking the differences between the version and eventually adapting the Arduino classes is too much work if no new features are introduced that enhances the Arduino functionality. But that's wild guessing, I'm not part of the Arduino team.

I also found this Driver vs HAL "HAL" = hardware abstraction layer. The Nordic SDK files via Arduino's folder structure (see opening post) are in a folder called "hal", which I'm guessing is relevant.

This is also beyond me, but I thought it was interesting nRF52832 - Using SDK and mbed?

Quote: "The Nordic SDK is used by all Nordic targets in mbed"

Anyway, thanks for all your help it's much appreciated (Y)

Sorry for this late edit, but it'll be my last one for this thread. For anyone else new to this like me, then simply being aware of Arduino's folder structures might help in someway...

My opening post stated the following folder:


Example file: nrf_gpiote.h

But there's also the folder as below:


Example file: nrfx_gpiote.h (for some reason I was expecting to have to download the driver files directly from Nordic, but it seems they're here)

I believe this is relevant to whether working via the "drivers" or "HAL" as I mentioned previously (no doubt this is obvious to many), but that's all, thank you.