Support for Mac OSX or Linux (arbitrary)?

I have found some old references to tools that could be or were compiled for these two systems in the past.

Is there anything more recent in the way of some open source, command line based, tools to compile a spin file to what ever format used to then load into the EEPROM.

I received a design for a piece of hardware, which uses the Propeller for it's controller. This is not my choice, since there are micro controller implementations that do have opensource support. Personally I would have chosen an ARM core of some sort. But I don't have that choice.

The issue is the need to load the product with unique serial numbers, and the current method is to use the Windows based loader program, to 'compile and load' to the EEPOM. This is tedious in a production environment where one wants to have as secure a path from 'source' to 'to executable loaded'. In the past I've done this by having the basic firmware in a hex file, having the 'serial' number info loaded at a given address, and burned the combo into the EEPROM either at a in house station, or sent the combo file, in a standard hex format, to a board house for them to gang load the EEPROM with the firmware.

There does not seem to be any 'production' orientation about the Propeller or the tools to work with it.

If anyone can point to some sort of tool set that is more oriented to a product, I'd appreciate it.


  • PropellerIDE (Spin, Assembly, and PropBasic) and SimpleIDE (C and C++) are both open-source and are available on GitHub. See this webpage.
  • The easiest way to do this would be to use a 64K EEPROM instead of the normal 32K EEPROM and have the EEPROMs preprogrammed with the firmware. The serial number would be programmed into specific locations in the upper 32K of the 64K EEPROM at an in-house station. You could also load device-specific configuration information into other locations in the upper 32K. The boot loader doesn't examine the EEPROM above the first 32K and only the first 32K is included in the checksum for the EEPROM.
  • Catalina is supported on Linux. It has a full set of command-line tools for both Spin and C, including a C compiler ("catalina"), a Spin compiler ("spinnaker", a derivative of OpenSpin), and a loader ("payload") which can load either Spin or C programs.

    I distribute Catalina for Windows and Ubuntu Linux, but it can be compiled on other Linux distributions.

    I used to also compile it on OSX, but I no longer do so as I don't actually own a Mac.

    You can find the latest distribution here -
  • Thanks. The use of a 64K device is intriguing, since I do have more configuration info than just a serial number and model ID.

    I looked at the schematic and it appears that the design uses a 24LS512, which is listed as a 64Kx8(if chunked at 8 bit bytes...).

    So it may be that I do have that option to use the 32K above the first 32K which is loaded on reset by the processor.

    I'll look at the Catalina project. It seems there was a very recent drop.

    John C.
  • RossHRossH Posts: 4,678
    edited 2019-11-02 - 00:54:42
    I'll look at the Catalina project. It seems there was a very recent drop.

    Yes, version 4.0 has just been released. It is worth noting that Catalina can both program EEPROMs up to 128kb "in situ" and also read/write and execute code from them (using XMM). There are various Spin programs for accessing the EEPROM readily available, and there is an example of accessing the EEPROM from a C program in the Catalina\demos\spi folder.

    Also, Catalina can directly output your code in various formats suitable for standalone EEPROM programmers (such as Motorola or Intel formats) using the -F command-line option (e.g. -F Intel or -F Motorola etc - see for all formats).

  • You'll also find a variety of Linux/Mac tools on my CI server:

    There are quite a few open source tools out there for the Prop, but they don't get a lot of "official" love from Parallax (lots of unofficial love). If it's just a .spin file, you might look at OpenSpin (Home, CI) for compiling and either PropLoader, Propeller Load, or loadp2 for loading... I don't really know the differences. More info on those best found via Google and these forums (binaries for all available on my CI server, and possibly also their respective GitHub pages).
Sign In or Register to comment.