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

 时间:2024-10-11 22:30:44

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

2、 新建一个xTIMEcomposer项目,名字:1_GPIO2. 点选Show devices in target selection,然后从下拉列表框中选择要使用的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> <Source Location="bootFlash" /> </Boot>8. 并且需要在Tile标签下,声明SPI Flash的引脚具体使用了哪些<Tile Number="0" Reference="tile[0]"> <!-- SPI Ports --> <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" /> </Tile>9. 在JTAGChain便签之上,增加一项ExternalDevices,用来声明SPI Flash设备<ExternalDevices> <Device NodeId="0" Tile="0" Class="SPIFlash" Name="bootFlash"> <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>

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

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

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

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

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、如果要将程序烧写到外置的SPI Fla衡痕贤伎sh中,需要在烧写的时候指定一个SPI Flash的具体配置文件。1. 在工程中新建一个名为MX25L3235E的配置文件,在里面添加如下配置内容:10, /* 1. libflash device ID */256, /* 2. Page size */16384, /* 3. Number of pages */3, /* 4. Address size */8, /* 5. Clock divider */0x9f, /* 6. RDID cmd */0, /* 7. RDID dummy bytes */3, /* 8. RDID data size in bytes */0xc22016, /* 9. RDID manufacturer ID */0x20, /* 10. SE cmd */0, /* 11. SE full sector erase */0x06, /* 12. WREN cmd */0x04, /* 13. WRDI cmd */PROT_TYPE_SR, /* 14. Protection type */{{0x1c,0x0},{0,0}}, /* 15. SR protect and unprotect cmds */0x02, /* 16. PP cmd */0x0b, /* 17. READ cmd */1, /* 18. READ dummy bytes*/SECTOR_LAYOUT_REGULAR, /* 19. Sector layout */{4096,{0,{0}}}, /* 20. Sector sizes */0x05, /* 21. RDSR cmd*/0x01, /* 22. WRSR cmd */0x01, /* 23. WIP bit mask */2. 主要根据具体使用的SPI Flash芯片,查阅datasheet,按照格式填写好几个参数,比如页的大小(256字节),总共多少页,发送的地址最多是多少字节(3个字节),时钟需要几分频,RDID,SE,WREN,WRDI,PP,READ,RDSR,WRSR等命令具体是多少,这些都要仔细翻阅datasheet才能填写上去,不同的SPI Flash都会有所不同(至少厂家,容量会有区别)3. 这个没有捷径,只能自己编写

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

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

XMOS中的Hello World程序编写以及程序的烧写
XMOS中的Hello World程序编写以及程序的烧写
  • 小爱同学app问题反馈怎么提交
  • iqoo8影院音效怎么设置
  • 三国杀中怎么做到秒杀满血武将
  • 安卓手机如何设置网络模式
  • vivoX50Pro+如何连接WiFi呢?
  • 热门搜索
    环境保护手抄报 爱眼日手抄报 清明节手抄报的内容 安全手抄报图片 儿童节手抄报 端午节手抄报大全 节水手抄报简单又漂亮 汤姆索亚历险记手抄报 文明礼仪手抄报 心理健康教育手抄报