『USB3.0Cypress』Cyusb3014开发(2)开发环境

在这里插入图片描述

1.FX3应用场景

在这里插入图片描述

如图所示,这是一种典型的应用,这个系列的作品也围绕着这个典型应用展开的。**将设备工作产生的数据经控制器处理之后,通过GPIF II可编程接口与FX3芯片相连,数据由此经过USB3.0总线传输到主机端。**在典型应用中,设备端是图像传感器,控制器是FPGA,并辅之以必要的存储器。在一些特殊应用中,图像传感器可以通过DVP接口,与可编程接口GPIF II相连做UVC应用,主机端可以免驱读取视频流信息。Cypress还有一个CX3系列,将GPIF II接口换成了MIPI接口直接与图像传感器相连,做UVC应用。
上图所示的绿色部分是FPGA端,根据选取芯片的生产厂家的不同使用不同的开发环境,我这里使用的Xilinx vivado2020.2,关于这个开发环境后续在其他专栏中做介绍。蓝色部分是主机端应用,有多种方案可以选择,可以使用C#、Python,C++,不同语言的开发环境也不同,这里不做介绍,用到的是Qt5.15.2。关于蓝色部分,cypress提供了两个上位机应用,一个用于数据传输Control Center,一个用于速度测试Stream,加上红色部分的GPIF II Designer,黄色部分用于开发固件的Eclipse,是本节介绍的主要内容。
速度测试软件StreamIN和StreamOUT是用来进行速度测试的;数据传输软件Control Center有下载固件,向EEPROM中烧写固件,查看描述符,数据下发和接收的功能。GPIF II Designer是用于对GPIF II接口编程的图形操作界面,本质上是一组可配置的寄存器,提供了多种编程状态,关于他的原理后续会继续介绍,本文仅介绍开发环境。还有一个黄色部分是关于Eclipse,如何生成固件,怎么规划工作空间都与这个环境密不可分。这几个开发环境在FX SDK。

2.开发环境

2.1 Control Center

实际应用中,要先烧固件(.img)再烧写FPGA的bit文件,保证这样的启动顺序才不会出错。另外关于这个软件的使用请参考AN75705的8.1.2节。

  • 1.双击打开USB Control Center,若如下图所示,说明正确。
    在这里插入图片描述
  • 2.点击Program,选择FX–>RAM。
    在这里插入图片描述
  • 3.将准备的固件烧录,如上图左下角显示Programming Succeeded代表成功烧录。
  • 4.当烧写完固件之后,选择具体到端点,右侧标签卡中选择Data Transfer,输入要传输的文本,字节数会自动出来,然后点击Transfer Out就可以完成一次传输。对于写操作依次点击选择到Bulk in endpoint(0x81),对于读操作点击选择到Bulk out endpoint(0x01)。(此处的0x81和0x01是固件中设置的,可以设置成其他的端点)
    在这里插入图片描述
    注意:此处的pktMode含义是Xferdata函数重载形式的一个参数,是一个bool型变量,当不勾选时,这个参数的值为false,此时若传输的字节数不是MaxPcktSize的整数倍时,将会导致传输错误,产生997的error。当勾选时,这个参数的值为true,此时若传输的字节数不是MaxPcktSize的整数倍时,将不会导致传输错误,将会提取所请求数量的最大的1024的整数倍。最大数据包长度maxPktSize如何计算?每个非控制端点都有一个传输数据量大小值为wMaxPacketSize的倍数,这个传输数据量大小可以编程调整。传输量大小(即maxPktSize)决定了USB驱动栈为实现数据传输所使用的内部缓冲区大小。设置越大的值,传输过程中所需的操作越少,然而,大缓冲区也占用更多的可用内存。SetXferSize( )设置了端点当前传输量大小。它自动设置了传输量大小为大于等于xfer大小的MaxPktSize属性的倍数。但最新的版本中,这个函数不在受支持,而是对于不同类型的传输给定了缓冲区的值,如下:
    在这里插入图片描述

之前的函数版本,对于块端点:maxPktSize=wMaxPacketSize*(1+bMaxBurst)。其中,wMaxPacketSize是端点描述符中的字段,与端点属性(固件代码中的结构体)中的epcfg.pcktsize含义一致,即本端点接收或发送的最大信息包大小,对于bulk端点,此值为1024;bMaxBurst是超高速端点伙伴描述符中的字段,其设置值应为端点属性的epcfg.burstLen-1,含义是端点在一次突发中可以发送或接收的数据包的最大数量。有效值为0到15。值为0表示端点每次突发只能1个包,而15表示端点每次突发最多可以16个包。对于同步端点:maxPktSize=wMaxPacketSize*(1+bMaxBurst)(1+bmAttributes)。 其中,与上述相同字段含义一致,bmAttributes字段是确定同步端点服务间隔中的最大数据包数(最大为2)(这个字段在后续同步传输原理中有详细阐述)。对于同步端点,此值可以为0~1024,缓冲区的长度以及端点传输长度(二者指同一个意思应该是8maxPktSize)

