I recently received an xCore 2000 eXplorer development board in the post from the kind people at XMOS. Admittedly I was not familiar with this board or indeed with the device that is at its core. Having read through the datasheets, board hardware descriptions and spent a lot of time on their website, I have to say that I am impressed.
At the heart of the eXplorer is the xCore 2000, which contains sixteen 32-bit MCUs skilfully arranged into two banks of eight. These banks are connected to a number of control / communication elements and IO peripherals. Within the nomenclature of the XMOS world, a tile can contain between 5 and 8 of these cores. Control and communication is performed by the xTime Scheduler and the xConnect Switch. The xTime Scheduler acts in many ways as a pre-emptive operating system would — waking the cores when IO, timer, or inter core communication events take place.
Communication between cores takes place using the xConnect switch, which enables one of three modes of communication in increasing complexity depending upon the needs of the application.
Of course all the cores in the world are no good if we cannot get data on and off the device. With the xCore2000, we also have a number of peripherals to enable interaction with the real world with USB, Ethernet, and GPIO provided. Due to the flexibility of the GPIO, we can implement a UART very simply via one of the provided libraries.
Programming the device is actually pretty simple using the provided xTime Composer Software Development Environment, which is free to download and use from the website. This gives us the ability to program in C, C++ and xC, which is an extension of C and C++ to ease software development for multiple cores.
One of the main functions of xC is to allow us to run C functions in parallel in different cores speeding up the execution time. xC also provides us with methods of communicating between the cores using the xConnect mentioned above.
Like all SDK’s these days, xTime Composer is based upon Eclipse which provides a familiar environment for developing applications.
One thing about Composer that really leaps out at me is integration of the SW libraries. This allows you to look at the supplied libraries to speed up development time.
Using these libraries is incredibly easy: One just needs to scroll through the library components as shown in the lower left window, and select the desired one. With your library selected, the right hand panel will open up with information on the library and provide links to application notes and give the ability to import the source code into your workspace. Many of these libraries come with examples as well, which is great to get us started.
Having developed your application, you need to program it using the JTAG interface via the XSYS interface. This interface provides a host of debug and profiling options.
Overall I am very impressed with the eXplorer board and the XMOS concept. I can see that over the next weeks, I will be experimenting a lot with this board.