XMOS StartKit - Review

Table of contents

RoadTest: XMOS StartKit

Author: danielmcgraw

Creation date:

Evaluation Type: Independent Products

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?:

Detailed Review:

image

startKIT is a low-cost development board for the configurable xCORE multicore microcontroller products from XMOS. The onboard microcontroller is an xCORE-Analog A8-DEV and contains 8 32bit cores acessible to the user (it acutally has 16 cores but 8 are reserved for debug), 4 ADC channels and provides a PCI-E slot for expansion boards to be connected. It arrived in a well padded box with an explanation of the components and information on how to get started with the kit. It measures about 93mm x 50mm so is small enough to be embedded in larger projects. It is powered and controlled through a micro USB cable which is not supplied but these are very common now and I managed to pick one up at the local computer store for 70p. The first thing that struck me with this board was the vast amount of GPIO it had, I counted 46 free GPIO pins and that is not including any used for the 3x3 LED matrix, the tac switch and the capacitive sliders.image

 

When the micro USB cable is first connected, 5 of the LEDs begin a fade in / fade out sequence. I think this is a nice touch as it indicates that the board is working correctly and it hasn't been damaged in transit. However, the PWM used to control the brightness appears to be set very slowly as the LEDS can actually be seen flashing on and off to create the illusion of fading which I think is a shame. For those who prefer pictures rather than words, here is a quick overview of the features of the board.

 

 

 

Once we have connected our board, we need to download the software that allows us to program it. The instructions for this can be found in the box. By entering the web address given (www.xmos.com/startkit) it take you to this page and we select the big green button, download xTIME composer.

image

 

To download this software requires you to create an account. When this is completed, you are sent an email with a link to begin the download. I had to try and register 3 times as the website kept crashing so be patient. However, the software installed quickly and doesn't take up too much space on your hard drive, approximately 260MB. After the installation, I found it had filled my desktop with shortcuts to everything, I deleted all except the xTIMEComposer Studio as I didn't think I would need them. Once Composer Studio is run, it offers where to save projects. By default this is in a folder called "workspace" in the main hard drive. I decided I wanted my projects elsewhere so redirected it to a folder in My Documents called "xmos".

When the main screen opens and you've logged in, I used the "Detect connected hardware" option to ensure I set it up for the right thing at which point it told me I hadn't connected any XMOS hardware. It was all going so well!


The startKIT was appearing in device manager so it appeared I had no driver software.

<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>

It turns out that I'd unselected the checkbox during installation "Install USB to JTAG drivers" which is critically important so make sure these are installed. Now the startkit appears in Device Manager in the category XMOS Devices and xTIME now detects it.

<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>

 

I was now left with a blank screen in xTIME Composer which wasn't very helpful. Googling showed that example projects could be found using the community option in the box in the bottom left corner. These projects could be dragged and dropped into Project explorer window.

<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>

Here I'm copying noughts and crosses across. Once this is completed, xTIME shows which modules need to be downloaded from github for this particular project.

image

The project and any modules required are then displayed in the Project explorer window.

image

Ensuring that the option that starts with >app is selected, Use the option Project > Build Project to build the needed files. Then use Run > Run or the green play icon to download the file to the startKIT. You will be presented with the option to simulate or download to the startKIT.

image

I selected the startKIT and the top left LED started flashing. To see the game, please see the video below.

While I was running the software, the microcontroller ran warm to the touch but not hot.

 

PROGRAMMING

The XMOS chip is programmed in C or C++ with a few extra commands used to handle multitasking abilities. Codes containing these extra commands with have the suffix .xc instead of .c to show they are a special XMOS version. Programmers with any knowledge of C will have no problems so I won't go into detail explaining that, only the bits specific to XMOS. The only extra command I had to use was the par{} command. Any tasks called within a par command will be executed in parallel and the microcontroller will allocate a core to each task. For example

     par{

          task1()

          task2()

          task4()

     }

will execute the procedures called task1, task2 and task4 at the same time on different cores which is a very useful ability. For detailed information on XMOS specific commands, see the programming guide found here (https://www.xmos.com/published/xmos-programming-guide?secure=1).

 

FLASHING LEDS

Flashing LEDs is the low level equivalent of the infamous "Hello World". This is more challenging on the Startkit due to a number of interesting complications, the reasoning behind I don't understand.

Instead of being able to select a GPIO pin or even an 8 bit port, XMOS declares things in variables size ports

Port Size(bits)           Number of ports   Names

1

16

1A, 1B, 1C, 1D, 1E, 1F, 1G, 1H, 1I, 1J, 1K, 1L, 1M, 1N, 1O ,1P

4

6

4A, 4B, 4C, 4D, 4E ,4F

8

4

8A, 8B, 8C ,8D

16

2

16A, 16B

32

1

32A

 

As the XMOS only has 64 GPIO, not all of these combinations are possible at the same time so care must be taken not to overlap ports.The layout can be found in the datasheet here https://www.xmos.com/download/public/startKIT-Hardware-Manual%281.2%29.pdf

Instead of using the equals sign (=) to change a port or variable the symbol :> or <: is used so for example to set port p to value 1 would need

     p<:1

the arrowhead points towards the object which is having its value changed.

Also the LEDs are active low ( they turn on when their corresponding bit is low), I have no problem with this but it is confusing when setting the whole port at once remembering to invert everything. I ended up writing a routine called led(x) which inverted all of the bits and sent that to the port the LEDs are on.

 

These small difficulties aside, the XMOS StartKIT is a great introduction to multicore microcontrollers and at only £9.69 from element14 is very reasonably priced. The only difficulty is that the exact model used in the StartKIT with 8 cores dedicated to debug is not available for individual purchase to be included on a custom PCB but there are alternatives and I'm sure, before long, debug code will be released.

 

My thanks to element14 for the oppurtunity to take part in this Roadtest and I look forward to experimenting with this excellent microcontroller.

For further information, have a look at the work of shabaz on element14 (link below) to see his progress and I will update this review and I build projects using the StartKIT.

http://www.element14.com/community/groups/internet-of-things/blog/2014/05/05/xmos-startkit-introduction-terminologyarchitecture-getting-started-and-example-programs

 

Dan McGraw

M0WUT

Anonymous