RoadTest: XMOS StartKit
Evaluation Type: Evaluation Boards
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?:
What were the biggest problems encountered?: Getting to know the architecture and supporting documentation, examples, and libraries is not done over night.
The XMOS startKIT is an entry level devkit for the XMOS multicore MCU. In the following, we will go through the hardware and try it out along with the accompaning software.
The startKIT is a single credit card sized board. It includes the XMOS xCORE-Analog A8-DEV, an 8 core MCU running 500 MIPS. There is also included a 256 KB Flash. For experimentation purposes there is also included a 3x3 matrix of LEDs, a push-button switch and 2 touch sensors with 4 zones. All important pins of the MCU are broken out into 0.1" headers. A seperate header compatible with the Raspberry Pi GPIO header is provided for easy integration with the Raspberry Pi. A micro-USB socket is provided for programming, debugging, and power.
The startKIT comes in a small hazzle free box. There is no documentation, cables or software provided in the box. You need a micro-USB cable to access the startKIT, and all software and documentation is located at www.xmos.com/startKIT, where you must create an account.
None of the 0.1" headers are populated, so you have the choice of customization to your needs. First thing I did, was to solder in some female pin headers for most headers, and some male pin headers for the Raspberry Pi headers, so a cable can be used to attach to the Raspberry Pi.
Programming the startKIT
The accompaning development environment is like most others based on the popular Eclipse IDE. In addition to editing, building and uploading firmware to the startKIT, the IDE has extensive support for debugging. In addition to debugging the running firmware over the wire, there is included an oscilloscope visualization called xSCOPE. This enables the developer to analyze a trace, either offline or online. The only thing you have to do to use this, is to instrument your firmware through calls to the xSCOPE library.
The startKIT is programmed in the programming language XC - with is an extension to C. The language adds highlevel support for ports, tasks, and message passing. It enables the user to easily develop for the multicore processor and gives RTOS like functionality out of the box. The programmer can start a task on a core of his choice - and the tasks communicate through message passing. The message passing model is quite high level as well. It involves declaring a type safe interface - and the syntax for both sending and receiving messages is simple.
There is an extensive collection of libraries, that are easily imported into your project. These are called xSOFTips. If you need to communicate over I2C, you simple find the I2C Master xSOFTip and import it. Each xSOFTip is documentated, and examples are often supplied.
All the documentation is available on the web site for the startKIT. There is an extensive library of tutorials and examples, and if you don't find the answer in the documentation, there is a quite lively XCore Community where users and XMOS employees participate.
It was pretty easy to make my first blinky - simply by finding one of the examples, studying it, and rolling my own version. If there are no examples of a specific need (e.g. how to use the ADC), you will find your answer in a xSOFTip (e.g. the xCORE-Analog Support Library.)
My Example Application
Just to try some of the many features out, I started developing a simple servo tester. A potentiometer is acting as a variable voltage divider and attached to an ADC channel and a PWM signal is generated at a GPIO pin. There is no doubt, that the startKIT has a learning curve that is steeper than that of the Arduino. The ADC channel is read by one task running on one core. Another task is taking care of controlling the PWM output suitable for a servo. It took some effort to understand how implement this, but through the use of the supplied documentation and xSOFTips, it is possible to get through this project.
The startKIT is a good entry level devkit that enables you to getting started with the xCORE architecture. You can easily build of a protype circuit or play around with the builtin LEDs, button, and touch areas. Along with the software, libraries, documentation, and tutorials you are in for some great fun in the cold and dark winter evenings (I live in Denmark.) The learning curve is quite steep - just the shear amount of documentation, examples, and libraries can overwhelm you at times.