I am starting my development work with Nordic Semiconductor nRF51822 Device and already purchased the Development kit. What i wanted to ask is do i need to purchase KEIL MDK 500 License to write my code/application? Because the Low energy soft devices themselves takes up space of 64KB -128 KB.
Kindly suggest and explain, do i need to purchase SUPER EXPENSIVE license (£3,349.14 = $ 5412) of KEIL MDK500 to compile any application code with BLE soft-devices stack of Nordic Semiconductor? and is there any way around to escape the license cost?
I've used Keil to begin with, and it works very well out of the box. But later on I've started to add a C++ wrapper around the Nordic API, to make it easier to reuse my code and hereby make it more stable…
I started with Keil, but quickly migrated to GCC. I've written up on GCC setup for OS X and windows here:
I use Crossworks, I've written about that many times before here. I'm on a Mac but Crossworks works on Windows too (not that I've tried it).
You can certainly use Eclipse and gcc and there…
The SoftDevice stack is precompiled so it does not count into the 32k limit of the free version of Keil. Most applications will actually fit inside 32k because of the architecture and SDK that Nordic provides.
If you need more than 32k, there is always Eclipse and GCC.
I've used Keil to begin with, and it works very well out of the box. But later on I've started to add a C++ wrapper around the Nordic API, to make it easier to reuse my code and hereby make it more stable in the long run.
The Realview compiler (used by Keil default) is not impressive with respect to C++. I had many problems with straight forward things that it wasn't able to compile, and I struggled with many simple thing for days. Finally I switched Keil to use the GNU toolchain, and after a long struggle again changing all my code to get it to work and compile with the GCC compiler, I finally got a binary. But then I was let down by Keil once again, as it wasn't able to flash the ELF file produced by GCC. Apparently the sections were not what Keil expected, and to be honest, at this time I was pretty tired of Keil.
I've actually tried to setup Eclipse and GNU like a year ago, but it was so difficult compared to Keil that I gave up on it. Anyway, I now felt that it was time to give Eclipse another shot, so I went back to installing Eclipse and GNU, trying to see if I could get it to work this time, as I knew GCC was a very good C++11 compiler. I used the Nordic guide and some trial and error once installed, and got it up and running in a day or two I think (all included).
Now - I finally got it working, and it works REALLY well. I'm very glad that I spent the time to get there, as I will be saving a lot of time by having a better C++ compiler, better documentation (Google CDT/GCC and you find whatever you are looking for), and last but not least - the Eclipse IDE is a couple of generations better. With "Intellisense" (code discovery / indexing) that works well and as you'd expect, better syntax coloring, better debugger (you can actually watch your structures and variables and drill into them), better formatting and what not. I'm steaming ahead now and I'm really appreciating the switch to Eclipse. So it's really worth the work of a couple of days or more to get there.
I was actually not having problems with Keil until I started the C++ project, so it still pretty decent for C development I think - but now that I'm used to Eclipse and have seen it in action I will never go back ;-)
There isn't anything further to add here. The Guest who commented above here is correct that the softdevice doesn't count towards the 32 kB, and most applications should hence be within.
If not, you can, as KPE said, consider setting up GCC and Eclipse or some other IDE, which doesn't have any code size limitations at all.
I'd be happy if you could either accept KPE's answer, or potentially post whatever you ended up doing as a separate answer and then accepting that. :)
As far as i know, even that 32K limit is also fake. We have only 16K of space left for application development, remaining 16K is padded with zeroes or garbage data. I posted a link of link from Texas Instrument Forum regarding this topic.
And about selecting the best answer, dear friends our discussion just started about this interesting topic. Who knows how many people get benefited by this this discussion. I am myself trying out the option of GCC as suggested by KPE. Friends, Give me little more time. And dear Ole Morten, could you share names of any other possible IDE besides KEIL which can support Nordic Devices.