XMOS软件开发入门(3) - xc语言(1)之hello world

本篇目的

后面开始说XMOS的程序开发-xc语言。

开发环境

  • 硬件平台使用官方评估板"xCORE VOCAL FUSION XP-VF3100-BASE"
  • IDE开发环境win10 下的 xTIMEcomposer

新建工程

XVF3100评估板新建工程遇到的麻烦

如果用的是普通的XMOS开发板,那么这段可以忽略。因为对普通XMOS开发板来说,不存在这个问题。

自己觉得直接从评估板的SDK源码包熟悉xc语言,难度较大,因为SDK源码比较复杂。我的想法是新建一个工程,从经典的hello world程序熟悉起来比较容易。然而这个板子对应的资料没有新建工程的教程,自己试着新建工程,Target Hardware 选项中没有找到对应板子的选项。曾经问过原厂的技术支持这个评估板怎么新建工程,自己写简单程序熟悉XMOS的开发?得到的答复是不可行,要另外购买普通的XMOS开发板才行。之后自己阅读文档的时候,得到了启发,找到了这个评估板新建工程的方法。

评估板有一段话

Developers who wish to use their own microphone and acoustic DSP libraries
should use the xCORE Microphone Array board5 based on a fully featured two-tile
xCORE-200 XUF216-512-TQ128 device.

这说明可能可以选择XUF216-512-TQ128 device来新建工程,并写出自己的Hello world程序。我又找来了XUF216-512-TQ128 的数据手册,和XVF3100的数据手册做对比,感觉硬件资源是一样的,越来越觉得可行,于是就有了下面的尝试,结果是成功的。

建立自己的新工程

File -> new -> xTIMEcomposer Project,输入工程名称mytest。Target Hardware按下图设置

在这里插入图片描述

Finish之后,建立了新工程,还需要做硬件的配置,配置是在xn文件中的,在IDE中可以查看到这个文件,如图

在这里插入图片描述

所用的tile和core,时钟频率,GPIO都在里面做配置,每一项都需要通过查原理图和芯片手册去配置,还是比较麻烦的。

还有可以借鉴官方的评估板的SDK工程,工程中有已经配置好的xn文件。于是用SDK工程中的xn文件,和新建工程的xn文件,两者用比较器对比,如果看过本系列第一节的硬件资源介绍的内容,配置文件一看就了解了。(先关闭mytest工程,修改完xn文件后再打开mytest工程,工程就能认识xn的配置了。一开始我没有关闭,发现修改文件后,在IDE中点开xn文件是不认识配置的)

摘一段xn文件看看里面的内容

 <Tile Number="0" Reference="tile[0]">
        <Port Location="XS1_PORT_1B" Name="PORT_SQI_CS"/>
        <Port Location="XS1_PORT_1C" Name="PORT_SQI_SCLK"/>
        <Port Location="XS1_PORT_4B" Name="PORT_SQI_SIO"/>

        <!-- Mic related ports -->
        <Port Location="XS1_PORT_1E" Name="PORT_PDM_CLK"/>
        <Port Location="XS1_PORT_8B" Name="PORT_PDM_DATA"/>
        <Port Location="XS1_PORT_1F" Name="PORT_PDM_MCLK"/>

        <!-- LED ports -->
        <Port Location="XS1_PORT_8C" Name="PORT_LED0_TO_7"/>
        <Port Location="XS1_PORT_1K" Name="PORT_LED8"/>
        <Port Location="XS1_PORT_1L" Name="PORT_LED9"/>
        <Port Location="XS1_PORT_8D" Name="PORT_LED10_TO_12"/>

        <!-- Button ports -->
        <Port Location="XS1_PORT_4A" Name="PORT_BUT_A_TO_D"/>

        <!-- I2C slave -->
        <Port Location="XS1_PORT_1I" Name="PORT_I2C_SDA"/>
        <Port Location="XS1_PORT_1J" Name="PORT_I2C_SCL"/>

        <!-- SPI -->
        <Port Location="XS1_PORT_1G" Name="PORT_SPI_CLK"/>
        <Port Location="XS1_PORT_1H" Name="PORT_SPI_SS"/>
        <Port Location="XS1_PORT_1I" Name="PORT_SPI_MISO"/>
        <Port Location="XS1_PORT_1J" Name="PORT_SPI_MOSI"/>

        <!-- Expansion header ports -->
        <Port Location="XS1_PORT_1G" Name="PORT_EXPANSION_1"/>
        <Port Location="XS1_PORT_1H" Name="PORT_EXPANSION_3"/>
        <Port Location="XS1_PORT_1A" Name="PORT_EXPANSION_5"/>
        <Port Location="XS1_PORT_1D" Name="PORT_EXPANSION_7"/>
        <Port Location="XS1_PORT_1I" Name="PORT_EXPANSION_9"/>
        <Port Location="XS1_PORT_1P" Name="PORT_EXPANSION_10"/>
        <Port Location="XS1_PORT_1J" Name="PORT_EXPANSION_12"/>
      </Tile>

摘选的一段是tile0那一片的Port配置,Port Location中的名称和本系列第一节说的硬件资源的GPIO pin是一致的,还有别的硬件资源,也在xn文件中做了配置,因此必须知道硬件资源的使用情况,才能正确配置。

配置xn文件后,工程会自动产生platform.h文件,写程序如果要访问硬件资源,自然要include这个头文件。

到此新工程建立完成了。

如果建立工程的时候,勾选了“Create Empty xC File”,那么工程的src文件夹中,会产生一个空的mytest.xc文件。

Hello World 程序

xc语言是c语言的扩展语言。先按照c语言的方法写hello world试试。

修改mytest.xc,如下:

#include <stdio.h>
#include <platform.h>

int main () {
    printf("Hello World\n");
    return 0;
}

按照上一篇说的编译,配置好运行配置,运行,看到了Hello World的打印。如下图

在这里插入图片描述

评估板的软件开发环境就算搭好了,后面就可以在上面学习xc语言的编程了。可以建立新工程,从简单的程序起学习XMOS的软件开发了。

后续这系列的文章,都用简单的小程序去说明XMOS的并发多任务,任务间通讯,GPIO的输入输出,定时器,I2C操作等不同于一般的C语言的知识,并在评估板上实现效果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值