针对单个tile编程
本节介绍了在单个tile上构建和运行简单程序所需的一些关键工具。
要在硬件上运行,需要以下 XMOS 评估板之一:
- PXUA-XU316-KIT(搭载 xcore.ai 处理器)
- XK-EVK-XU316(搭载 xcore.ai 处理器)
- XCORE-AI-EXPLORER(搭载 xcore.ai 处理器)
- XCORE-200-EXPLORER(搭载 XCORE-200 处理器)
在运行示例时,将以下示例中使用的target字符串(-target=XK-EVK-XU316)替换为正在使用的板的target字符串,例如:-target=XCORE-AI-EXPLORER。
支持以下板和 XTAG 类型组合:
- PXUA-XU316-KIT 板需要将 XTAG3 调试器通过转接板插入到其XTAG连接器
- XK-EVK-XU316 板搭载 USB micro-B 接口的板载 XTAG4 调试器,连接到PC即可使用
- XCORE-AI-EXPLORER 板需要将 XTAG4 调试器插入其 XSYS2 连接器
- XCORE-200-EXPLORER 板需要将 XTAG3 调试器插入其 XSYS 连接器
构建一个可执行文件
下面是一个简单的示例,它包含在单个源文件 main.c 中:
#include <stdio.h>
int main(void) {
printf("Hello world!n");
return 0;
这个示例使用 XCC 工具编译 main.c。输出是一个 xcore 可执行文件,保存在 XE 文件 a.xe 中:
xcc -target=XU316-1024-QF60B-C24 -g main.c
选项 -g 告诉 XCC 工具添加调试信息。这将在后面用到。
目标定义
选项 -target=XU316-1024-QF60B-C24 为工具提供了目标(处理器或板子)的描述,目标是应用程序执行的硬件平台。这个特定的 XMOS 目标描述是随 XMOS XTC 工具一起提供的(在 target 子目录中)。用户通常会提供他们自己的板子的描述,或者基于 XMOS 评估板的描述。
板子的描述包括了关于 xcore 设备的信息,它们的架构,外部闪存设备和子系统时钟频率等。
XE 文件的内容
XE 文件通常被称为可执行文件。然而,它实际上是一个文件包,它包含了目标定义中每个 tile 的 ELF 文件。
在模拟环境中运行
这些工具包括一个名为XSIM的接近周期精确的硬件模拟器。XSIM不仅仅是对xcore tile本身的模拟--而是模拟tile所在的整个package。因 此,在这个例子中,它模拟了XU316-1024-QF60B-C24 package中的两个tile。
xsim a.xe
> Hello, world!
在硬件上运行
XRUN工具用于在硬件上启动可执行文件。
将您的XTAG3调试器将你的PXUA-XU316-KIT开发板连接到你的主机 。请确保你也为开发板本身提供了电源。
使用xrun --io运行a.xe:
xrun --io a.xe
> Hello world!
要让XRUN在主机电脑的控制台上显示应用程序的printf输出,就需要使用–-io选项,但这也会让它等待应用程序终止。
--io 选项只用于快速示例或者没有连接到XTAG调试器的XSCOPE XLINK接口的平台。因为该选项会带来等待延迟并破坏XMOS的实时性。
如果你在这一步出现了问题,请确认您的XTC15工具已经安装成功。
恭喜!您刚刚建立并执行了你的第一个xcore应用程序。
使用XGDB在硬件上调试
当你使用简化的XRUN工具时,你已经间接地使用了XGDB调试器。然而,如果你想更深入地了解应用程序是如何运行的,你需要直接使用XGDB调试器:
xgdb a.xe
这会启动一个新的调试会话,有一个新的(gdb)提示符。你现在必须connect到连接的硬件,并load应用程序代码:
(gdb) connect
...
(gdb) load
...
从现在开始,在这个单线程程序上使用XGDB的方式和使用普通的GDB一样。例如,创建一个断点,运行到断点处,步进到下一行,然后退出:
(gdb) break main
Breakpoint 1 at 0x400fc: file main.c, line 4.
(gdb) continue
Breakpoint 1, main () at main.c:4
4 printf("Hello world!n");
Current language: auto; currently minimal
(gdb) step
Hello world!
5 return 0;
(gdb) quit
使用XGDB调试
可以使用XGDB在XSIM模拟器上调试。步骤和使用XGDB在硬件上调试一样,只是使用connect -s来连接到模拟器而不是硬件:
(gdb) connect -s
...
(gdb) load
...
总结
在这个简要的命令行工具概览中,你成功构建了一个应用程序来生成一个XE文件。你已经在硬件上运行和调试了XE文件,并在模拟器上做了同样的事情。
通过这次导览,你已经使用了以下工具: