The new Raspberry Pi B Model B+ is here - Pick one up in the store and check our detailed guide!

September 24, 2009 AT 10:28 am

Should anyone use a web based compiler?

Mbedmicrocontroller
Are we approaching “cloud computing” like all those IBM-HP-INTEL-Whateverz ads? Should we start to use web based compilers for microcontrollers? We were checking out “mbed – a $99 tool/board for Rapid Prototyping with Microcontrollers” the hardware looks great, the libraries look great, but we noticed that you do not actually get the compiler, instead you need to use their web based compiler. What if they go out of business or get sold, the site goes down or something else? Someone asked this question too – and here’s the response :)

You can export projects from the online compiler and store them locally if you wish. The mbed microcontroller is just an LPC1768/2368, so it would still be possible to build binaries for in the event that the online compiler was unavailable. Having said this, we’ve no plans on going out of business!

What do you folks think? Web based compliers, good idea? How much does the ARM RVDS 4 compiler cost now?

It also seems like the project won’t be fully open sourced… bummer -

The core libraries are also free for commercial and non-commercial use, but are just supplied as compiled libraries; i.e. we wont be releasing the source yet – the main reason is we want to maintain responsibility for fixing and supporting them without fragmentation (fork is cheap!), and they aren’t quite right yet in terms of architecture.This will ensure the architecture ends up in the right place for the majority. The schematic should be available soon, but we won’t release the gerber for the core module (similar support/control reasons). Some of the baseboards we’ve done are there, and we will make sure it is clear they use the MIT license (or similar if there is something more appropriate for PCBs?) So a careful balance of open source and openness, based on what we think will help the project be successful, sustainable and supportable.

We’re still looking forward to the first fully open source ARM development system – firmware – hardware – software, are there any? So far only Arduino on the AVR side has managed to get 3 out of three… and likely why there are 100k units out there, yay OS tool chains.

Related

“D is for Diode” – Circuit Playground Episode 4 is out now! CLICK HERE TO WATCH!

Have an amazing project to share? Join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Learn resistor values with Mho’s Resistance or get the best electronics calculator for engineers “Circuit Playground”Adafruit’s Apps!



