Parallax Shows Love For Open Source: GCC + Propeller

Parallax has done something that is unthinkable for most microcontroller manufacturing companies. They’ve decided to throw their support behind an open source toolchain based on GCC. That’s right, instead of fighting to get your code compiling on a platform whose example code uses crippleware, you can actually download, compile, and start using this toolchain without code size restrictions or other unfavorable limitations.

Why does this matter? One example that comes to mind is ChibiOS and the STM32F0-Discovery board. We’ve been playing around with that board recently and found out that the Atollic 8k code-size limitation prevents you from debugging ChibiOS. So you either pony up the registration fee, or go though at least a little pain (a lot depending on your skill level) to move to an open source solution. Here that’s not going to happen because you start with a GCC option from the word ‘Go’.

So join us in a round of applause for good decisions. Bravo Parallax! This Beta test targets the P8X32A Propeller chip but we hope it’s so popular that the rest of the line gets its own support.

[Thanks Devlin via Adafruit]

35 thoughts on “Parallax Shows Love For Open Source: GCC + Propeller

  1. Thats pretty nice, having gcc make the propellers much more interesting.
    About the cortex M0, use Coocox!
    No need to fight about compilers and missing linkers and header files, free, gcc based, install and use.

    1. Are you listening:
      Microchip?
      TI?
      Freescale?
      Renesas?

      For any of the above you can probably pick out a microcontroller/CPU and say “See, this has GCC support!” Well, sort of. Almost without exception, GCC is halfheartedly implemented for a tiny subset of product offerings, usually by a lone programmer, and not kept updated. The manufacturer is not involved.

      If a toolchain is available at all, it’s complex to install and use, requires old dependencies or even an old version of GCC. Hopefully there’s a capable programming and debugging utility. More likely, you’re going to have to use a third party tool that’s crippled and Windows-only.

      The existence of comprehensive GCC support for AVR microcontrollers may be somewhat of a miracle due to an Atmel employee’s side project, but it exists and is the sole reason I prefer them.

      It’s getting a bit closer for MSP430, but TI really needs to do more to help get that off the ground.

      1. What’s wrong with TI’s support? Are you suggesting that they port GCC to all of their chips? They contribute to GCC efforts for most of their MCUs, andtheir Linux version of CCS is acctually pretty good and is free (as in beer). It can be used with virtually all of their products and will have MSP430 debug soon. Or maybe you don’t like that they release source files for their dev boards? I think that Propeller has one rinky dink development board that is open source.

        I’m not sure what the problem is. Sounds like a rant for the sake of ranting.

  2. More like they realized that the Arduino platform is easy to use and being open is quite a bit more likely to attract a sizable userbase.

    Parallax makes good hardware but their software has been lacking in the open and easy to use department for a while now. This is a difficult change but a very welcome one. For Parallax’s sake, let’s hope that Arduino doesn’t start incorporating multiple core microcontrollers that blow the Parallax boards out of the water.

    1. I’ve gotta say… The propeller hardware is sub-par. Every *other* microcontroller has interrupts, asynchronous peripherals, etc, because they are FAR more useful than having 8 cores and having to dedicate say, half of them to doing common tasks.

  3. The Propeller is such a capable platform and has a huge and very knowledgeable community around it, and their other products are equally well catered for.

    I was very pleased to see a strong push to get a solid C/C++ compiler developed for the Prop a few months back, now it’s featuring on Hackaday, that’s got to be a good sign.

    More power to the Prop and long live Parallax.

    1. I’ve been oogling the Propeller chip for several projects, but have avoided it thus far because of it uses it’s own language that I’ll have to learn. C/C++, and a $25 mini dev board? I’m off to order a new toy.

  4. ’bout dman time. This is why I avoided Parallax/Microchip/PIC for over a decade.. bc they only ran on proprietary, closed source software + windows.

    They lost me to Arduino. Sorry guys.. should have done this 10+ years ago.

    Tweeks
    p.s. that being said.. the Propeller is waaay sexy. Esp for non CS majors. Not having to mess with real time clocks and interrupts is a god send. Just give each process its own cog (processor core and memory). Pretty cool!

    1. Yeah, multitasking in real time. Who would have thought that would be useful? (kind of sarcasm)

      It’s not just the locked-down toolchains. It’s the stupid license agreements that make it nearly impossible to be sure that code you have compiling now, will compile 10 years from now. That’s nearly a death blow to OSH (open-source hardware) projects. The actual death blow is when you realize that you can’t show certain details of your program as they depend on code that is not legal to show. It’s also conveniently in the way of getting GCC or such to work, legally.

      You’d think that they’d pull the MS/Apple card and want to make sure their stuff is as easy to get working out of the box as possible. Think of machines sold with their OS by HP/Dell/Apple/Acer/etc.

  5. Faith in Parallax up by 200%. I never understood why they would create a whole new language for just one chip. It’s too bad the Prop 1 doesn’t have ADC though.

  6. Sigh, I wish more manufacturers would work on improving GCC rather than pushing their own toolchains.

    Now about the F0 problems; that’s not directly a hardware problem with ST or a software problem with GCC; it’s a limitation on Atollic’s (a third-party toolchain vendor’s) debugging stub written to work with GDB.

    Now, if ST had just written their own stub for its debugger then this would be no problem. But hey instead we have stlink (https://github.com/texane/stlink) and OpenOCD (http://openocd.sourceforge.net/), both of which take more work than just downloading and running a binary, but are perfectly functional open source solutions.

    1. Same here. The hardware looked great to me, but the odd programming approach was off-putting. I always thought that the smartest thing Parallax could do would be to fully support a modern GCC toolchain — and here it is! I’m so pleasantly surprised.

  7. The reason Parallax made Spin (the programming language) is because it is very very easy to learn coming from basic, which their learning kits for begginers are based around. It’s sort of graduating to something just a bit more powerful, but not much, and not all that much faster either. Then when you realize that spin’s too slow for you, well then your only option was jumping head first into assembly, because that’s not a steep learning curve…

    Now the real issue, Is prop II out yet?

  8. “This Beta test targets the P8X32A Propeller chip but we hope it’s so popular that the rest of the line gets its own support.”

    The Propeller line only has the P8X32A chip in it, there’ll be a Propeller II chip at some point in the future, but right now there’s only 1 chip in the line.

  9. In principle, this is great. But since programming in C++ is my own personal idea of the third circle of hell… (or as Alan Kay once said – when I invented object oriented programming, C++ was NOT what I had in mind)… I think I’ll wait until someone supports JVM out of the box. Or makes a lisp machine.

    1. @Gorbag: JVM is the worst thing I can imagine, since java generally sucks for such things. Lisp would be awesome, but will require quite a lot memory. I think forth is the best bet for such hardware.

    2. I used to be a C++ true believer. Like it was 100x better than anything else. Then I learned assembly/machine language, saw Java implementations get fast enough for services (don’t code in it often, though), and saw Python. Java is not extremely different than C++, in appearance, but has quite a big difference in rules and what’s going on under the hood. It’s a horrible language for microcontrollers, unless you have some native recompiler and some magical unlimited storage space and even then I’d not use it.

      I learned that the application should dictate the choice of language, not the other way around. Assembly is great for stuff like microcontrollers simply because you’re not needing a 10000000000-page printout to hold the entire source code or flow diagram. ;) Obscure commands but you can make up for it with comments or macros. C has similar advantages. If you’re writing something like a web server, you’d want something higher like C++ or Python or some other high-level language with at most a DLL with the more time-critical parts optimized in a less friendly language. You’re trading off ease of catching bugs or avoiding them in the first place, in addition to easier code to implement, versus more ‘barewire’ where bugs are often hard to find and fix, and stuff that would be simple to implement suddenly needs 100’s of lines of reinvent-the-wheel code. In practice, you can usually optimize something like 1% of your code, to get a 90% reduction in resource use, heh.

    1. as far as I know this is the rather common approach and it makes sens.
      There is no real usage of having a giant gcc making zillions of different binaries. GCC would become harder and harder to maintain. The propeller is very different to a x86 CPU it would not really make sense putting that together. And devs might like to install a certain gcc version for A but another version for B…

  10. There’s nothing wrong with Spin; it fits Parallax’s niche. However, it is smart to have a complete GCC C/C++ option for the Propeller as well.

    Like some of the others commenting here, I do wish one of the chip manufacturers would get behind GCC Ada (or some other high-level language) so that we aren’t stuck with C/C++ for everything. Now that would have me truly impressed. This move of Parallax’s, while nice, doesn’t do much for me.

    1. AFAIK there’s no difference between “GCC C++” and “GCC Ada”, they’re all GCC. You create a backend for GCC that produces machine code for a given chip/platform, and then all the front ends (C/C++, Ada, Fortran, etc.) can compile code for that platform. The GCC architecture makes the language and the target platform independent.

      So if Parallax really are adding a Propeller backend, and they’re doing it properly, it ought to work with all languages supported by GCC.

      1. Not quite that simple. There would still be some work involved to get a complete (or very nearly so) Ada implementation in place for the Propeller (or name your micro of choice here). For example, thanks to the efforts of a few motivated coders, you can run Ada on some AVRs, but it still is, last I checked, rudimentary.

        But yes, you are essentially correct: there is no reason to think that GCC Ada can’t, without too much difficulty, be made available for any chip family with GCC C/C++ already working. The foundation is already in place. Only a little support from the chip manufacturer could make it happen.

  11. Microchip’s PIC32 toolchain happens to be built on GCC and is, as such, open source. Yes, they charge money for higher optomization, but it’s easy to get around that by looking at the source code. (And if you’re up for compiling the toolchain yourself, there’s a define to remove licensing entirely)

  12. I’ve been playing around with the prop quickstart board and it’s pretty fun/impressive. It has native vga or video out, with a huge support base and lots of examples to play with. I got a prop micro computer up and running in less than hour or two. It can do snes level 3d, and gadget gangster has several shields with wii controller ports on board. It’s been fun so far, I can’t image what prop II will be like. It’s been fun for entry level game making so far…but but maybe the chip is just not for everyone. I still use Arduino but for the more basic stuff.

Leave a Reply to CodaCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.