XMOS xCORE-USB sliceKIT - Review

Table of contents

RoadTest: XMOS xCORE-USB sliceKIT

Author: tayken

Creation date:

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?: Parallax propeller and FPGAs

What were the biggest problems encountered?: Examples were hard to follow. No simple example exists for this board.

Detailed Review:

I mostly work with microcontrollers and occasionally FPGAs. But not many of them have multiple cores except Parallax Propeller. I also tried using multiple Microblaze MCS softcores with my FPGA boards which were OK. I wanted to compare xCORE-USB multicore microcontroller to both of these systems: How easy is the language to use? Also how easy is the communication between cores? I also wanted to test out the software side: I mainly use Ubuntu for my development work and really like companies if they can supply an IDE that works on multiple operating systems. How easy is it to install IDE and drivers? For example JTAG programming cable driver installation is really problematic with Xilinx ISE. I also wanted to test out xSCOPE which couldn't happen due to complexity and time constraints, maybe I'll have time to look at them later.

 

In short this is an advanced development kit and if you don't know anything about XMOS products, this is not the one to start with. For beginners, StartKit is better as it has couple of LEDs and pin headers to connect to things as well as the PCIe connector for sliceCARDs.

 

Kit Contents

The roadtest page and product page don't include everything in the box. Here is a better list and a picture:

  • Core board with 16 core xCORE-USB multicore microcontroller
  • USB A/B sliceCARD
  • Mixed Signal sliceCARD
  • xTAG-2 debug adaptor
  • Power supply with exchangeable plugs for different power socket types
  • USB extension cable to use with debug adapter.

image

This is all the parts of the box assembled together. As you can see the USB sliceCARD is different from the one at product page, but the one from the roadtest page. So this tells me that XMOS does not update their websites often. Also I believe this kit is not enough by itself, I believe GPIO sliceCARD should be added to this kit in order to test some of the example codes. I'll explain this in more detail. The PSU is a nice touch with multiple plugs, I really like it as the kits are sold all over the world an it's better to just connect the suitable plug then going to an electronics store to get an adapter or a PSU.

 

The board

At first, the board looks really good! Switch and swap cards to test different peripherals and don't worry about wiring and cables. Well, actually you cannot worry about cabling as there are no pin headers soldered. No big problem, you can solder it yourself, right? Well think again as my board had these holes covered with solder so I just passed it. This led to me not being able to test some simple LED blink or connect a push button wherever I wanted. As there is no GPIO sliceCARD, I believe this is a big problem. Also the PCIe connectors seem to be badly soldered.

image

In this picture you can clearly see the solder filled header holes and badly soldered connectors. These are the only problems I saw with this board. The sliceCARDs are held in place by only this connector but it is a pretty tight fit. One worry may be connector life as these are not manufactured for multiple insertions.

 

Also Mixed Signal sliceCARD schematics were nowhere to be found on the product page or on the website. I had to search for it. You can get it here.

 

Software

It's actually pretty easy to install the software under Linux, I was really amazed by it! You just download an archive file, extract a folder and you are done! Then run the "xtimecomposer" script under "XMOS/xTIMEcomposer/Community_14.0.0/" and the IDE loads up. One addition may be to have another script which installs a shortcut to your applications list.

 

Also installing drivers are real easy too: There is a folder named scripts with 3 files. You can use "check_xmos_devices.sh" for detecting if the devices are plugged in or not and if the drivers are installed. "setup_xmos_devices.sh" script moved the udev rules file to the appropriate directory and you have installed the drivers. Run the check script to test everything to be sure.

image

GUI looks real nice. There is a help section which talks about XC and how to write functions that run on different processors and how to pass messages between them. There is also an example section which contains all the application notes on the left side. I believe additional sections with devkit names would be better as finding suitable example codes to test is really hard. For some of the examples, I didn't have any LEDs to see or buttons to press at the given pin. Right side gives you a summary view and there are buttons at the very end where you can open up the application note in your browser and also import the code. Code import is really good and especially helpful with complex codes such as USB projects. The application notes are also well written, they give a brief summary, talk about what hardware is needed and then explain the code section by section.

image

Here is where I had a problem (also some others may): As the code given for this device is fairly advanced and because of the no pin headers problem, you cannot edit the code to do your bidding. On one example I tried to use the buttons on my Mixed Signal sliceCARD instead of the default GPIO sliceCARD but these were at different tiles of the hardware. Also the port mapping was completely different, GPIO buttons were connected to two consecutive pins of the same port whereas mixed signal buttons were on different ports altogether. This made editing the code hard. Additional sections about editing the basic code can be given to help the developer understand the code and hardware better. This is what Cypress did for their PSoC4 Pioneer kit (insert link to review). I did say that this was bad but now I believe half and half is better: give half of the code which does something and then tell how to program the rest of the demo.

 

Examples

I tried 4 different examples from XMOS for checking out this devkit. Here is a list and some notes about them:

  • Application Note:AN00124 USB CDC Class as Virtual Serial Port: No sliceCARDs are needed. This is just serial loopback.
  • Application Note:AN00129 USB HID Class: No sliceCARDs are needed. Implements a mouse and draws a square on the screen.
  • Application Note:AN00130 USB HID Class - Extended on sliceKIT: Needs Mixed Signal sliceCARD. Implements mouse via joystick. Picture on the application note shows a different sliceCARD. From that I believe they updated the hardware.
  • Application Note:AN00183 USB CDC Class as Virtual Serial Port - Extended on sliceKIT: Needs GPIO sliceCARD, and we don't have it. But 1 Echo and 7 Timer ticks work. This is probably the hardest example I tried. I tried to implement 6 Read Temperature option but it was a bit complex. It was using and I2C ADC on the GPIO sliceCARD to read the temperature whereas on Mixed Signal sliceCARD the thermistor is directly connected to one of the ADC channels. I also tried to implement button presses but couldn't succeed because of the completely different port-pin mapping I wrote about.

image

 

Conclusion

At the beginning I really liked the idea of this devkit, it felt like Propeller on steroids. However due to some major problems related to kit, I was not able to do everything I wanted to do. Hardware needs some work, I'm not sure if it was my board or not but solder filled pin headers were a deal breaker. Software is really nice, easy to install, divided into different sections to show examples. If you are just starting with xCORE architecture, skip this and get the StartKit which is a more basic version focused towards beginners. This is an advanced board towards USB applications and requires previous knowledge of XC. I believe one problem I had was trying to start from a more advanced section of the code due to hardware constraints. My foundation of XC was not solid, thus I couldn't make the changes I wanted to do. But I'm planning to bite the bullet, clean up the board and start from scratch.

Anonymous
  • Yes, there was a workaround, but these boards tend to be multilayer boards so it is really hard to clean all of them. I will do that but this was a review of the board "as-is", just the parts in the box and no soldering iron work. Another reason is that it just looks bad for a board that represents your work.

  • Although I agree the filled in holes for the pin headers was poor it is easy to work round.

     

    either remove the solder using flux and solder wick or (easier) just solder some  pin headers on without pushing the pins through the holes - no good for high reliability work but fine for prototyping.

     

    MK