Archive for the ‘XMOS’ Category

FreeRTOS port for XMOS XS1 processors

Monday, February 22nd, 2010

I have ported FreeRTOS to the XMOS architecture.

The project can be downloaded from the project page on the XCore website. This page will always hold the newest release of the port.

A mirror for the current release can be found here.

3.5″ TFT module driven by XMOS processor

Friday, December 25th, 2009

I have recently bought an 3.5″ TFT module (18 bit, 262K colors) from ebay. The TFT display is mounted on a PCB with all data lines fanned out to 0.1″ connectors. The display is (i think) a Crystalfontz CFAF320240F-T-TS (datasheet). The display has also a touchscreen.
The PCB has a SPI touchscreen controller, SD card holder and place to solder a SPI flash chip.
The LCD controller is a Solomon SSD2119 chip.

You can interface the display using a parallel 8080-series bus using either 8 or 16 bits or SPI using 3 or 4 wires.
This is limited by the PCB, the controller can also do 9/18 bit parallel 8080-series bus and 8/9/16/18 bit parallel 6800-series bus.

I have hooked this display up to my XMOS XC-1 development board and i am using the 16 bit 8080 interface.
The controller starts up in 16 bit mode (65K colors). I am currently still using this mode as it is way more efficient than the 18 bit mode because i am using a 16 bit parallel bus. My initial code can refresh the display with about 50FPS. My code is nowhere near mature at the moment and i am planning to write a driver for it, which i will publish later.

color test

color test

Video playback on Nokia 6100 display

Friday, December 25th, 2009

Using a XMOS processor and a FTDI vinculum embedded USB host chip i have managed to play video on a nokia 6100 (knockoff) display with a frame rate of 16.66 FPS.

Playing 2012 trailer at 16.66FPS (the RAW file was created for 12FPS and thus the movie plays a little bit too fast):

Playing Family Guy at 16.66FPS

I have converted the video to still images and converted them to a 12 bit RAW format.
The RAW file is uploaded to an USB stick with FAT16 file system.

The FTDI vinculum chip can reads from the USB stick and also implements the FAT16 file system, so the XMOS processor can easily open and read/write files without having to take care of the file system or USB stack.

The concept of the FTDI vinculum is very good, only the implementation could be a lot better.
The vinculum chip is in fact just a microcontroller with special USB hardware and runs a firmware.
There are several firmwares available for somewhat different functionality.

Unfortunately these firmwares (I only used the VDAP firmware though) aren’t that stable.
For example the SPI interface seems to have a bug which makes it totally unusable.
I have been able to read from the SPI interfaces but when i try to write to it the device locks up.
How do i know that the device locks up? Normally if you remove or add an USB device (USB stick) it will write a message to the transfer buffer that can be read. However when it locks up it does not responds to removing/adding a device and you will not read any new data.

Luckily the chip has two more interfaces: UART and parallel.
They both seem to work as expected. I have used the parallel interface because it can have higher transfer rates (The UART is limited to 3Mbit/sec).

Now the vinculum chip has two different protocols: a human optimized ASCII protocol (extended command set) and a machine optimized ‘binary’ protocol (short command set). Unfortunately this machine optimized protocol isn’t that machine friendly at all and in fact is just a shortened ASCII protocol.

Unfortunately my code is nowhere near mature so i won’t publish it at this moment.
Besides that the vinculum chips is limited to about 400KB/sec (good for 16FPS with 25KB RAW frames).
I think a SD card will be a better solution to play video from a RAW format.

Nokia 6100 display driver (PCF8833 controller) for XMOS processors

Friday, December 25th, 2009

I have created a driver for the Nokia 6100 (knockoff) display using the NXP PCF8833 controller.
This driver is targeted at the XMOS processor architecture.
This driver is largely based on Jamie P. Lynch’s driver.

For more information and downloading the project see my project page on XCore Exchange, the community for XMOS processor enthusiasts.

Demo's

Color test

XMOS XC-1 review

Saturday, March 28th, 2009

Intro
A few months ago i found XMOS a semiconductor startup from Bristol.
XMOS has designed a very innovating new embedded processor (XS1-G family). They call their technology “Software Defined Sillicon”. Components that are traditionally implemented in hardware can be done in software running on the new processor. You can think of UART’s, SPI, I2C, PWM and even Ethernet MAC and USB 2.0 MAC.
I decided to order an evaluation board, the XMOS XC-1. I have received it more than two months ago and had some time to play with it (although i wish i had some more time).

Architecture
“Software Defined Sillicon” devices are made up of Xcore tiles. Each Xcore has its own dedicated memory. Each Xcore can run 8 threads simultanously. This means that the quadcore XS1-G4 can run 32 threads simultanously! If the chip is running at 400MHz (400MIPS), each thread is guaranteed to be able to use 50MIPS, but each thread is limited to 100MIPS. This means that you cannot run 1 thread using all the processor time.  Context switching between threads are done by a hardware scheduler and based on events (i.e timers, I/O, communication). Threads that block waiting for an event are not scheduled.  Because each thread has its own set of registers context switches do not take time. This makes it possible that an interrupt can be served next-cycle!. Threads can communicate with eachother through Xlink channels. These Xlinks makes it possible to communicate between cores. It is even possible to communicate between devices, making possible to build a grid of SDS devices.

Xcore Tile Architecture

Xcore Tile Architecture

Xlinks

Xlinks

XC-1 evaluation board

The XC-1 evaluation board contains just the most basic interfacing components:

  • 12 dual color (green/orange) leds set up as a clock.
  • 4 buttons
  • 4 button leds
  • piezo speaker

The board offers additional expansion ports in which you can solder 0.1″ headers to interface with your own circuit.

If you want to have a lot of interfacing components like color LCD, audio out, ethernet etcetera take a look at the XDK XS1-G development kit.

Pictures of the XC-1

XC-1 Case

XC-1 Case

XC-1 Case opened

XC-1 Case opened

XC-1 Front

XC-1 Front

XC-1 Back

XC-1 Back

XS1-G4 Closeup

XS1-G4 Closeup

More will follow…