Thoughts on development tools

Hi guys,
I'd be interested in hearing some opinion and/or discussion around development tools and UX. As we all know, creating BLE applications with any tool, is not especially easy. Not talking about learning platforms like the micro:bit. But for "real" development platforms in general.

This was one thing that I discovered when starting with Nordic: In spite of the ingenious design of SoftDevices and the SDK, the toolchain of the nRF products may not be the easiest to get your head around. There is no single download-to-rule-them-all or wizard-based code generators. There are overview tutorials and code examples to start with, where you usually choose an example that fits one of the peripherals you want to work with. But the moment you need to integrate more perihperals, as is most often the case with BLE applications, the next step may be a bit obscure. And fiddly.

Having worked a fair bit with the Atmel AVR, the difference was very tangible. Atmel had AVR studio, which was an integrated development and debugging platform. It included gcc and connected and updated external hardware tools automatically. Then Atmel Studio, also including the choice of which modules to include in your project and do some initialization housework at the click(s) of a button(s). There was also, the Imagecraft and CodeVision compilers/IDEs which had a setup wizard included; allowing you to setup peripherals like timers, GPIO and ADC without writing code.

The AVR range is of course not directly comparable to the nRF products in terms of features and performance.
But what do you think - are there similar approaches that would benefit the nRF products?
Maybe you think the tools are just fine, but agree that some more integrated tutorials and examples could be useful?
What are your most appreciated features of a development toolchain?


Cheers and thanks;
Eivind :-)

Top Replies

Parents
  • I have not negligible experience programming MCUs, but Nordic has been my first swing at a real wireless protocol environment.  It has not been friendly, but I can imagine worse.  If I had a magic wand I would want maybe two things:

    1. A code generating tool.  I am thinking along the lines of STM CubeMX.  CubeMX is a tool that I have bad-mouthed in the past, but it is a great way for novices to generate working examples fitting the general outline of what they need.  The peripherals like SPI, Timers, etc. should be standard code anyway.  And even with BLE/NFC/etc. since we have a handy way to represent them graphically (service block nested around characteristic blocks with certain attributes and such) it would make sense to have a tool where you fill in the blanks and valid code comes out.  Doesn't mean the code is optimal, but if it works then that would be great.  This also does away with the ubiquitous "just look at the XXX example code" that Nordic employees seems to sprinkle on peoples questions here.
    2. Much better documentation around the preferred API... or even a preferred API.  I am trying to build a simple tool - SPI gets data from sensor, sends over BLE - using NRFX drivers and it is rough going.  Even when you ask for advice, people just say to use the legacy drivers (even though the documentation explicitly recommends otherwise).  Each task should be the same steps every time even if the config/options are different, so why is it so difficult to find clear documentation telling you what goes where, exactly what the sdk_config fields should be, etc.

    Other than that, it would be cool if they were a little more transparent - I'm trying to use SDK 17.x... why is this different from SDK 15.3.x?  What are they trying to accomplish moving on to the newer version numbers?  Maybe this is documented somewhere, but I haven't found it.  As it is, I have been referencing pages in the infocenter that "Are not found in the bookmarks" - why such obscurity?

  • Hi ,

    you can take a look at this tool for code generation: https://vicara.co/nrf52-code-generator
    It currently supports GPIO, GPIOTE, PWM, UART, SPI & TWIM with Segger Embedded Studio project file generation. More peripherals and boards to be supported soon. Please do share you feedback if you try it out.

Reply Children
No Data