2014-08-26 22:38:33 UTC
I am starting a business which will focus on creating a cheap, modular, open source data logger/controller usable across multiple domains. At the moment I am in the prototyping stage, using the following hardware:
1. STM32F4 Discovery board
2. MikroElektronika STM32F4 Discovery shield (http://www.mikroe.com/stm32/stm32f4-discovery-shield/)
3. Various MikroElektronika click boards (http://www.mikroe.com/click/):
* GPS click board (ublox LEA-6S receiver)
I don't have experience in C/C++ but I do have a lot of experience in Java, python, structured text (read PLCs) and a few other bits and pieces. I REALLY don't want to develop in C. From what I can make out it looks like a nightmare once the code reaches any substantial size, which mine will. I've started quite a few beginner C books and never got very far before throwing in the towel. However what I've read about Ada has certainly caused me to sit up!
So far I have investigated the following high level language alternatives:
At the moment I am forging ahead with Espruino because:
1. it is quick to get code on the processor as it is interpreted
2. interfacing with external hardware via SPI/I2C/UART is easy...except when you want to access on-chip functionality that isn't yet supported by the Espruino interpreter (which is aimed at STM32F1 powered Espruino board, partially ported to the STM32F4).
3. www.npmjs.org has so many libraries and examples of how to get things done (e.g. MODBUS RTU library...done) which translates to many willing hands/minds.
but I see dragons on the horizon. Here are a few:
1. It is not hard real-time
2. Although you can minify the code, I am uncertain whether everything will fit on when the code base grows.
In short, nice for tinkering/prototyping but probably not a wise choice for the long run.
Today I started chatting to Mike Silva over at EmbeddedRelated:
For Ada to be a viable option for my project, this is what I think I need [with Mike's comments]:
1. [IN PROGRESS] Easy communication: SPI, I2C, Serial, Ethernet,
I know that AdaCore is working on comms libraries for the ARM Cortex M parts, but I don't know anything about the projected availability.
If they want adopters then they'd better get a move on!
2. [UNSOLVED?] Libraries/examples: MODBUS RTU/Eth at the very least
I have yet to find a repository of libraries covering the major protocols (e.g. MODBUS, CAN, one-wire). There are quite a few in C. Would it be viable to just wrap these in Ada? It seems like a great short term solution but if we are using Ada to make things more stable, it hardly makes sense to use it merely to wrap (flakey) C libraries ;)
It is also true that you can link to C code in Ada with either thin or thick wrappers. A thin wrapper just converts each C function to an equivalent Ada subprogram, while a thick wrapper adds one or more higher-level layers on top of the basic subprograms.
3. [SOLVED] Direct access to chip functionality: STM32F4 RTC, Precision Time Protocol capabilities on chip, etc. I read that binding in C code is fairly easy? That would allow me to directly call the STM32 C drivers provided by STM?
In any case, you will have no problem accessing the chip hardware in Ada.
4. [SOLVED] Someone hosts an open forum to encourage the exchange of ideas, providing an alternative to the normally clandestine military/large corporate approach to code development. If Ada is going to grow then it needs to open up to your average Joe like me.
I'd appreciate any further feedback from members of this list.