快速入门
要编程一个XMOS设备,你可以使用C、C++或xC(带有多核扩展的C语言)。在你的软件项目中,你可以混合使用这三种类型的源文件。要使用xC,请将源文件的扩展名改为.xc,而不是.c。XTC编译器会自动检测到这个文件扩展名,并启用该文件的C扩展功能。
XTC工具提供了完全符合标准的C和C++编译(例如,以.c结尾的文件将被编译为标准C)。应用程序可以包含以xC和C混合编写的代码 - 你可以从标准C中调用以xC编写的函数,反之亦然。
Hello World
让我们从传统的“Hello World”程序开始:
#include <stdio.h>
int main() {
printf("Hello World\n");
return 0;
}
这个程序在C和xC中完全相同。由于XMOS设备是嵌入式设备,只有在连接调试适配器(XTAG)时才会看到打印输出。在这种情况下,打印输出将通过调试适配器传输,并在运行程序时显示在XTC控制台上。
当您编译项目时,工具会跟踪您使用了哪些资源。例如,如果您使用-report选项编译此程序,您将得到以下信息输出:
Constraint check for "tile[0]" (node "0", tile 0):
Cores available: 8, used: 1. OKAY
Timers available: 10, used: 1. OKAY
Chanends available: 32, used: 0. OKAY
Memory available: 65536, used: 1176. OKAY
(Stack: 336, Code: 720, Data: 120)
Constraints checks PASSED.
您可以看到编译器准确地告诉您使用了多少内存(包括堆栈的使用量)。xC语言扩展已经设计成即使在并行运行使用相同内存空间的任务时,您也可以始终获取此信息。
并行运行
xC提供的C语言扩展的一个主要特性是能够并行运行代码。下面的程序同时运行三个执行线程,它们都打印出“Hello World”消息:
#include <stdio.h>
void hw(unsigned n) {
printf("Hello world from task number %u\n", n);
}
int main() {
par {
hw(0);
hw(1);
hw(3);
}
return 0;
}