养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

XMOS中的Hello World程序编写以及程序的烧写

时间:2024-10-22 08:43:22

XMOS是一个32位的高性能多核事件驱动处理器件。XMOS既可以完成像MCU的控制功能,也可以实现像FPGA的标准时序,更能满足像DSP的复杂数据运算处理。可谓集MCU、FPGA和DSP的特点于一身。本文将以最新的XMOS处理器XU208-256-QF48为例,介绍如何在开发软件xTIMEcomposer上,开发HelloWorld级别的简单程序,并介绍如何将程序烧写进外部SPIFlash中。

XMOS中的Hello World程序编写以及程序的烧写

工具/原料

XU208-256-QF48芯片

xTIMEcomposer开发软件

xTAG3仿真器

方法/步骤

1、关于如何安装xTIMEcomposer软件,请去参考下面这篇经验,软件安装后会自动安装好xTAG仿真器的驱动

2、1.新建一个xTIMEcomposer项目,名字:1_GPIO2.点选Showdevicesintargetselection,然后从下拉列表框中选择要使用的XMOS器件型号,这里选择XU208-256-QF48-C10

XMOS中的Hello World程序编写以及程序的烧写

3、下面开始针对该器件做一些魑徒扮阙简单的项目配置1.双击打开XU208-256-QF48-C10.xn文件,这个文件是一个XML格式的器件配置文件,由它会自动导出plat熠硒勘唏form.h这个头文件,用户编程只需要引入这个头文件即可,不用关心底层器件的具体型号2.XML文件的开头<Network>标签的属性中是一些命名空间的声明,不用修改3.往下<Type>标签声明这是个器件Device,器件名字在<Name>中指名4.<Declarations>标签中证明了两项,分别是关于两个tile资源的声明,一个是XCore,另一个是usb相关的物理层资源,其中USB资源是U系列的XMOS专有的,因此这里不用修改5.往下,一个<package>选项卡对应于一片芯片,当前使用的这块芯片中,主要包含两个节点<Node>和一个<Link>,他们针对芯片内部的关键资源,两个Node,一个是XCore,另一个是USB的物理层。一个Link特指芯片内部的xCONNECT模块,通过这个模块可以级联多个XMOS芯片,以实现更多的逻辑核并发工作6.每个<Node>都会有一个id号,从0开始,Type表征这个Node的类型,比如Node0就是一个XS2-L8A-256的XCore,Node1就是一个periph:XS1-SU的USB外设7.这里需要为Node0指定启动设备<Boot> <SourceLocation="bootFlash"/> </Boot>8.并且需要在Tile标签下,声明SPIFlash的引脚具体使用了哪些<TileNumber="0"Reference="tile[0]"> <!--SPIPorts--> <PortLocation="XS1_PORT_1A"Name="PORT_SPI_MISO"/> <PortLocation="XS1_PORT_1B"Name="PORT_SPI_SS"/> <PortLocation="XS1_PORT_1C"Name="PORT_SPI_CLK"/> <PortLocation="XS1_PORT_1D"Name="PORT_SPI_MOSI"/> </Tile>9.在JTAGChain便签之上,增加一项ExternalDevices,用来声明SPIFlash设备<ExternalDevices> <DeviceNodeId="0"Tile="0"Class="SPIFlash"Name="bootFlash"> <AttributeName="PORT_SPI_MISO"Value="PORT_SPI_MISO"/> <AttributeName="PORT_SPI_SS"Value="PORT_SPI_SS"/> <AttributeName="PORT_SPI_CLK"Value="PORT_SPI_CLK"/> <AttributeName="PORT_SPI_MOSI"Value="PORT_SPI_MOSI"/> </Device> </ExternalDevices>

XMOS中的Hello World程序编写以及程序的烧写

XMOS中的Hello World程序编写以及程序的烧写

XMOS中的Hello World程序编写以及程序的烧写

4、双击打开Makefile,这里的Makefile是以图形界面的形式供用户添加配置的,非常友好1.Target选项用来选择具体使用的芯片型号2.AppName是本工程的名字3.UsedModules是需要引用的外部IP核,IP可以是官方提供的,也可以是自己编写的,可以理解为库4.往下都是针对一些编译常见的选项配置,比如gcc的flag,Include的路径,Library的路径等5.本次工程不需要对其做任何修改

XMOS中的Hello World程序编写以及程序的烧写

5、开始编写一个简单的LED闪烁实验,打开1_GPIO.xc文件,加入艮劁飨戽以下内容,可以看到这里导入了之前提到的platform.h头文件:#include<timer.h媪青怍牙>#include<platform.h>portp=XS1_PORT_1L;intmain(){while(1){p<:0;delay_milliseconds(200);p<:1;delay_milliseconds(200);}return0;}

XMOS中的Hello World程序编写以及程序的烧写

6、点击工具栏上的锤子按钮,开始编译,编译成功后会在bin目录下生成1_GPIO.xe文件

XMOS中的Hello World程序编写以及程序的烧写

XMOS中的Hello World程序编写以及程序的烧写

7、连接好xTAG和开发板,点击工具栏的运行按钮,会将程序烧写进芯片的RAM中直接运行,可以在示波器上看到,XS1_PORT_1L对应的引脚上产生一个2.5Hz的方波,即周期为400ms,这与我们程序中的内容一致

XMOS中的Hello World程序编写以及程序的烧写

XMOS中的Hello World程序编写以及程序的烧写

8、如果要将程序烧写到外置的SPIFla衡痕贤伎sh中,需要在烧写的时候指定一个SPIFlash的具体配置文件。1.在工程中新建一个名为MX2笙剽茑镙5L3235E的配置文件,在里面添加如下配置内容:10,/*1.libflashdeviceID*/256,/*2.Pagesize*/16384,/*3.Numberofpages*/3,/*4.Addresssize*/8,/*5.Clockdivider*/0x9f,/*6.RDIDcmd*/0,/*7.RDIDdummybytes*/3,/*8.RDIDdatasizeinbytes*/0xc22016,/*9.RDIDmanufacturerID*/0x20,/*10.SEcmd*/0,/*11.SEfullsectorerase*/0x06,/*12.WRENcmd*/0x04,/*13.WRDIcmd*/PROT_TYPE_SR,/*14.Protectiontype*/{{0x1c,0x0},{0,0}},/*15.SRprotectandunprotectcmds*/0x02,/*16.PPcmd*/0x0b,/*17.READcmd*/1,/*18.READdummybytes*/SECTOR_LAYOUT_REGULAR,/*19.Sectorlayout*/{4096,{0,{0}}},/*20.Sectorsizes*/0x05,/*21.RDSRcmd*/0x01,/*22.WRSRcmd*/0x01,/*23.WIPbitmask*/2.主要根据具体使用的SPIFlash芯片,查阅datasheet,按照格式填写好几个参数,比如页的大小(256字节),总共多少页,发送的地址最多是多少字节(3个字节),时钟需要几分频,RDID,SE,WREN,WRDI,PP,READ,RDSR,WRSR等命令具体是多少,这些都要仔细翻阅datasheet才能填写上去,不同的SPIFlash都会有所不同(至少厂家,容量会有区别)3.这个没有捷径,只能自己编写

XMOS中的Hello World程序编写以及程序的烧写

9、点击工具栏上的闪电按钮,配置烧写选项,选择好刚才编写的SPIFlash配置文件,然后点击Flash,开始烧写,烧写结束后会显示结果

XMOS中的Hello World程序编写以及程序的烧写

XMOS中的Hello World程序编写以及程序的烧写

© 一点知识