Contents
This note is in group Technology, (plus perhaps My Beep-BRRR pages and My XMOS pages) and is a blog note where I will try to lay out the reasons why I have ended up with some single-board microcontroller (not computers) and not some others.
Disclaimer
Standard disclaimer, this is just for fun. No money, gifts, ads etc. Also, my non-association with any of the manufacturers and vendors mentioned here.
This note is not a comparison list of single-board computers and single-board microcontrollers. You will find that in Wikipedia’s Comparison of single-board computers and Comparison of single-board microcontrollers. I have selected only a few boards, based on my own experience, needs and bias I guess. How much RAM, FLASH, peripherals, power consumption etc. are not listed. As long as I think the data sheet is adequate for me, then I can live with that. Upgrading seems simple these days.
First, a story
This evening my wife and I walked down to town to see how the people arranging an event were doing. On top of a big container a young family man (at my children’s age) was sitting, rigging up a public slide show. I knew him (he could have been any of those engineers I used to work with before I retired earlier this year from a career as a coder of embedded safety-critical systems over a period of 40 years), and I asked him how was he doing? Proudly he showed me his tiny Raspberry Pi and shouted that he was going to run the slide show on the wall of the old concrete harbour building with the Rpi. So, are you running Python on it, I asked. – No, he said, I just googled «slide show on Raspberry Pi» and ended up with an image of the operating system, a variant of Debian, on an SD card, that booted and started an application that loaded my pictures from a memory stick. After a little config’ing it worked! I am so happy, on top of this container, not to have to deal with a PC and a long, extended VGA cable, any need of a mouse and a keyboard – just to run a slide projector! Now the Rpi will just sit inside this nice cabinet I just made for the projector! Now it may even rain! (He used Raspberry Slideshow).
Then, a spec sheet
- I need platforms to do real projects on (like my now up and running aquarium controller, see below)
- I want to code, especially embedded concurrent programs. Since the love of my career was programming in occam on transputers (by now long defunct INMOS), then my recent home projects have been programed in XC on XCORE (a kind of) multi-core processors (by now very much alive XMOS). The silicon has built-in process/core scheduler
- I also would like a debugging HW built in, and I need the development system to be free
- I want a live forum to discuss matters
- I want to do and learn and it shall be start points of my technical blogging
- Therefore I am not after single-board computers with a full-fledged operating system (like Linux), but single-board boards or single-board microcontroller
- But I do wish them to have «enough» of FLASH and RAM
- I want to learn about at least one such board where I might, perhaps see if I could write a CSP-based scheduler (again)
- Therefore I am perhaps aiming for two different (families) of single-board boards. I already have the XMOS boards (below), but which board should be my add-on single-board board?
- Plus, I have Macs with OS X or macOS at home. However, I have installed Windows 10 with Boot Camp by Parallels Desktop on iMac 4K retina for one of them (here). Windows is nice, but I had hoped to leave it behind at work. I won’t have to run the IAR Embedded Workbench from IAR Systems any more
- It’s possible to prosper in this world at home now, with very little investment and void of paid licences. I am glad I retired from professional life into «hobby life» now and not twenty years ago
Raspberry Pi
Dimensions (PCB): 65 mm × 30 mm (Raspberry Pi Zero).
The Rpi solved all the above mentioned guy’s needs! As much as I would love to have time and experiment with the Plan 9 operating system from Bell Labs with its beautiful Limbo language (a forerunner to Go, also with channels connecting concurrent tasks/processes/goroutines), that’s not what I plan to do.
I saw a stack of them presented at a conference, so impressing (microcluster by Richard Miller: here (presented at the fringe) and Plan 9 here and picture left [*]).
But running plain Go on it, that is tempting! Or Python! Of course, but I could do that right here, on my Mac. As most other things like just running something.
The only reason I see at the moment to buy a Rpi with an ARM on board is just to own one of them to hold, feel and watch. «Everything» about them is nice.
The Raspberry Pi needs some full-fledged operating system, and many have been ported for it. I think that most people run Linux or Debian on them. This is great, but for me there are more «naked» alternatives.
Since I seem to have painted myself into cluster corner, here’s an interseting paper: Building a Hand-held Cluster for £120 by Kevin CHALMERS, School of Computing, Edinburgh Napier University, UK. It was a fringe presentation at CPA 2017, here.
Raspberry Pi in XMOS Amazon Alexa Voice Service development kit
Update Oct2017: The XMOS Amazon Alexa Voice Service development kit (VocalFusion 4-Mic Kit for Amazon AVS) needs a Raspberry Pi! But since I’m in here not to make sound products, and since I basically want to work with the xCORE logical multi-core processor, and do want to code in XC (the used XVF-3000 VocalFusion does not), throwing myself at this to learn something new would be a major distraction. But I assume it’s very nice indeed for AVS developers!
See it listed in XMOS series of processors part xCORE-VOICE family.
Aside: myStorm
[*] Miller (at GitHub millerresearch, here) is also working on the myStorm project. This is a single-board STM32L433 (ARM) with an ICE40 (FPGA) and «with lots of connectivity (Arduino headers, Raspberry Pi header, Digilent Pmod interface headers, USB serial, microSD slot) and a useful 512KB 10ns SRAM chip», (excerpt from a private mail with him). It’s here. And IceBot is the programming firmware for the FPGA part. Miller also says in the mail that «An FPGA is the ultimate parallel engine».
BeagleBoard/BeagleBone
Dimensions (PCB): 86.44 mm x 54.54 mm (Beaglebone).
This is a very nice Linux type single-board computer that a programmer typically might run Python scripts on to make automatic testing of some hardware. As much as I’d like to have time for something with one of them, its mostly Linux architecture makes it not so interesting for me at the moment. I saw people at work arriving with them from courses. But after that it was, even there, difficult to find uses for personal single-board computers.
Arduino with AVR or ARM
Dimensions (PCB): 68 mm x 53 mm (Arduino Zero).
I have worked (and troubled) with Atmel AVR ATmega (and ATXmega) so many years at work that I don’t want to do it now.
AVR Studio or the newer Atmel Studio is, for the same reason, not anything I would want to work with.
However, the Arduino IDE interests me a lot! Simply because it seems to be embraced by so many. And it runs on macOS (since it’s written in Java. But it’s based on Processing, like Wiring and Fritzing, not Eclipse like the XMOS xTIMEcomposer).
But we also worked with an ARM at work, and that intrigued me. Therefore, since the Arduino also comes as boards based on ARM Cortex-M0+, ARM Cortex-M3 (or even Intel Quark) then I’d say that the Arduino Zero is very interesting. It runs on a ATSAMD21 Cortex M0 that even has a proper debug interface, which is expected in 2017. However, that board is not even on the Wikipedia Arduino page! But it certainly is on Arduino’s Genuino Zero page here. What happened between Arduino Zero (shown at Adafruit, here) and Genuino Zero (shown at Arduino, here) I don’t know.
Adafruit Feather M0 Basic Proto with ARM
Dimensions (PCB): 51 mm x 23 mm (Adafruit Feather). Including extra space to solder on.
The Adafruit Feather M0 Basic Proto board (here) contains the same processor as the Arduino Zero ARM, the ATSAMD21 Cortex-M0+ core from Atmel. My interest for any ARM, really, is shown in the fact that I actually bought the XMOS XCORE-XA once simply because it had both XCORE and ARM cores (below). But this is a full-fledged ARM. I like what I see.
At first I will use it simply to run and learn the Arduino IDE, and upgrade the Adafruit ATWINC1500 WiFi Breakout board (here), code and params. Then I can take that WiFi board to my XCORE boards.
Adafruit METRO M0 Express with ARM for CircuitPython
This is a nice board that contains an ARM that runs a version of Python that Adafruit calls CircuitPython (here). I think they designed CircuitPython. The board is here. I am not going for this board, but since I am interested in concurrency I should probably look after that. Having a glimpse of the docs I can’t see it mentioned. However, there is the PyCSP (I have written some on it here) that I would certainly wonder if it might be used with CircuitPython. My gut feeling would be no(?)
XMOS xCORE boards
All XMOS boards are here. A list of their processors that I made (with a little help) is here. I already have several of each of the boards below.
startKIT
My startKIT based aquarium controller
The aquarium itself (also with user manual) is described in My aquarium notes. Plus all my blogs about the technicalities here. They basically all «start» with my aquarium project. However, since the aquarium box now (Oct2018) is more or less finished (with a radio board plugged just behind the display, described My aquarium’s data radioed through the shelf) I presently work with an xCORE-200 eXplorerKIT (that I also have made a plastic box for) that receives data from the aquarium box and will later further those over a web server.
Observe that I have developed a USB 5V power watchdog for this unit (or any other USB powered unit). See My USB watchdog (and relay output) box.
Dimensions (PCB): 94 mm x 50 mm (startKIT).
The processor on board has one tile with 8 logical cores available for the user. It costs nothing.
As you see, I already have used quite some hours to code, design the HW and test this controller. It has looked after my small aquarium exemplary for three months when I write this. While I did this I have also done these two relevant notes: My XMOS notes and XC is C plus x. I have started with a separate blog note about the aquarium, algorithms, code and all, see My aquarium notes.
XMOS has discontinued the board (and the processor). See here.
I hope to add WiFi to it later on. See below.
xCORE-XA
Dimensions (PCB): 120 mm x 60 mm (xCORE-XA).
The processor on board has one tile with 7 logical cores and one ARM core available for the user.
I bought this rather nice board from XMOS because the combined-with-ARM architecture triggered me. But then, XMOS has discontinued the board (and the processor), read about it here. The xTIMEcomposer IDE also compiles, simulates and debugs ARM cores, which is very nice.
I did use it. See My processor to analogue audio equaliser notes
xCORE microphone array
Update 08Mar2022: Message from Digi-Key: The XCORE MICROPHONE ARRAY EVALUATION BOARD XK-USB-MIC-UF216 has reached end-of-life EOL status to become obsoleted (here). Luckily I have two, which is all I need. But buying an external PDM mic board, like 219:[14] and using any xCORE development board will do the trick, I assume. Or, best of all, have a look at the XMOS Voice or Audio categories. I myself have an XK-VOICE-L71 pending future discoveries (here).
Update Sep2021: I use the DEV KIT FOR MICROPHONE ARRAY of type XK-USB-MIC-UF216 for my Beep-BRRR lab box, see 219:[My Beep-BRRR lab box]. It’s here at XMOS.
xCORE-200 eXplorerKIT
Update 5Jan2023: xCORE-200 eXplorer kit will soon reach end-of-life EOL status to become obsoleted! See Status of XCORE-200 EVALUATION KIT (XK-EVK-XE216). However Digi-Key would still have some left, so it’s not in the official EOL list yet.
It’s at https://www.xmos.ai/xcore-200/.
Dimensions (PCB): 105 mm x 80 mm (xCORE-200 eXplorerKIT). See photo below.
(The short side is extended to 147 mm with the XTAG3 board connected).
The processor on board has two tiles with 8 logical cores each available for the user. Plus lots of sensors and I/O. It needs an XTAG3 (XTAG-3) adaptor for USB debugging, so debug support isn’t really built in. But the XTAG3 is ok.
I like this board. This is my present platform for XMOS. I have blogged about it My xCORE-200 eXplorerKIT notes (WiFi).
XCORE.AI evaluation kit (was Explorer board)
2023.01
Update 5Jan2023: XCORE.AI EVALUATION KIT (XK-EVK-XU316) is available! But I don’t know if it would work with xTIMEcomposer 14.4.1. Stay tuned: Andy writes on 5Jan2023 (here) that «I have it working in xTIMEcomposer, including debugging. I don’t see why you can’t use the X3 instructions as it uses the entire V15 SDK rather than just an .xn file. Basically you overwrite the files in the xTIMEComposer folder with the files from the V15 sdk from GitHub and it all seems to work (so far!).»
2022.08
Update 12Aug2022: It’s called XCORE.AI EVALUATION KIT (picture) and is shown at https://www.xmos.ai/xcore-ai/#eval-kit. I guess they must have a lot of experience with it now, after all these years.. But I don’t know when I can buy one. Or does it reflect the path of the processor, or tools, or work force or work for special customers? I don’t have a clue. (But so far I am rather happy with my mic array board and xTIMEcomposer 14.4.1)
The board is 100 * 90 mm.
2020.05
«The xcore.ai Explorer Board which will be available by August 2020» (here, from this competition:)
I have puzzled the picture (below, lowest) from the XMOS puzzle competition at LinkedIn (here). (I did not discover it before too late, the deadline was on 1May2020. But it was fun to puzzle – even if I wasn’t able to fit the pieces 100% (not sure if it’s possible, either..) (maybe there are pieces from two type of boards, one with a smaller processor than the other..?).
The approximate size should be (disclaimer!) 100 mm * 87 mm (by comparing with the xCORE-200 explorer kit, the dotted rectangles should have the same length) (Facit 2022: see above).
I will not speculate about the content. As long as I get a processor, XC and xTIMEcomposer I’m fine (note 200:here).
Asides
Thanks to a student paper! These were just too interesting not to list them up here. My own words, of course:
Espruino JavaScript boards
Update 2Sep2021: These boards have an embedded JavaScript (JS) interpreter. See https://shop.espruino.com/espruino-boards by PUR2 Ltd / Gordon Williams.
Boards with Apache Mynewt OS
See https://mynewt.apache.org. Lost of functionality built in, running on a long list of boards.
WASP-OS
Observe the WASP-OS, which runs MicroPython: https://wasp-os.readthedocs.io/en/latest/index.html. At the time of writing (2Sep2021) it runs on Pine64 PineTime, The wasp-os simulator, Colmi P8 and Senbono K9 (whatever these are). But it looks like it has a a lot of functionality. May it be installed on Arduino ARM boards?
Conclusion and todo list
Outdated
2Sep2021: Outdated, but interesting when looking back at it:
This chapter (as mentioned below) is referred to in My Piggyback WiFi1500 sliceCARD, My WiFi101 library port and Me relying on relaying BLE?. In other words, this is my TODO list for fall 2017 and winter to spring of 2018.
- Done. Buy the Adafruit Feather M0 Basic Proto with ARM. Use Arduino IDE
- Done. Buy the Adafruit ATWINC1500 WiFi Breakout board, and use (1) to configure and upgrade it (if needed). Use Adafruit «learn» pages
- Oct2017: I did the above. It’s described in two notes: My Piggyback WiFi1500 sliceCARD and My WiFi101 library port
- Started 12Dec2017: Get the [lib_webserver] (search for it inMy xCORE-200 eXplorerKIT notes (WiFi) ) up and running on the xCORE-200 eXplorerKIT. This is 100% in the XMOS world. I would need this if I used the Ethernet port. And I could perhaps also use this plus parts of WiFi101 to connect the Adafruit ATWINC1500 WiFi Breakout (2999)
- 17dec2017: I have turned into a major problem. This turned out not to be so simple if I’m going to use XMOS SW. It doesn’t seem to exist for the xCORE-200 eXplorerKIT which uses RGMII (not MII) with its PHY. See XCore: “WARNING: .. There could be API incompatibilities” BUILDING AN00122_using_webserver_library
- I will still try to do this later on, as the newest XMOS web server is more general, like having a file system for HTML files with dynamic data. And I have discovered that [lib_ethernet] covers both MII and RGMII (as used by AN00122). Search for lib_ethernet at My xCORE-200 eXplorerKIT notes (WiFi)
- Starting Christmas 2017: Dropped Bluetooth Low Energy (BLE). Going for a simpler(?) packet radio solution, see My aquarium’s data radioed through the shelf. Jan2018: I will try to port the RadioHead radio library into the xTIMEcomposer. This is going to be very interesting. I guess I have to deal with the comcurrency part since I need my aquarium code to also run, the low level pin control and using the XMOS SPI library. I will use the startKIT because I need that to run first.
- Merge Atmel, Adafruit and XMOS code (drivers) to make a web server in XC with (2) on the xCORE-200 eXplorerKIT. Use XMOS xTIMEcomposer IDE. See above point 3, sub 2.
- See if that web server may be moved over to my startKIT-based aquarium controller, code space allowed. Use XMOS xTIMEcomposer IDE
- Then, if 5 is difficult or not possible, try to see if I can use Bluetooth Low Energy (BLE) from the startKIT to a new box with an xCORE-200 eXplorerKIT board. I have described this in yet another new blog note: Me relying on relaying BLE?
- Aside: In the longer run I’d want to have a look at the Netatmo architecture to see if I could export data from my aquarium to Netatmo’s servers via Netatmo connect. I have a Netatmo Weather Station. I have registered myself on the Netatmo Forum. I think it’s the Weather Station Web Application I would need to look further into
- 30Aug2018: I dropped both WiFi and BLE. However, I have now ported (or rather rewritten) the RFM69 library and it is in fact running! Have a look at My aquarium’s data radioed through the shelf. It is even running inside my startKIT-based aquarium controller box, together with the aquarium sw. After learning about what
[[distributable]]
and[[combinable]]
can do with number ofchanend
s needed. This was the background for a small lecture, see CPA 2018 fringe. I am now working on a radio client runing in an xCore- 200 eXplorerKIT
As an engineer I am concerned that I should end up with a «product». However, as a retired engineer I will try to enjoy the road even more than I did at work. Therefore I am not after the shortest path, but the most interesting part.
Scratchpad 1
Efficient Computer Corp.
This company is new, but they have developed a very exciting processor. From [1] I read:
«The architecture originates from more than seven years of research conducted at Carnegie Mellon University. .. Efficient Computer emerged from stealth mode this week, revealing their «Fabric» chip design. In a press release, Efficient Computer announced that it has already implemented the Fabric processor architecture in its ‘Monza’ test system on a chip (SoC). .. So what’s their secret sauce? The details get pretty technical, but the key idea behind Fabric is optimizing for parallelism from the ground up. .. Efficient’s software stack also supports major embedded languages such as C, C++, TensorFlow, and some Rust applications»
I am very excited to perhaps learn about their «task model» or task architecture. It is no coincidence that I placed this piece of news on a mostly XMOS note. However, reading their paper [4] (referenced at [3]) I learn (also from an article study group that I attend) that in RipTide they map rather small test programs (like dmm
, sort
and fft
) onto a Coarse-Grained Reconfigurable Array (CGRA). CGRA delivers higher functionality than ASICs. Most of the code is mapped onto an array of 6 x 6 processing elements (PE), but a RISC V scalar core also does some of the work defined in the C programs (especially for the fft
). The main goal here is energy effectiveness. With that goal, some next steps would have the time to wait, where for other designs more complicated solutions would have been needed. The architecture here is one where «RipTide implements asynchronous dataflow firing via ordered dataflow«, where a PE will wait for a set of conditions, buffered from other PEs. So to talk about «task model» here probably is not very meaningful, even if «outer» and «inner» loops seem to be mapped into PEs in rather complex ways. This is much above my head, but the smell of it is rather interesting.
The PhD thesis by Graham Gobieski certainly shows some advanced thinking. It’s referred in [3].
[1] refers to Efficient Computer’s blog note at [2].[1] Startup claims 100x more efficient processor than current CPUs, secures $16M in funding by Zo Ahmed on March 10, 2024, 9:36 AM at TECHSPOT
[2] Efficient Computer raises $16M to solve computing’s energy problem by Brandon Lucia, Founder & CEO, March 7, 2024
[3] https://efficient.computer/technology
[4] RipTide. A programmable, energy-minimal dataflow compiler and architecture by Graham Gobieski, Souradip Ghosh, Marijn Heule, Todd Mowry, Tony Nowatzki,Nathan Beckmann, Brandon Lucia
References
Wikipedia: Arduino, BeagleBoard/BeagleBone, Go/Golang programming language, inmos, Limbo programming language, occam programming language, Plan 9 operating system from Bell Labs, Pmod Interface, Raspberry Pi, Single-board computer, Single-board microcontroller, transputer type microprocessor, xmos