Skip to main content
欢迎来到PAWPAW技术文档网站了解更多信息

描述目标平台

硬件平台的描述依赖于 XN 文件。XN 文件为 XMOS 编译器工具链提供了目标硬件的详细信息,涵盖了 XMOS 设备、端口、闪存和振荡器等。

XMOS 工具根据 XN 文件中的数据,生成专为目标平台定制的头文件 <platform.h>,并支持编译、启动及多节点程序的调试。

支持的网络拓扑结构

为了实现 xCONNECT Link 网络上的消息传递,必须对网络上的每个节点的路由 ID 和路由表进行配置。这些工具会利用 XN 文件中的信息,针对网络在运行应用之前完成路由设置。

如果 XN 文件中明确指出了路由配置,工具将采用该配置。如果 XN 文件中未包含路由配置,工具会基于网络的拓扑结构,挑选合适的路由 ID 和路由表。对于以下列出的网络拓扑,工具能够自动计算出路由配置。

表1 可自动配置路由的网络拓扑

网络拓扑支持的配置
线型不支持 XS1-G 设备
超立方体二度(一对节点)
三度(4节点环形)
三度(8节点立方体)
四度(16节点规范立方体)
附加树形结构的超立方体不支持 XS1-G 设备

双封装板卡

示例硬件平台展示了一个板卡,上面安装了两个以线型排列的 XMOS L8-64 设备。适用的 XN 描述如下所示。

../../../_images/xn-board.png

图5 示例硬件平台

XN 文件以 XML 声明开头。

<?xml version="1.0" encoding="UTF-8"?>

接下来的代码标志着网络的起始。

<Network xmlns="http://www.xmos.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.xmos.com http://www.xmos.com">

随后的代码声明了两个 xCORE Tile。声明 “tileref tile[2];” 被输出到头文件 <platform.h>

<Declarations>
<Declaration>tileref tile[2]</Declaration>
</Declarations>

接着,代码中声明了一个名为 P1 的封装,内含一个 Master 节点。

<Packages>
<Package Id="P1" Type="XS1-LnA-64-TQ128">
<Nodes>
<Node Id="Master" Type="XS1-L8A-64" InPackageId="0"
Oscillator="20MHz" SystemFrequency="400MHz">
<Boot>
<Source Location="SPI:bootFlash"/>
<Bootee NodeId="Slave" Tile="0"/>
</Boot>
<Tile Number="0" Reference="tile[0]">
<Port Location="XS1_PORT_1A" Name="PORT_SPI_MISO"/>
<Port Location="XS1_PORT_1B" Name="PORT_SPI_SS"/>
<Port Location="XS1_PORT_1C" Name="PORT_SPI_CLK"/>
<Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSI"/>
<Port Location="XS1_PORT_4A" Name="PORT_LED"/>
</Tile>
</Node>
</Nodes>
</Package>

Master 节点是一个 TQ128 封装的 400MHz XS1-L8A-64 设备,由 20MHz 的振荡器提供时钟。它通过名为 “bootFlash” 的 SPI 设备启动,该设备属于 “SPIFlash” 类别。

Tile “0”的声明与 tile[0] 相关联,并且为端口 1A、1B、1C、1D 和 4A 定义了符号名。这些声明被输出到头文件 <platform.h>

随后的代码声明了另一个名为 P2 的封装,内含一个 Slave 节点。

  <Package Id="P2" Type="XS1-LnA-64-TQ128">
<Nodes>
<Node Id="Slave" Type="XS1-L8A-64" InPackageId="0"
Oscillator="20Mhz" SystemFrequency="400MHz">
<Boot>
<Source Location="LINK"/>
</Boot>
<Tile Number="0" Reference="tile[1]">
<Port Location="XS1_PORT_1K" Name="PORT_BUTTON"/>
</Tile>
</Node>
</Nodes>
</Package>
</Packages>

Slave 节点是另一个 TQ128 封装的 400MHz XS1-L8A-64 设备,同样由 20MHz 的振荡器提供时钟。它通过 xCONNECT Link 从 Master 节点启动。

下面的代码定义了一个连接节点 Master(位于链路 X0LD)和节点 Slave(位于链路 X0LB)的两线 xCONNECT Link。

<Links>
<Link Encoding="2wire" Delays="4,4">
<LinkEndpoint NodeId="Master" Link="X0LD"/>
<LinkEndpoint NodeId="Slave" Link="X0LB"/>
</Link>
</Links>

这些链路具有 4 个时钟周期的符号内和符号间延迟。

接下来的代码列出了连接到 XMOS 设备的板卡上的组件。

<ExternalDevices>
<Device NodeId="Master" Tile="0" Name="bootFlash"
Class="SPIFlash" Type="AT25FS010">
<Attribute Name="PORT_SPI_MISO" Value="PORT_SPI_MISO"/>
<Attribute Name="PORT_SPI_SS" Value="PORT_SPI_SS"/>
<Attribute Name="PORT_SPI_CLK" Value="PORT_SPI_CLK"/>
<Attribute Name="PORT_SPI_MOSI" Value="PORT_SPI_MOSI"/>
</Device>
</ExternalDevices>

名为 bootFlash 的设备连接到 Master 节点的 xCORE Tile 0,并且具有将四个 SPI 引脚与端口关联的属性。(SPIFlash 类由 XFLASH 识别。)

最后的代码描述了 JTAG 扫描链。

  <JTAGChain>
<JTAGDevice NodeId="Master" Position="0"/>
<JTAGDevice NodeId="Slave" Position="1"/>
</JTAGChain>

</Network>