IraqiGeek's Blog

xTIMEcomposer Hello World!

So, now that we're introduced to the XMOS StarterKit, covered the basics about the XCORE architecture, and xC programming language, its time to dive in and make our first program.
xC programs are developed, compiled, and debugged from within XMOS' xTIMEcomposer IDE (Integrated Development Environment). The IDE is available for download freely at XMOS' site after registration.
If you haven't already downloaded and installed it, go ahead and do it. I'll wait :)
Now that we all have xTIMEcomposer installed, the first thing we'll need to know about it is that it is based on Eclipse. This means that if youe ever want to figure how to do something in xTIMEcomposer, just google how it is done in Eclipse. Chances are xTIMEcomposer will be the same.
So, launching xTIMEcomposer for the first time, we'll be greeted with a small window asking where we want to locate your workspace. A workspace is the folder containing one or more projects that may comprise a bigger application. Like Eclipse, xTIMEcomposer will default to a folder named workspace inside your user's home. I like to create a folder there that groups things based on type or category, so I created a folder for my XMOS projects. Hence, my workspace is located at c:\users\USER_NAME\XMOS\workspace. You might also want to check the "Use this as the default and do not ask again" checkbox if you don't plan on working on several XMOS projects at the same time to skip this step every time you launch xTIMEcomposer.


When we launch xTIMEcomposer for the first time, it will ask us to login using the same username and password we used to register at the XMOS site before downloading it. Note that username by default will be your email.


Once we are logged in, its time to create a new project for our Hello World program, To do this, click on the File menu, choose New, and select xTIMEcomposer Project


The new project wizard will open. Under Project Name write "Hello World". Under Location verify Create new project in workspace is selected. Under Create a new application based project radio button click on the Target Hardware drop down, and select "XMOS starterKIT".


Then, make sure the Copy XN file into new application is checked, and click Finish


xTIMEcomposer will take a couple of seconds to create your new project, and then we will be presented with your project's workspace:


For now, we are concerned with three areas in the workspace only:

  • The top left window titled Project Explorer: This is a tree view of your new project and all its resources (source files, make file, XN file, etc).
  • The top center big window: This is your code editor, where we will write all your program code. A code file is opened by double clicking on its name in the Project Explorer. Note that the code editor is tabbed, so we can have several code files open at the same time.
  • The bottom center window titled Console: This is where xTIMEcomposer will output everything it has to say, and where your StarterKit will output its messages (like print commands).

The first thing we want to do with our new project is include XMOS' library files, so we can reference those libraries and use their functionalities. To do this, in the Project Explorer, right click on the project's name (Hello World) and select Properties from the context menu (note the "Alt+Enter" shortcut next to it? This is the shortcut to access a project's properties window quickly):


The project properties window is comprised of two areas:

  • On the left, a tree view of all the properties available for the project.
  • In the center region is a list of all the include directories that will be referenced in our project
  • And on the right, a details window showing all the options and the possible values for each.

From the tree view, expand the C/C++ General group, and click on Paths and Symbols. The properties window will update to show the properties and values of the paths and symbols of the project.
Under the Includes tab, click on C Source File under Languages, then click on the Add button on the right:


In the Add directory path window that will appear, we will write the full path of the directory (folder) we want to add to the list of include directories of our project under Directory. Make sure to check both Add to all configurations and Add to all languages checkboxes before clicking OK. There are four directories we want to add. Assuming you installed xTIMEcomposer under "C:\Program Files (x86)\XMOS\xTIMEcomposer", they are:

  • C:\Program Files (x86)\XMOS\xTIMEcomposer\Community_13.0.1\target\include
  • C:\Program Files (x86)\XMOS\xTIMEcomposer\Community_13.0.1\target\include\c++\4.2.1
  • C:\Program Files (x86)\XMOS\xTIMEcomposer\Community_13.0.1\target\include\c++\4.2.1\xcore-xmos-elf
  • C:\Program Files (x86)\XMOS\xTIMEcomposer\Community_13.0.1\target\include\gcc

So, we will want to repeat this step four times:


After we've added all four directories, our Include directories list should look like this:


Click the Apply button to add those four directories to our project. Since we are updating the project's references, xTIMEcomposer will ask if we want to rebuild our project in order for it to index the files in those directories and provide autocomplete (intellisense) for those new files. If you don't want xTIMEcomposer to ask you this everythime you add a new include directory, make sure to check the Remember my decision checkbox before clicking Yes:


After a couple of seconds, our will be updated to reflect the new include directories that we just added. Those will appear under an Includes folder in the project tree:


Now, we can add our "Hello World" code to our project! In the "HelloWorld.xc" file in the code editor area, type the following code: [code language="cpp"] #include<stdio.h> void main(void) { printf("Hello, World!\n"); } [/code]


Now, let's try to build our project to see if it has any errors. Click on the Project menu and select Build All (note the Ctrl+B shortcut)


xTIMEcomposer will begin building our project. Being based on Eclipse, it is possible to tell xTIMEcomposer to build our project in the background. In fact, we can tell it to always do that when building our projects:


If our project has no errors, the Console will say "Build Complete" at the end of the build process.
The only thing left for us to do now is run our project. But before doing that, make sure the StarterKit is connected to your computer and that Windows has finished installing its drivers.
To run our project, click on the Run menu, and select Run (guess what "Ctrl+F11" does?):


Since this is our first time running a project from xTIMEcomposer, a window will pop up asking us to select where we want to run our program. Click on XMOS starterKIT connected to... and click OK


If everything goes without errors, xTIMEcomposer will upload our program to the StarterKit, and the StarterKit will run it. Since the only thing our program does is print a "Hello World!" message, it should appear in the console of xTIMEcomposer


Congratulations! You have just written and run your first XCORE program :)