16 Comments

  1. Is a “complier” some kind of new interrogation tool? Are “compliers” more effective than waterboarding? Inquiring minds want to know! :-)

  2. It sure feels like it, sometimes!
    (It turns out the ‘auto-spellcheck’ for Mac does not like the word compiler)

  3. To be honest: Do I want to bear the turn around times of a web based compiler?
    Zipping, uploading, downloading, deploying, testing, failing and doing all that again?
    In Eclipse for AVR this takes a mere second (or two) – but with a web based compiler ..

  4. Why ARM RVDS (or Keil or IAR)? I’ve always used GCC and it works very well for ARM (Keil and IAR are out of my league financially), and there are thousands of professional engineers using it day in and day out on commercial projects (take a look at the LPC2000 yahoo group). There are some easy to use preconfigured Eclipse-based toolchains out there like ‘Yagarto’ as well. Personally, I prefer Crossworks for ARM, though, since it’s an amazing IDE (very familiar to anyone coming from Visual Studio), is GCC based, and is only $150 for hobbyists. True $150 is a chunk of money for many people, but the debugging is such a pleasure and the fact that it just works out of the box is more than worth the investment for me.

    The hardware is interesting (especially at $69 pre-order), but the web interface thing ruins it for me. I also had the impression it’s CPP, whereas C is really the overwhelming norm (and easier for people to pick up if their just staring out than the 00-based CPP). It can be useful for newcomers not to have to bother setting up a toolchain (which can be a bit complicated), but I just can’t depend on a web-based solution. What am I going to do during a 12 hour plane trip? :-)

  5. Personally I prefer Opensource all the way through

    I am working on building fully Qpensource Arm boards along with OpenSource tool chain. I are also looking at the possibility of Arduino software compatability.

    One of the ARM boards we (Folknologylabs) are working on :
    http://folknologylabs.wordpress.com/2009/09/13/arduino-armadillo-armaduillo-amino/

    Which is part of the Amino project :
    http://folknologylabs.wordpress.com/2009/09/13/amino/

  6. How can you build anything “mission critical” or where human safety is in question if you can’t check all parts of the tool chain? The Arduino/Wiring toolchain is full of bugs and weaknesses that make high reliability challenging but at least we have a chance of finding and fixing them.

  7. This is OK for toy or one-off use, as long as you accept the fact that you may one day lose the ability to develop for it through no fault of your own. Oh, and you can’t do development without an internet connection.

    It is NOT, however, OK for anything that’s even remotely safety-critical or requiring large verification efforts. The problem is two-fold:
    1) A safety critical device that you can’t update later (because the company goes away and you no longer have tools) is a time bomb. Almost everything eventually shows bugs, and if you can’t fix it, it’s going to either continue to be used in a broken state, or it has to be thrown out. That’s no good.

    2) You can’t guarantee that if you compile the software twice that you’ll get the same system behavior. If they change the compiler (to bug fix it, for instance), that will have effects on the compiled program, and may have user-visible effects on the end product. No serious verification effort can proceed when you can’t trust that compiling the thing twice will give you the same functionality.

  8. Just as a follow up on the comment of waiting for a real open source ARM toolchain, etc., the problem is which ARM (ARM7, ARM9, etc.), and from which manufacturer? Unlike AVR there’s dozens of manufacturers making ARM-based chips, each with their own unique mix of features and IP blocks.

    I honestly think it’s impossible to make something like Arduino on ARM, simply because AVR is one manufacturer, one code base, and you only need one or two MCUs so of course it’s feasible to make a one-size fits all IDE and toolchain. Even if you just take ARM7, though (probably the most useful for hobbyists) or maybe the newer Cortex-M3, which chip family from which manufacturer? Atmel, NXP, Luminary Micro, Analog Devices, etc.?

    That said, there are some decent open source tools out there, and GCC is very good for ARM (again, check out Yagarto for a precompiled toolchain, and many Olimex ARM7 dev boards come with their own ‘GCC For Dummies’ Eclipse ARM toolchain). I’m actually working on putting together a full GCC-based software package for NXP’s LPC2148 that makes it easy to use every peripheral on the board, including USB (CDC, HID and Mass Storage + Fat32), and I’ll provide the gerbers and Eagle board files ‘open source’. If it works out, I’ll do the same for the 2103 and the beefier 2478 (Ethernet, USB Host, 24-bit LCD controller) … but it can never be a one size fits all ‘solution’ like w/Arduino. ARM and AVR are apples and oranges. What ARM is maybe missing in simplicity, though, it more than makes up for in sheer flexibility.

    [/rant off] :-)

  9. kevin, sure but there are half a dozen popular 8 bit micros. there’s no ‘real’ reason the Arduino needs to use AVR, it could have easily gone with Cypress PSoC or PIC – both of which are very popular. There’s also no reason they needed to go with an atmega8. The atmega32 would have been a ‘better’ choice. Arduino is absolutely not one-size-fits all but rather one-size-that-people-seem-to-not-mind-the-fit. If that makes sense :D

  10. ladyada:

    I’m guessing for a lot of people any 8-bit mcu is indeed great if all you really need is GPIO, and maybe something like SPI or UART. I thought it was AVR only, sorry. I’ve never played much with Arduino (even though I have a couple boards), but I’m actually really happy about the fact that Arduino opened up the whole embedded thing to a lot of people that wouldn’t have otherwise had ‘easy’ access to it (setting up a toolchain isn’t any fun especially if you’re no a Linux person … which I know I’m not). That’s huge and applause worthy in itself.

    I’d love to see an Arduino type solution for a popular chip like the LPC2100 family from NXP. (512KB flash, 32KB SRAM, USB, etc., in a small 64 pin QFP.) The tools are out there (the LPC2148 in particular is very popular with hobbyists so lot’s of code exists … check out http://www.jcwren.com/arm for example) … it’s just a matter of someone putting together a nice IDE that ties it all together (personally I find Eclipse awful since it tries to be all things to all people and ends up doing everything in an unnatural seeming way to me). The biggest obstacle isn’t the software … it’s making the toolchain easy to use (GCC hardly does anyone any favors in terms of ease of use especially when cross-compiling, etc.). People need something easy to pick up that just works out of box. Rowley Associate’s $150 GCC-based Crossworks for ARM does this amazingly well, but it’s still commercial. There’s definately a need for a watered-down (but just as easy to use) open source ARM IDE out there really aimed at hobbyists (i.e., not Eclipse with it’s 5-click ‘hope it works’ this time OpenOCD/ZDT/GDB debugging) …

    Unfortunately, there’s a whole lot of work that goes into making a good IDE, and obviously the people best able to put something like that together don’t always have 6 months free to go off and make a full open source development platform (alas). The needs and the interest are there … the problem is getting the right people together with enough commitment and perseverance to see it through. :(

  11. “What do you folks think? Web based compliers, good idea?”

    No, with reservations.

    At the moment I’m adding some features to a piece of embedded code I wrote five years ago, on a product I developed ten years ago. I had the presence of mind to archive the tool chain (which was made easier by the fact that they’re all MS-DOS tools) along with the product source, so now when I build it I know I’m going to get consistent behavior.

    I’m lucky; one of my co-workers has to update a Windows program built with Microsoft Foundation Classes (MFC), but the current Windows tools push .NET. I don’t envy her.

    The PC industry expects rapid turnover among software and hardware products, but embedded systems live, and must be maintained, forever. That means your tools still need to be available.

    My reservation is that tools can’t always keep up with OS advancements. My DOS tools don’t run under 64-bit XP, which my IT manager thoughtfully installed on my new PC without checking with me first. He was able to set up a virtual machine running 32-bit XP for me and the tools run in that, but I can’t use the USB programming cable because there’s no 64-bit driver for it. (That’s not relevant to the web-based compiler discussion though.) Long story short, for really long-lived products you may need to archive a development system as well as tools and source code.

    Dave

  12. Kevin

    Arm is a big range! We are focusing on Cortex M3 (and soon MX) which narrows it slightly. We are using M3′s from Luminary, NXP and ST and are likely to base our initial builds on STM32x range as a lot has already been done for this in opensource (thats one of the benefits), I know others such as Leaf Labs are also working on the STM32X to produce their Arm version of Arduino ‘Maple’, as well as Olimex. There are GCC based ARM toolchains from Code Sourcery that are also worth checking out if you prefer ready built. I think the Liquidware guys are using Ant to build with GCC inside the Arduino IDE for their IXM (NXP based ARM CortexM3 boards) which is another avenue.

    Overall there is a lot going on and I expect great deal more of Arm activity in Opensource hardware with opensource toolchains

  13. It looks like RVDS is $2500+, so if you want the official ARM compiler this is a good way to get access to it. I’m curious if this use of it complies with the license agreement, though. Microsoft explicitly prohibits this sort of thing with their software.

  14. Each and every compile will log your source code on their server. Who knows what the fine print will say when you press the required “submit”.

  15. At this stage of the game why would anyone choose to start this sort of development project and not use open source software tools ?

  16. With Xduino you can run Arduino commands on ARM Cortex-M3 STM32 boards. Now XDUINO packages with IDE which bundles the FREE ARM Compiler for C/C++ (the compiler is opensourced).

Sorry, the comment form is closed at this time.