2.2 Streamer

如下图所示,C++ Streamer软件是用于速度测试,当设备已连接的时候,“connected Devices”将显示可选的设备名称和PID、VID;EndPoint显示可用于速度测试的端点;Packets per Xfer(每传输操作的数据包数量):一个传输操作指的是一组数据的数据包集合。每个传输的数据包越多,则开销越少,取得的数据速率也会越高。Xfers to Queue(队列的传输操作):该设置有助于启动多个传输,并把它们添加到任务队列中。该项减小了主机应用方上连续传输间的延迟。因此,队列的传输次数越多,数据速率也越高。分别设置“每次传输包的个数”和“队列的传输次数”、“超时时间”之后单击start将会实时的显示传输的速度,并会实时的统计传输成功包个数和传输失败包个数。
在这里插入图片描述

2.3 GPIF II Designer

请参照GPIFII_Designer_User_Guide、AN65974第9节、AN87216学习关于GPIF II Designer的使用。下面简单介绍开发环境的使用,关于GPIF II接口原理后续专门一节介绍。常见的文件操作和编辑操作都大同小异,视图界面有output、error、action list三个窗口,State machine是用于放大缩小界面,build用来生成状态机的.h文件,help中有关于该环境的使用说明。

  • 1.第一个table:start page,打开GPIF II Designer软件,官方提供了几个基本配置文件,如下图所示。点击这些基本例程,要是需要修改,先要点击file->Save Project As Editable才能进行编辑。也可以不基于这些例程进行自定义的项目设计。
    在这里插入图片描述

  • 2.依照顺序,进入第二个table:interface definition,进行关于引脚映射、时钟源、接口类型、总线位宽、标志等内容的设置。
    在这里插入图片描述

  • 3.进入第三个table,设计状态机,矩形框代表不同的状态,框内的文字具有特定的含义代表该状态下要做的动作,连线上代表状态跳转的外部或内部条件。开发环境允许更改所有关于状态机的设置,界面友好,操作简易。
    在这里插入图片描述

  • 4.第四个界面时序仿真界面,通过设置几个参数值创建应用场景,然后运行得到波形,设置值有时序情景,缓冲区大小,水印值的设置等,菜单栏中timing scenarios也是关于这个的使用。
    在这里插入图片描述

2.4 eclipse IDE

  • 1.选择工作空间,打开eclipse IDE首先要选择工作空间,这里的工作空间是项目实际组织架构。这个工作空间应该是自己新创建的文件夹(项目专属文件夹)
    在这里插入图片描述
  • 2.项目导入,选定工作空间,进行项目导入,这个导入的项目应该是想要在此项目基础上进行更改的项目。步骤如下:
    • A.选择file->Import。
    • B.选择General->Existing Projects into Workspace->Next
    • C.选择项目工程所在路径,然后勾选上复制到工作空间选项->Finish。浏览 SDK 安装包里的固件目录。点击 Browse…按钮,然后导航到 Cypress SDK firmware 文件夹。对于典型的 Windows 安装,该文件夹位于 C:\Program Files (Program Files (x86 on 64-bitmachines)\Cypress\EZ-USB FX3 SDK\firmware 路径下。
      在这里插入图片描述
  • 3.Rebuild,在刚导入工作空间的例程报许多关于标识的错误,这可能是因为原例程的本地配置文件与当前的本地环境发生了变化导致的。点击rebuild 解决这个问题。具体操作如下:project->C/C++ Index->Rebuild。
    在这里插入图片描述
    注意:必须要保存修改,才能编译,否则编译不生效。 另外镜像文件,需要根据文件生成时间,来判断是否是新编译生成的。Img文件即为要烧写的镜像文件。创建工作空间,以切换工作空间的方式切换项目组织结构。具体的操作参见cypress 官方文档AN75705。
    改文件名字的时候,注意相关头文件的相互引用,要及时对应修改。更改.h文件后,先点击保存,否则.c文件中不能引用,会报错。

3.调试工具

一个是芯片精灵chipgenius可以看到USB设备的类型,并可以提供相应的资料;一个是usbtreeView可以看到所有与PC连接USB设备,并可以看到枚举的各个描述符信息;还有一个是wireshark,这个软件通常被用来做网络设备的抓包分析,实际上它也可以用来做USB设备的抓包分析,不过需要在安装的时候选择相关的USB抓包插件。链接在文末。

4.传送门

END

🔈文章原创,首发于CSDN论坛。
🔈欢迎点赞❤❤收藏⭐⭐打赏💴💴!
🔈欢迎评论区或私信指出错误❌,提出宝贵意见或疑问❓。


  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑾芳玉洁错过的烟火

原创不易,请多支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值