EZ-USB™FX3/FX3S启动选项,AN76405EZ-USB™

映像 7
FX3/FX3S启动选项 关于本文档 范围及目的AN76405介绍了通过USB、I2C、SPI以及同步地址数据复用(ADMux)接口执行的启动选项,这些选项适用于英飞凌EZ-USB™FX3外设控制器。
本应用笔记还适用于FX3S和CX3外设控制器。
目标对象本应用笔记主要针对EZ-USB™FX3/FX3S/CX3用户。
相关部件系列CYUSB30xx更多代码示例?我们听到了你的声音有关USBSuperSpeed代码示例的完整列表,请访问/101781 Tableof

contents 关于本文档.......................................................................................................................................


1 Tableofcontents

..............................................................................................................................


1 1简介

........................................................................................................................................


4 2相关资源

.................................................................................................................................


5 2.1 EZ-USB™FX3

软件开发套件...................................................................................................................


5 2.2 GPIFII

Designer........................................................................................................................................


5 3FX3启动选项

...........................................................................................................................


6 4USB启动

.................................................................................................................................


8 4.1 PMODE引脚

............................................................................................................................................


8 4.2 功能..........................................................................................................................................................


8 4.2.1 默认芯片ID

........................................................................................................................................


8 4.2.2 Bootloader

版本.................................................................................................................................


9 4.2.3 ReNumeration

....................................................................................................................................


9 4.2.4 总线供电应用

....................................................................................................................................


9 4.2.5 USB回退功能选项(-->USB)

.............................................................................................................


9 4.2.6 带有VID/PID选项的

USB..................................................................................................................


9 4.2.7 USB默认器件

....................................................................................................................................


9 4.2.8 USBSETUP数据包

............................................................................................................................


9 4.2.9 USB第9

章和供应商命令...............................................................................................................

10 4.2.10 USB供应商命令

..............................................................................................................................

10 4.2.11 USB下载示例代码

..........................................................................................................................

12 4.3 校验和计算............................................................................................................................................

13 4.3.1 FX3Bootloader存储器分配情况

....................................................................................................

13 4.3.2 寄存器/存储器访问

.........................................................................................................................

14 4.3.3 USBeFUSEVID/PID启动选项

.........................................................................................................

14 4.3.4 USBOTG

...........................................................................................................................................

14 ApplicationNote PleasereadtheImportantNoticeandWarningsattheendofthisdocumentpage1of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 Tableofcontents 4.3.5 Bootloader

限制...............................................................................................................................

14 4.3.6 USB看门狗定时器

..........................................................................................................................

14 4.3.7 USB暂停/恢复

.................................................................................................................................

14 4.3.8 USB器件描述符

..............................................................................................................................

14 4.4 启动镜像格式........................................................................................................................................

16 4.4.1 下面是以长字格式组织的启动镜像示例:......................................................................................

17 5I2CEEPROM启动

.....................................................................................................................19 5.1 功能........................................................................................................................................................

19 5.2 在EEPROM上存储固件镜像

...............................................................................................................

20 5.2.1 寻址128KBEEPROM时应当注意的事项......................................................................................

21 5.3 启动镜像格式........................................................................................................................................

22 5.4 校验和计算............................................................................................................................................

23 5.4.1 第一个示例启动镜像.......................................................................................................................

24 5.4.2 第二个示例启动镜像.......................................................................................................................

24 5.4.3 校验和计算示例代码.......................................................................................................................

25 6带有USB回退功能的I2CEEPROM

启动.....................................................................................26 6.1 功能........................................................................................................................................................

26 6.2 使用VID和PID启动的示例镜像

........................................................................................................

26 7SPI启动

.................................................................................................................................27 7.1 功能........................................................................................................................................................

27 7.2 SPI闪存的选择

.....................................................................................................................................

28 7.3 SPI闪存混合扇区的使用

.....................................................................................................................

28 7.4 在SPI闪存/EEPROM

中存储固件镜像................................................................................................

28 7.5 启动镜像格式........................................................................................................................................

29 7.6 校验和计算............................................................................................................................................

31 8带有USB回退功能的SPI启动.................................................................................................33 8.1 使用
VID和PID启动的示例镜像

........................................................................................................

33 9同步ADMux启动....................................................................................................................34 9.1.1 接口信号

..........................................................................................................................................

34 9.1.2 同步ADMux时序

.............................................................................................................................

35 9.1.3 USB回退功能(-->USB)

...................................................................................................................

36 9.1.4 热启动

..............................................................................................................................................

36 9.1.5 唤醒/待机

.........................................................................................................................................

36 9.1.6 GPIFIIAPI

协议.................................................................................................................................

38 9.1.7 固件下载示例

..................................................................................................................................

40 9.1.8 处理器端口(P-Port)寄存器映射情况

............................................................................................

41 9.2 启动镜像格式........................................................................................................................................

50 10启动时I/O的默认状态............................................................................................................54 11
附录A:使用FX3DVK电路板进行启动的步骤(CYUSB3KIT-001)..................................................56 11.1 USB

启动................................................................................................................................................

56 11.2 I2C启动

..................................................................................................................................................

60 11.3 SPI启动

.................................................................................................................................................

64 12附录B:同步ADMux引导的故障排除步骤

................................................................................69 12.1 初始化....................................................................................................................................................

69 12.2 测试寄存器读/写

..................................................................................................................................

69 12.3 测试FIFO

读/写.....................................................................................................................................

69 12.4 测试固件下载........................................................................................................................................

71 13附录C:使用elf2img程序生成固件映像

Image..........................................................................72 13.1 用法........................................................................................................................................................

72 ApplicationNote 2of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 Tableofcontents 13.1.113.1.213.1.313.1.3.113.1.3.2 镜像类型

..........................................................................................................................................

72中断向量加载

..................................................................................................................................

72EEPROM控制

...................................................................................................................................

72 I2C参数

.......................................................................................................................................

72SPI

参数.......................................................................................................................................

73 参考..............................................................................................................................................74 文档修订记录
..................................................................................................................................75 Application
Note 3of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 简介
1 简介 EZ-USB™FX3是新一代USB3.0外设控制器,它集成了高级灵活的功能,可帮助开发人员为各种应用添加USB3.0功能。
FX3支持多种启动选项,包括通过USB、I2C、SPI、和同步ADMux等接口执行的启动。
此外,还介绍了启动过程中FX3IO的默认状态。
附录A部分对使用FX3DVK测试各启动模式提供了逐步引导。
ApplicationNote 4of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 相关资源
2 相关资源 英飞凌的网站上提供了大量资料,有助您正确选择器件用于设计,并帮助您能够快速和有效地将器件集成到设计中。
•概述:USB产品系列、USB路线图•USB3.0产品选型器:FX3,FX3S,CX3,HX3,SX3•应用笔记:英飞凌提供了大量的USB应用笔记,包括从基本到高级的广泛主题。
下面列出的是FX3入门 的应用笔记:−AN75705—EZ-USB™FX3入门−AN231295—EZ-USB™SX3入门−AN70707—EZ-USB™FX3/FX3S硬件设计指南和原理图检查表−AN65974—使用EZ-USB™FX3从设备FIFO接口进行设计−AN75779—如何使用EZ-USB™FX3在USB视频类别(UVC)框架内实现图像传感器连接−AN86947—使用EZ-USB™FX3优化USB3.0的吞吐量−AN84868—使用英飞凌EZ-USB™FX3通过USB配置FPGA−AN68829–用于EZ-USB™FX3的从设备FIFO接口:5位地址模式−AN76348—EZ-USB™FX2LP和EZ-USB™FX3应用的区别−AN89661—使用EZ-USB™FX3S设计USBRAID1磁盘•代码示例:−USB高速−USB全速−USB超高速•技术参考手册(TRM):−EZ-USB™FX3技术参考手册•开发套件:−CYUSB3KIT-003,EZ-USB™FX3超高速Explorer套件−CYUSB3KIT-001,EZ-USB™FX3开发套件−模型:IBIS 2.1 EZ-USB™FX3软件开发套件 英飞凌为FX3提供了完整的软件和固件堆栈,这样很容易便能够将超高速USB集成到嵌入式应用内。
软件开发套件(SDK)带有各种工具、驱动程序和应用示例,有助于加快应用开发程序。
2.2 GPIFIIDesigner GPIFIIDesigner是一个图形软件,设计师可以通过它来配置EZ-USB™FX3USB3.0器件控制器的GPIFII接口。
通过使用该工具,用户可以从英飞凌所提供的五个接口选择一个,或从头开始创建自定义的GPIFII接口。
英飞凌提供了符合工业标准的接口,如异步和同步从设备FIFO、异步和同步SRAM。
在具有上面所述接口的系统中,开发者可从一组标准参数(如总线宽度(x8、16、x32)、字节顺序、时钟设置)选择所需要的接口,然后,编译已选的接口。
该工具为需要自定义接口的用户提供了一个简洁的三步骤GPIF接口开发程序。
用户先选择引脚配置和标准参数。
然后,可以使用可配置操作设计一个虚拟的状态机。
最后,用户通过查看输出时序验证是否与所需时序相匹配。
一旦完成这三个步骤,便可以将该接口编译并集成到FX3。
ApplicationNote 5of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 FX3启动选项
3 FX3启动选项 FX3集成了一个位于屏蔽ROM内的Bootloader。
Bootloader用于通过各种接口(如USB、I2C、SPI或GPIFII(同步ADMux))下载FX3固件镜像。
FX3Bootloader使用FX3上的三个PMODE输入引脚来确定将要使用的启动选项。
Figure1显示了本应用笔记所介绍的启动选项。
Table1列出了这些启动选项以及所需的PMODE引脚设置。
ExternalFPGA/Processor SyncADMux I2CEEPROM BootfromanI2CEEPROM I2C BootoverSyncADMux PMODE2PMODE1PMODE0 SyncADMux BootloaderROM EZ-USBFX3 SPI BootoverUSB2.0 USBHost BootfromSPIflash Figure1FX3启动选项 SPIflash Table1 FX3的启动选项* PMODE[2:0]引脚 PMODE[2] PMODE[1]
Z 0
Z 1
1 Z
Z 1
0 Z 保留其他组合 PMODE[0]01ZZ1 启动选项 同步ADMux(16位)USB启动I2CI2CUSBSPIUSB USB回退功能 无有无有有 Note: *Z=悬空。
通过执行以下操作可使PMODE引脚进入悬空状态:断开同其的连接;或者将其连接到某个FPGAI/O,然后将该I/O配置为FPGA输入。
ApplicationNote 6of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 FX3启动选项 下面章节介绍了FX3支持的启动选项: •USB启动:从USB主机将FX3固件镜像下载到FX3系统RAM内。
•I2CEEPROM启动:FX3固件镜像被编程到一个外部I2CEEPROM内。
发生复位时,FX3Bootloader将通过 I2C下载该固件。
•SPI启动:FX3的固件镜像被编程到一个外部SPI闪存或SPIEEPROM内。
发生复位时,FX3Bootloader 将通过SPI下载该固件。
•同步ADMux启动:从FX3GPIFII接口上所连接的外部处理器或FPGA中下载FX3固件镜像。
ApplicationNote 7of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 USB启动
4 USB启动 Figure2显示了FX3通过USB进行启动的系统框图。
EZ-USBFX3 ExternalFPGA/Processor PMODE2=ZPMODE1=1PMODE0=
1 Figure2FX3系统框图 BootloaderROM BootoverUSB2.0 USBHost 4.1 PMODE引脚 对于USB启动,PMODE[2:0]引脚的状态应该为Z11,如Table2所示。
Table2PMODE[2]
Z USB启动的PMODE引脚PMODE[1]
1 PMODE[0]
1 Note:Z=悬空。
4.2 功能 在USB2.0模式中,外部USB主机可将固件镜像下载到FX3内。
FX3将枚举为总线供电式USB供应商类型设备。
在USB启动模式下,FX3的状态如下: •USB3.0(超高速)的信号通信功能被禁用•USB2.0(高速/全速)被使能•FX3使用供应商命令A0h进行下载/上传固件。
该供应商命令是在Bootloader中实现的。
4.2.1默认芯片ID 默认情况下,FX3的默认赛普拉斯半导体VID=04B4h和PID=00F3h,这些信息存储在ROM中。
除非编程了eFUSE1VID/PID,否则,该VID/PID将使用于默认的USB枚举。
默认的赛普拉斯ID值仅使用于开发目的。
对于终端产品,用户必须使用他们自己的VID/PID。
通过向USB-IF登记,可以得到VID。
1eFUSE是能够在片内重新编程某些电路的技术。
有关eFUSE编程的详细信息,请联系您的赛普拉斯代表。
ApplicationNote 8of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 USB启动 4.2.2Bootloader版本 Bootloader版本信息存储在ROM中的地址FFFF_0020h空间内,如Table3所示。
Table3次要版本主要版本保留字节 Bootloader版本 FFFF_0020hFFFF_0021hFFFF_0022h、FFFF_0023h 4.2.3ReNumeration FX3支持重枚举功能,该功能由固件控制。
首次插入USB主机时,FX3使用其默认的USB描述符自动枚举。
下载固件后,FX3再次枚举。
此时,FX3作为一个由已下载的USB描述符定义的设备。
这个双步骤的过程被称为"重枚举"。
4.2.4总线供电应用 Bootloader在总线供电模式下进行枚举。
FX3可以按照USB2.0规范的要求使用低于100mA的电流进行枚举,从而全面支持总线供电设计。
4.2.5USB回退功能选项(-->USB) 在USB回退功能被使能时,如果通过其他选项启动,FX3则将回退至本节中所描述的同一个USB启动模式。
由于其他时钟源均被打开,因此工作电流可能略高于USB启动模式中的电流。
4.2.6带有VID/PID选项的USB Bootloader支持通过新的VID/PID进行启动,这些VID/PID的存储位置为:•I2CEEPROM:请查看本应用笔记中的I2CEEPROM启动一节。
•SPIEEPROM:请查看本应用笔记中的SPI启动一节。
•eFUSE(VID/PID):有关自定义的eFUSEVID/PID编程,请联系英飞凌销售人员。
4.2.7USB默认器件 FX3Bootloader具有单一的USB配置(包含一个接口(接口0)和接口0的备用设置)。
在该模式下,只有端点0被使能。
其他所有端点均被关闭。
4.2.8USBSETUP数据包 FX3Bootloader对包含了Table4中定义的8字节数据结构的SETUP数据包进行解码。
Table4字节
0 SETUP数据包字段bmRequestType
1 bRequest 2-3wValue 4-5wIndex 说明请求类型:位7:方向位6-0:接收方该字节为A0h,用于固件下载/上传供应商命令16位值(低位优先格式)16位值(低位优先格式) ApplicationNote 9of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 USB启动 字节6-
7 字段wLength 说明字节数量 Note:有关字节顺序的说明,请参考USB2.0规范。
4.2.9USB第9章和供应商命令 FX3Bootloader处理Table5中的命令。
Table5bRequest000102030405060708h09h0Ah0Bh0Ch20h-9FhA0hA1h-FFh USB命令说明GetStatus:器件、端点和接口ClearFeature:器件和端点Reserved:返回STALL(停止)SetFeature:器件和端点Reserved:返回STALL(停止)SetAddress:在FX3硬件中进行处理GetDescriptor:ROM中的器件描述符Reserved:返回STALL(停止)GetConfiguration:返回内部值SetConfiguration:设置内部值GetInterface:返回内部值SetInterface:设置内部值Reserved:返回STALL(停止)Reserved:返回STALL(停止)供应商命令:固件上传/下载,等等Reserved:返回STALL(停止) 4.2.10USB供应商命令 Bootloader使用A0h供应商命令来下载/上传固件。
命令的字段显示在Table6和Table7内。
Table6 用于固件下载的命令字段 字节字段 数值
0 BmRequestType40h
1 bRequest 2-3WValue 4-5WIndex 6-7wLength A0hAddrL(LSB)AddrH(MSB)计数 说明请求类型:位7:方向位6-0:接收方该字节为A0,用于固件下载/上传供应商命令。
16位值(低位优先格式)16位值(低位优先格式)字节数量 ApplicationNote 10of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 USB启动 Table7 用于固件上传的命令字段 字节字段 数值
0 BmRequestTypeC0h
1 bRequest 2-3WValue 4-5WIndex 6-7wLength A0hAddrL(LSB)AddrH(MSB)计数 说明请求类型:位7:方向位6-0:接收方。
该字节为A0,用于固件下载/上传供应商命令。
16位值(低位优先格式)16位值(低位优先格式)字节数量 Table8 用于跳到程序入口处的命令字段 字节字段 数值 说明
0 bmRequestType40h 请求类型:位7:方向 位6-0:接收方
1 bRequest A0h 该字节为A0,用于固件下载/上传供应商命令。
2-3wValue AddrL(LSB)32位程序入口 4-5wIndex AddrH(MSB)32位程序入口>>16 6-7wLength
0 该字段必须为零。
对于跳到入口命令,Bootloader将关闭所有的中断并断开同USB的连接。
以下内容介绍的是三个供应商命令子程序的示例。
示例1.8字节Setup数据包的供应商命令写数据协议: bmRequestType=0x40 bRequest=0xA0; wValue=(WORD)address; wIndex=(WORD)(address>>16); wLength=1to4K-bytemax 该命令将发送长度为wLength的DATAOUT数据包和长度为零的DATAIN数据包。
示例
2.使用Setup数据包读取Bootloader版本 bmRequestType=0xC0 bRequest=0xA0; wValue=(WORD)0x0020; wIndex=(WORD)0xFFFF; wLength=
4 该命令将发送各个长度为wLength的DATAIN数据包和一个长度为零的DATAOUT数据包。
ApplicationNote 11of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 USB启动示例
3.使用8字节Setup数据包跳到程序入口(请参考Table8)bmRequestType=0x40bRequest=0xA0;wValue=ProgramEntry(16-bitLSB)wIndex=ProgramEntry>>16(16-bitMSB)wLength=
0 Note:FX3使用32位寻址,需要将地址写入到命令的wValue和wIndex字段内。
4.2.11USB下载示例代码 若要下载代码,应用应读取固件镜像文件,并使用供应商写命令一次写入4K的数据段。
该段大小不能超过Bootloader所使用的缓冲区大小。
Note:固件镜像的格式必须与Table14中指定的一样。
下面示例介绍了固件下载程序的实现。
DWORDdCheckSum,dExpectedCheckSum,dAddress,i,dLen;WORDwSignature,wLen;DWORDdImageBuf[512*1024];BYTE*bBuf,rBuf[4096]; fread(&wSignature,1,2,input_file);/*fread(void*ptr,size_tsize,size_tcount,FILE*stream) readsignaturebytes.*/ if(wSignature!
=0x5943) //check'CY'signaturebyte { printf(“Invalidimage”); returnfail; } fread(&i,2,1,input_file); //skip2dummybytes dCheckSum=0; while
(1) { fread(&dLength,4,1,input_file);//readdLength fread(&dAddress,4,1,input_file);//readdAddress if(dLength==0)break; //done //readsections fread(dImageBuf,4,dLength,input_file); for(i=0;i0){ dLen=4096;//4Kmaxif(dLen>dLength)dLen=dLength;VendorCmd(0x40,0xa0,dAddress,dLen,bBuf);//WritedataVendorCmd(0xc0,0xa0,dAddress,dLen,rBuf);//Readdata//Verifydata:rBufwithbBuffor(i=0;i=bBuf){printf(“Failtoverifyimage”);returnfail;}}dLength-=dLen;bBuf+=dLen;dAddress+=dLen;}}//readputedchecksumdatafread(&dExpectedChecksum,4,1,input_file);if(dCheckSum!
=dExpectedCheckSum){printf(“Failtobootduetochecksumerror\n”);returnfail;}//transferexecutiontoProgramEntryVendorCmd(0x40,0xa0,dAddress,
0,NULL); input_file是指向固件镜像文件的FILE指针。
该文件的格式如Table14所示。
Note:有关示例实现,请参阅随EZ-USB™FX3SDK提供的USBControlCenter应用程序源代码项目。
4.3 校验和计算 在USB下载中,下载工具将处理校验和计算,如USB下载示例代码一节所示。
4.3.1FX3Bootloader存储器分配情况 在数据紧密耦合存储器(DTCM)中,FX3Bootloader会分配1280个字节(地址范围为0x1000_0000到0x1000_04FF)用于变量和堆栈。
只要在固件下载过程中,该存储器空间未被初始化(未初始化的局部变量),固件应用就能使用该空间。
ApplicationNote 13of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 USB启动 Bootloader所分配的前16个字节(从0x4000_0000到0x4000_000F)用于热启动和待机启动。
固件应用不应该使用这些字节。
Bootloader所分配的10K个字节(从0x4000_23FF地址起)用于它的内部缓冲区。
固件应用可将该空间作为未初始化的局部变量/缓冲区使用。
Bootloader不使用指令紧密耦合存储器(ITCM)。
4.3.2寄存器/存储器访问 FX3Bootloader允许对ROM、MMIO、SYSMEM、ITCM和DTCM存储器进行读访问。
Bootloader允许对MMIO、SYSMEM、ITCM和DTCM存储器(DTCM中前1280个字节和系统存储器中前10K的空间除外)进行写访问。
对MMIO进行写访问时,Bootloader的传输长度必须为4(等于长字),并且地址要为4字节对齐。
4.3.3USBeFUSEVID/PID启动选项 通过扫描eFuse(eFUSE_USB_ID)来确定USB_VID位是否被编程,FX3Bootloader可以使用由用户选择的VID和PID进行启动。
如果这些位被编程,则Bootloader将使用eFUSEVID和PID值。
4.3.4USBOTG FX3Bootloader不支持OTG协议。
它始终作为一个USB总线供电式器件运行。
4.3.5Bootloader限制 FX3Bootloader处理受限制的地址范围检查。
如果访问实际上不存在的地址,则会导致发生不可预测的结果。
Bootloader不会检查程序入口。
一个无效的程序入口可能导致发生不可预测的结果。
Bootloader允许对MMIO寄存器进行写访问。
写入无效地址会导致不可预测的结果。
4.3.6USB看门狗定时器 FX3USB硬件要求USB内核硬件使用频率为32kHz的时钟输入。
如果没有32kHz的外部时钟,则Bootloader会将看门狗定时器配置为USB内核的内部32kHz时钟。
4.3.7USB暂停/恢复 如果USB上没有发生任何操作,则FX3Bootloader将进入暂停模式。
当PC恢复USB上进行的操作时,FX3Bootloader将恢复正常操作。
4.3.8USB器件描述符 下面各表显示了高速和全速模式下的FX3Bootloader描述符。
Note:在全速模式下,器件限定符不可用。
Table9偏移012-
3 器件描述符字段bLengthbDescTypewBCDUSB 数值12h010200h 说明该描述符的长度=18个字节描述符类型=器件USB规范版本2.0 ApplicationNote 14of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 USB启动 偏移45678-910-1112-1314151617 字段bDevClassbDevSubClassbDevProtocolbMaxPktSizewVIDwPIDwBCDIDiManufactureiProductiSerialNumbNumConfig 数值00000040h04B4h00F3h0100h01h02h03h01h 说明器件类别(没有实现任何类别特定协议)器件子类(没有实现任何类别特定协议)器件协议(没有实现任何类别特定协议)端点0数据包大小为64赛普拉斯半导体VIDFX3芯片FX3bcdID制造商索引字符串=01序列号索引字符串=02序列号索引字符串=03单一配置 Table10器件限定符 偏移字段
0 bLength
1 bDescType 2-
3 wBCDUSB
4 bDevClass
5 bDevSubClass
6 bDevProtocol
7 bMaxPktSize
8 bNumConfig
9 bReserved 数值
0Ah060200h00000040h01h00h 说明该描述符的长度=10个字节描述符类型=器件限定符USB规范版本2.00器件类别(没有实现任何类别特定协议)器件子类(没有实现任何类别特定协议)器件协议(没有实现任何类别特定协议)端点0数据包大小为64单一配置必须为零 Table11配置描述符 偏移字段
0 bLength
1 bDescType 2-3wTotalLength
4 bNumInterfaces
5 bConfigValue
6 bConfiguration
7 bAttribute
8 bMaxPower 数值
09h02h0012h01010080h64h 说明该描述符的长度=10个字节描述符类型=配置总长度此配置中的接口数量SetConfiguration请求所使用的配置值,用于选择该接口描述该配置的字符串索引=0属性:总线供电,无唤醒最大功率:200mA ApplicationNote 15of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 USB启动 Table12偏移012456789 接口描述符(备用设置0)字段bLengthbDescTypebInterfaceNumbAltSettingbNumEndpointsbInterfaceClassbInterfaceSubClassbInterfaceProtocoliInterface 数值09h04h00h0000FFh00h00h00h 说明该描述符的长度=10个字节描述符类型=接口该接口的索引(从零开始)=0备用的设置值=0仅使用端点0供应商命令类别 无 Table13偏移012-3456-21222324-47484950-75 字符串描述符字段bLengthbDescTypewLanguagebLengthbDescTypewStringIdx1bLengthbDescTypewStringIdx2bLengthbDescTypewStringIdx3 数值04h03h0409h10h03h–18h03h–1Ah03h– 说明该描述符的长度=04个字节描述符类型=字符串语言=英语该描述符的长度=16个字节描述符类型=字符串"赛普拉斯"该描述符的长度=24个字节描述符类型=字符串"WestBridge"该描述符的长度=26个字节描述符类型=字符串"0000000004BE" 4.4 启动镜像格式 对于USB启动,Booloader要求固件镜像文件格式与Table14中显示的格式相同。
EZ-USB™FX3SDK提供了一个软件工具,通过该工具可生成一个具有USB启动所需的格式的固件镜像。
安装SDK后,请参考位于C:\ProgramFiles\Cypress\EZ-USBFX3SDK\1.3\util\elf2img目录中的elf2img工具。
对于64位的操作系统,路径中的第一个文件夹为"ProgramFiles(x86)"。
目录路径中的1.3数值是指SDK的版本编号,该数值可根据FX3SDK的最新发布版本而变。
更多关于elf2img工具的使用方式请看附录C和附录A的Figure15。
ApplicationNote 16of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 USB启动 Table14启动镜像文件的格式 二进制镜像头长度(16 文件 位) 说明 wSignature
1 两个字节标签使用ASCII文本"CY"初始化。
bImageCTL;½ 位0=0:执行二进制文件;1:数据文件类型 位3:1:进行SPIEEPROM启动时不使用位5:4(SPI速度): 00:10MHz 01:20MHz 10:30MHz11:保留 位7:6:保留,并要设置为零 bImageType;½ bImageType=0xB0:带校验和的普通FW二进制镜像bImageType=0xB2:使用新的VID和PID进行I2C/SPI启动 dLength0
2 第一段长度,单位为长字(32位) 当bImageType=0xB2时,dLength0包含PID和VID。
Bootloader忽略后面的所有数据。
dAddress0
2 编程代码的第一段地址。
Note: 内部ARM地址是字节可寻址的,因此,每一段的地址应该为32位对齐。
dData[dLength0]…dLengthNdAddressN dLength0*2 22 镜像代码/数据必须为32位对齐。
更多的段0x00000000(最后记录:终端段)应该包含有效的程序入口(通常为启动代码,即RESET向量)。
Note: 如果bImageCTL.bit0=
1,Bootloader不会跳到该程序入口。
如果bImageCTL.bit0=
0,Bootloader会跳到该程序入口。
该地址应位于ITCM或SYSTEMRAM内。
Bootloader不会验证程序入口。
dCheckSum2 低位优先的32位无符号校验和数据占用范围是从第一段到终端段。
校验和不包含dLength、dAddress和镜像头文件 4.4.1下面是以长字格式组织的启动镜像示例: Location1:0xB00x10'Y''C'//CYSignature,20MHz,0xB0Image Location2:0x00000004 //Imagelengthofsection1=
4 Location3:0x40008000 //1stsectionstoredinSYSMEMRAMat0x40008000 Location4:0x12345678 //Imagestarts(Section1) Location5:0x9ABCDEF1 Location6:0x23456789 ApplicationNote 17of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 USB启动 Location7:0xABCDEF12 //Section1ends Location8:0x00000002 //Imagelengthofsection2=
2 Location9:0x40009000 //2ndsectionstoredinSYSMEMRAMat0x40009000 Location10:0xDDCCBBAA //Section2starts Location11:0x11223344 Location12:0x00000000 //TerminationofImage Location13:0x40008000 //Jumpto0x40008000onFX3SystemRAM Location14:0x6AF37AF2 //Checksum(0x12345678+0x9ABCDEF1+0x23456789+ 0xABCDEF12+0xDDCCBBAA+0x11223344) 附录A的USB启动部分显示了使用FX3DVK测试USB启动模式的各个步骤。
ApplicationNote 18of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 I2CEEPROM启动
5 I2CEEPROM启动 Figure3显示了FX3通过I2C启动的系统框图。
I2CEEPROM OnReset,FX3bootloaderdownloadsfirmwareoverI2C ExternalFPGA/Processor PMODE2=1PMODE1=ZPMODE0=
Z Figure3FX3通过I2C启动的系统框图 I2C EZ-USBFX3Bootloader ROM USB3.0/USB2.0 对于I2CEEPROM启动,PMODE[2:0]引脚的状态应该为1ZZ,如Table15所示。
Table15PMODE[2]
1 I2C启动的PMODE引脚PMODE[1]
Z Table16显示了FX3I2C接口的引脚映射情况。
PMODE[0]
Z Table16I2C接口的引脚映射情况EZ-USB™FX3引脚I2C_GPIO[58]I2C_GPIO[59] I2C接口I2C_SCLI2C_SDA 5.1 功能 •通过双线I2C接口从I2CEEPROM器件启动FX3。
•支持下面EEPROM2器件大小: −32千比特(Kb)或4千字节(KB) −64Kb或8KB −128Kb或16KB −256Kb或32KB −512Kb或64KB −1024Kb或128KB −2048Kb或256KB USBHost 2只支持2字节I2C地址。
对于尺寸小于32Kb的I2CEEPROM,不支持单字节地址。
ApplicationNote 19of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 I2CEEPROM启动 Note: 由于释放版本中所生成的镜像文件尺寸小于调试版本中的尺寸,建议使用释放模式中所创建的固件镜像。
•已经对ATMEL、Microchip和STElectronics器件进行测试。
(如M24M02、AT24C1024等) •启动过程中,支持100kHz、400kHz和1MHz的I2C频率。
请注意,当VIO5为1.2V时,支持的最大工作频率为100kHz。
当VIO5为1.8V、2.5V或3.3V时,支持的工作频率为400kHz和1MHz。
(VIO5是I2C接口的I/O电压) •FX3Bootloader仅支持从地址为0xA0的I2CEEPROM •支持从多个大小相同的I2CEEPROM器件进行启动。
当I2CEEPROM小于固件镜像时,必须使用I2CEEPROM器件。
Bootloader支持从多个I2CEEPROM器件下载镜像。
超高速ExplorerCYUSB3KIT-003使用STElectronics的256KBEEPROM(M24M02)。
Bootloader支持多达八个小于128KB的I2CEEPROM器件。
Bootloader可支持多达四个大小为128KB的I2CEEPROM器件。
•I2CEEPROM中仅存储唯一一个固件镜像。
不允许存储冗余镜像。
•Bootloader不支持FX3的多主设备I2C特性。
因此,在FX3I2C启动过程中,其他I2C主设备不能在I2C总线上执行任何操作。
5.2 在EEPROM上存储固件镜像 FX3Bootloader支持主设备I2C接口,用于与外部串行I2CEEPROM器件连接。
串行I2CEEPROM可用于存储应用特定的代码和数据。
Figure4显示了典型I2CEEPROM的引脚连接 I2CEEPROM接口包括两条有源线:串行时钟线路(SCL)和串行数据线路(SDA)。
将固件镜像写入到EEPROM时,需要将写保护(WP)引脚置低。
A0、A1和A2引脚均是地址线。
它们将从设备地址设置为000~111。
这样,可以寻址八个大小相同的I2CEEPROM。
根据所需地址,可将这些地址线置于高电平或低电平。
ApplicationNote 20of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 I2CEEPROM启动 VIO5 VIO5 VIO5 10KΩ 10KΩ 10KΩ A0 VCC A1 A2 I2CEEPROM WPGND 2.2KΩ2.2KΩ Figure4典型I2CEEPROM的引脚连接 5.2.1寻址128KBEEPROM时应当注意的事项 各128KBI2CEEPROM的寻址方式并非一样的。
例如,MicrochipEEPROM将引脚A1和A0用于芯片选择,并不使用引脚A2。
但AtmelEEPROM会将引脚A2和A1用于芯片选择,不使用引脚A0。
这两种情况均由Bootloader处理。
固件镜像头文件中会表明寻址方式。
Table17显示了如何连接四个Microchip24LC1025EEPROM器件。
Table17器件序号1234 Microchip24LC1025EEPROM器件连接地址范围0x00000-0x1FFFF0x20000-0x3FFFF0x40000-0x5FFFF0x60000-0x7FFFF A2A1A000011011 大小128KB128KB128KB128KB Table18显示了如何连接四个Atmel24C1024EEPROM器件。
Table18器件序号12 ATMEL24C1024EEPROM器件连接地址范围0x00000-0x1FFFF0x20000-0x3FFFF A2A1A000NC01NC ApplicationNote 21of76 大小128KB128KB 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 I2CEEPROM启动 器件序号地址范围
3 0x40000-0x5FFFF
4 0x60000-0x7FFFF A2A1A010NC11NC 大小128KB128KB Note:NC表示无连接状态。
例如,如果固件代码大于128KB,那么您必须使用两个I2CEEPROM(具有与其相应的寻址方案),如前两个表格所示。
与单一I2CEEPROM相同,需要在各个EEPROM中将固件镜像存储为一个连续的镜像。
5.3 启动镜像格式 Booloader要求固件镜像文件的格式与Table19中所示的格式相同。
EZ-USB™FX3SDK提供了一个软件工具,用于生成一个具有I2CEEPROM启动所需要的格式的固件镜像。
安装SDK后,请参考位于C:\ProgramFiles\Cypress\EZ-USBFX3SDK\1.3\util\elf2img目录中的elf2img工具。
对于64位的操作系统,路径中的第一个文件夹为"ProgramFiles(x86)"。
目录路径中的1.3数值是指SDK的版本编号,该数值可根据FX3SDK的最新发布版本而变。
更多关于elf2img工具的使用方式请看附录C和附录A的Figure21。
Table19固件镜像存储格式 二进制镜像头文件长度(16位) WSignature
1 bImageCTL; ½ 说明两个字节标签使用ASCII文本"CY"初始化。
位0=0:执行二进制文件;1:数据文件类型位3:1(I2C大小)7:128KB(microchip)6:64KB(128KATMEL和256KSTElectronics)5:32KB4:16KB3:8KB2:4KB Note: 保留选项1和
0,以供将来使用。
如果在这些模式下启动,会导致不可预测的结果。
位5:4(I2C速度) 00:100kHz 01:400kHz 10:1MHz11:保留 Note: 默认情况下,Bootloader上电速度为100kHz。
根据要求,I2C速度可被调整。
位7:6:保留;应设置为零 bImageType; ½ dLength0
2 bImageType=0xB0:带校验和的普通FW二进制镜像bImageType=0xB2:使用新的VID和PID进行I2C启动 第一段长度,单位为长字(32位)当bImageType=0xB2时,dLength0包含PID和VID。
Bootloader忽略后面的所有数据。
ApplicationNote 22of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 I2CEEPROM启动 二进制镜像头文件长度(16位) dAddress0
2 说明编程代码中的第一段地址,并不是I2C地址。
Note: 内部ARM地址是字节可寻址的,因此,每一段的地址应该为32位对齐。
dData[dLength0]…dLengthNdAddressN dLength0*2 22 所有的镜像代码/数据都必须为32位对齐。
更多的段0x00000000(最后记录:终端段)应该包含有效的程序入口(通常为启动代码,即RESET向量)。
Note: 如果bImageCTL.bit0=
1,Bootloader不会跳到该程序入口。
如果bImageCTL.bit0=
0,Bootloader会跳到该程序入口。
该地址应位于ITCM或SYSTEMRAM内。
Bootloader不会验证程序入口 dCheckSum
2 低位优先的32位无符号校验和数据占用范围是从第一段到终端段。
校验和不包含dLength、dAddress和镜像头文件 例如:在I2CEEPROM中使用下面的顺序存储二进制镜像文件: 位0:"C" 位1:"Y" 位2:bImageCTL 位3:bImageType ….. 位N:镜像的校验和 Attention: •Bootloader的默认启动速度为100kHz;如果要将速度从100kHz调整为1MHz,bImageCTL<5:4>需要设置为10。
•使用bImageCTL[3:1]可选择I2CEEPROM的大小。
•MicrochipEEPROM24LC1026的寻址与其他128KBMicrochipEEPROM的寻址不同。
如果使用Microchip24LC1026,I2CEEPROM大小字段(例如bImageCTL[3:1])应该被设置为
6。
•FX3SDK生成的.img文件中bImageCTL字节的默认值为0x1C(64KB大小和400KHz速度)。
有关如何为不同的I2C配置生成映像文件的详细信息,请参阅使用I2CEEPROM为FX3生成可引导映像文件KBA218344。
5.4 校验和计算 当下载二进制镜像I2CEEPROM时,Bootloader将计算校验和。
如果校验和与镜像中的值不相匹配,则Bootloader不会跳到程序入口内。
Bootloader在低位优先模式下运行;因此,必须在低位优先模式下计算校验和。
ApplicationNote 23of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 I2CEEPROM启动 低位优先的32位无符号校验和数据占用范围是从第一段到终端段。
校验和不包含dLength、dAddress和镜像头文件。
5.4.1第一个示例启动镜像 以下的镜像仅存储在FX3系统RAM中地址0x40008000的一个段内: Location1:0xB00x1A'Y''C'//CYSignature,32KBEEPROM,400Khz,0xB0Image Location2:0x00000004 //Imagelength=
4 Location3:0x40008000 //1stsectionstoredinFX3SystemRAMat0x40008000 Location4:0x12345678 //Imagestarts Location5:0x9ABCDEF1 Location6:0x23456789 Location7:0xABCDEF12 Location8:0x00000000 //TerminationofImage Location9:0x40008000 //Jumpto0x40008000inFX3SystemRAM Location10:0x7C048C04 //Checksum(0x12345678+0x9ABCDEF1+0x23456789+0xABCDEF12) 5.4.2第二个示例启动镜像 以下镜像存储在FX3系统RAM中地址0x40008000和0x40009000的两个段内: Location1:0xB00x1A'Y''C'//CYSignature,32KBEEPROM,400Khz,0xB0Image Location2:0x00000004 //Imagelengthofsection1=
4 Location3:0x40008000 //1stsectionstoredinFX3SystemRAMat0x40008000 Location4:0x12345678 //Imagestarts(Section1) Location5:0x9ABCDEF1 Location6:0x23456789 Location7:0xABCDEF12 //Section1ends Location8:0x00000002 //Imagelengthofsection2=
2 Location9:0x40009000 //2ndsectionstoredinFX3SystemRAMat0x40009000 Location10:0xDDCCBBAA //Section2starts Location11:0x11223344 Location12:0x00000000 //TerminationofImage Location130x40008000 //Jumpto0x40008000inFX3SystemRAM Location14:0x6AF37AF2 //Checksum(0x12345678+0x9ABCDEF1+0x23456789+0xABCDEF12+0xDDCCBBAA+0x11223344) 同样,您可以使用一个启动镜像存储某个镜像的N个段。
附录A中的I2C启动部分显示了使用FX3DVK测试USB启动模式的各步骤。
ApplicationNote 24of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 I2CEEPROM启动 5.4.3校验和计算示例代码 以下内容介绍了校验和示例代码://ChecksumsamplecodeDWORDdCheckSum,dExpectedCheckSum;WORDwSignature,wLen;DWORDdAddress,i;DWORDdImageBuf[512*1024]; fread(&wSignature,1,2,input_file);//readsignaturebytes if(wSignature!
=0x5943) //check'CY'signaturebyte { printf(“Invalidimage”); returnfail; } fread(&i,2,1,input_file); //skip2dummybytes dCheckSum=0; while
(1) { fread(&dLength,4,1,imput_file);//readdLength fread(&dAddress,4,1,input_file);//readdAddress if(dLength==0)break; //done //readsections fread(dImageBuf,4,dLength,input_file); for(i=0;i=dExpectedCheckSum) { printf(“Failtobootduetochecksumerror\n”); returnfail; }本节描述了I2C启动选项的详细信息。
下一节将介绍使用USB回退功能时的I2C启动选项。
ApplicationNote 25of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 带有USB回退功能的I2CEEPROM启动
6 带有USB回退功能的I2CEEPROM启动 对于带有USB回退功能的I2CEEPROM启动,PMODE[2:0]引脚的状态应为Z1Z,如Table20中所示。
Table20PMODE[2]
Z 带有USB回退功能的I2C启动的PMODE引脚PMODE[1]
1 PMODE[0]
Z 在所有USB回退功能模式中(表示为"-->USB"),如果选择了0xB2启动或发生错误,则USB将进行枚举。
USB枚举后,外部USB主机可使用USB启动模式启动FX3。
此外,还会使用带有USB回退功能的I2CEEPROM启动(I2C-->USB)来存储USB启动所需的供应商标识(VID)和产品标识(PID)。
I2CEEPROM启动操作会在下面的条件中失败: •I2C地址周期或数据周期错误•FX3固件镜像中的无效标签•无效的镜像类型 特殊的镜像类型可用于表示EEPROM中的数据是USB启动时使用的VID和PID,而不是FX3固件镜像。
这样,可以给USB启动提供新的VID和PID。
6.1 功能 •对于USB启动,Bootloader仅支持USB2.0,并不支持USB3.0。
•如果指定了0xB2启动选项,则USB描述符将使用客户定义的VID和PID。
这些信息作为0xB2镜像的一部分,存储在I2CEEPROM中。
•对于USB回退功能,如果在I2C启动时发生任何错误,USB描述符将使用VID=0x04B4和PID=0x00F3。
•USB器件描述符被记录为总线供电,并消耗大约200mA的电流。
但在一般情况下,FX3芯片只消耗大约100mA的电流。
6.2 使用VID和PID启动的示例镜像 Location1:0xB20x1A'Y''C'//CYSignature,32kEEPROM,400Khz,0xB2Image Location2:0x04B40008 //VID=0x04B4|PID=0x0008 ApplicationNote 26of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 SPI启动
7 SPI启动 Figure5显示了FX3通过SPI启动时的系统框图。
SPIFlash/EEPROM OnReset,FX3bootloaderdownloadsfirmwareoverSPI ExternalFPGA/Processor PMODE2=0PMODE1=ZPMODE0=
1 Figure5SPI启动的系统框图 SPI EZ-USBFX3Bootloader ROM USB3.0/USB2.0 USBHost 对于SPI启动,PMODE[2:0]引脚的状态应该为0Z1,如Table21所示。
Table21PMODE[2]
0 SPI启动的PMODE引脚PMODE[1]
Z Table22显示了FX3SPI接口的引脚映射情况。
PMODE[0]
1 Table22SPI接口的引脚映射情况EZ-USB™FX3引脚GPIO[53]GPIO[54]GPIO[55]GPIO[56] SPI接口SPI_SCKSPI_SSNSPI_MISOSPI_MOSI 7.1 功能 FX3通过四线SPI接口从SPI闪存/EEPROM器件启动。
•支持大小为1Kb到128Mb的SPI闪存/EEPROM器件用于启动。
支持的SPIFlash部件: −SPIFlash(S25FS064S(64-Mbit),S25FL064L(64-Mbit)andS25FS128S(128-Mbit))−WinbondW25Q32FW(32-Mbit)•启动时,支持~10MHz、~20MHz和~30MHz的SPI频率。
•请注意,由于对SPI时钟分频器和时钟输入进行了取整,因此SPI频率可能发生改变。
−如果FX3的晶振或时钟输入的频率为26MHz或52MHz,那么内部PLL将以416MHz的频率运行。
PLL_CLK=416MHz时,SPI的频率可为10.4MHz、20.8MHz或34.66MHz。
ApplicationNote 27of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 SPI启动 −当FX3的晶振或时钟输入的频率为19.2MHz或38.4MHz时,内部PLL将以384MHz的频率运行。
PLL_CLK=384MHz时,SPI的频率可为9.6MHz、19.2MHz或32MHz。
•支持的工作电压为1.8V、2.5V和3.3V。
•在SPI闪存/EEPROM中仅存储唯一一个固件镜像。
不允许存储冗余的镜像。
•对于SPI启动,Bootloader将CPOL设置为
0,将CPHA设置为
0。
(有关该SPI模式的时序框图,请参 考FX3数据手册中的SPI时序。
)•支持USB回退功能,用于存储USB启动所需的新VID/PID信息。
更多信息,请参考本应用笔记中的带 有USB回退功能的SPI启动一节。
7.2 SPI闪存的选择 SPI闪存需要支持以下命令,用以支持FX3启动。
•读取数据:03h,并使用3字节进行寻址•读状态寄存器:05h•写入使能:06h•写入数据(页编程):02h•扇区擦除:D8h 只要读命令匹配,可使用一个SPI闪存进行FX3启动。
如果写命令存在差异,那么使用所提供的CyBootProgrammer.img(位于C:\ProgramFiles(x86)\Cypress\EZ-USBFX3SDK\1.3\bin内)便不能成功编程SPI闪存;这时需要更改FX3SDK的USBFlashProg示例项目中使用的SPI写命令。
使用编译更改好的USBFlashProg项目后所创建的镜像文件替代掉所提供的CyBootProgrammer.img(名称相同),以便成功编程SPI闪存。
7.3 SPI闪存混合扇区的使用 某些SPI闪存设备(如S25FS128S/S25FS256S等)可能支持混合扇区。
例如,64KB的第一个扇区可以分为9个扇区(8个4KB扇区和一个32KB扇区)。
所有剩余的扇区都是统一的(每个64KB)。
当使用FX3SDK中的USB控制中心应用程序对SPI闪存进行编程时,内部编程实用程序(CyBootProgrammer.img)假定闪存设备的扇区大小一致;这会导致第一个扇区(混合扇区)中的数据损坏。
为防止这种情况,请通过修改相应的配置寄存器将闪存设备配置为使用每个64KB的统一扇区。
请参阅KBA231163以了解有关将FX3结合使用混合SPI闪存设备的更多信息。
7.4 在SPI闪存/EEPROM中存储固件镜像 FX3Bootloader支持一个主设备SPI控制器,用于连接至外部串行SPI闪存/EEPROM器件。
SPI闪存/EEPROM用于存储应用特定的代码和数据。
Figure6显示了典型SPI闪存/EEPROM的引脚布局。
SPIEEPROM接口包括四条有源线: •CS#:芯片选择•SO:串行数据输出(主入从出(MISO))•SI:串行数据输入(主出从入(MOSI))•SCK:串行时钟输入 从SPI器件启动或读取时,需要将HOLD#信号连接至VCC 将镜像写入到EEPROM时,需要将写保护(WP#)和HOLD#信号连接至VCC。
Note:在MOSI和MISO信号上不应连接外部上拉,如Figure6所示。
ApplicationNote 28of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 SPI启动Note:建议在MISO线上包括一个下拉电阻(2K)。
Note: 有关SPI引脚连接的建议,请参阅AN70707EZ-USB™FX3/FX3S硬件设计指南和原理图检查表的"SPI和UART"部分。
SPI_MOSI SI VCC 2KΩSPI_MISOSO 100KΩSPI_CLKCK VIO4 SPIflash 4.7KΩSPI_HOLD#HOLD# 4.7KΩSPI_SSN#SSN# 4.7KΩSPI_WP# VSS WP# Figure6M25P40-VMN6TPBSPI闪存的引脚连接示例 7.5 启动镜像格式 对于SPI启动,Booloader要求固件镜像文件与Table23中所示的格式相同。
EZ-USB™FX3SDK提供了一个软件工具,用于生成一个具有SPI启动所需的格式的固件镜像。
安装SDK后,请参考位于C:\ProgramFiles\Cypress\EZ-USBFX3SDK\1.3\util\elf2img目录中的elf2img工具。
对于64位的操作系统,路径中的第一个文件夹为"ProgramFiles(x86)"。
目录路径中的1.3数值是指SDK的版本编号,该数值可根据FX3SDK的最新发布版本而变。
更多关于elf2img工具的使用方式请看附录C和附录A的Figure29。
ApplicationNote 29of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 SPI启动 Table23SPI启动选项的启动镜像格式 二进制镜像头文件长度(16位)说明 wSignature
1 两个字节标签使用ASCII文本"CY"初始化。
bImageCTL ½ 位0=0:执行二进制文件;1:数据文件类型 位3:1进行SPI启动时不使用 位5:4(SPI速度): 00:10MHz 01:20MHz 10:30MHz 11:保留 Note: 默认情况下,Bootloader上电时的速度为10MHz。
根据要求,SPI速度可被调整。
FX3SPI硬件的运行速度不能超过33MHz。
位7:6:保留。
应将其设置为零。
bImageType ½ dLength0
2 dAddress0
2 bImageType=0xB0:带校验和的普通固件二进制镜像bImageType=0xB2:使用新的VID和PID进行SPI启动第一段长度,单位为长字(32位)当bImageType=0xB2时,dLength0包含PID和VID。
Bootloader忽略后面的所有数据。
编程代码的第一段地址。
Note: 内部ARM地址是字节可寻址的,因此,每一段的地址应该为32位对齐。
dData[dLength0]…dLengthNdAddressN dLength0*2 22 镜像代码/数据必须为32位对齐。
更多的段0x00000000(最后记录:终端段)应该包含有效的程序入口(通常为启动代码,即RESET向量)。
Note: 如果bImageCTL.bit0=
1,Bootloader不会跳到该程序入口。
如果bImageCTL.bit0=
0,Bootloader将跳到程序入口。
该地址应位于ITCM或SYSTEMRAM内。
Bootloader不会验证程序入口。
dCheckSum
2 低位优先的32位无符号校验和数据占用范围是从第一段到终端段。
校验和不包含dLength、dAddress和镜像头文件 例如:在SPIEEPROM中以下面顺序存储二进制镜像文件:位0:"C"位1:"Y"位2:bImageCTL ApplicationNote 30of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 SPI启动 位3:bImageType…..位N:镜像的校验和重要的注意事项:Bootloader的默认启动速度为10MHz;想要将速度从10MHz改为20MHz,需要将bImageCTL[5:4]设置为01。
7.6 校验和计算 当通过SPI下载二进制镜像时,Bootloader将计算校验和。
如果校验和与镜像中的值不匹配,Bootloader不会跳到程序入口。
Bootloader在低位优先模式下运行;因此,必须在低位优先模式下计算校验和。
低位优先的32位无符号校验和数据占用范围是从第一段到终端段。
校验和不包含dLength、dAddress和镜像头文件。
有关计算校验和的示例代码的信息,请参考校验和计算示例代码一节。
示例
1.下面示例显示了固件镜像仅存储在FX3系统RAM中地址0x40008000的一个段内。
Location1:0xB00x10'Y''C'//CYSignature,20MHz,0xB0Image Location2:0x00000004 //Imagelength=
4 Location3:0x40008000 //1stsectionstoredinFX3SystemRAMat0x40008000 Location4:0x12345678 //Imagestarts Location5:0x9ABCDEF1 Location6:0x23456789 Location7:0xABCDEF12 Location8:0x00000000 //TerminationofImage Location9:0x40008000 //Jumpto0x40008000inFX3SystemRAM Location10:0x7C048C04 //Checksum(0x12345678+0x9ABCDEF1+0x23456789+0xABCDEF12) 示例
2.下面的示例显示了一个固件镜像被存储在FX3系统RAM中地址0x40008000和0x40009000的两个段内。
Location1:0xB00x10'Y''C'//CYSignature,20MHz,0xB0Image Location2:0x00000004 //Imagelengthofsection1=
4 Location3:0x40008000 //1stsectionstoredinFX3SystemRAMat0x40008000 Location4:0x12345678 //Imagestarts(Section1) Location5:0x9ABCDEF1 Location6:0x23456789 Location7:0xABCDEF12 //Section1ends Location8:0x00000002 //Imagelengthofsection2=
2 Location9:0x40009000 //2ndsectionstoredinFX3SystemRAMat0x40009000 Location10:0xDDCCBBAA //Section2starts ApplicationNote 31of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 SPI启动 Location11:0x11223344 Location12:0x00000000 //TerminationofImage Location13:0x40008000 //Jumpto0x40008000inFX3SystemRAM Location14:0x6AF37AF2 //Checksum(0x12345678+0x9ABCDEF1+0x23456789+0xABCDEF12+0xDDCCBBAA+0x11223344) 同样,您可以使用一个启动镜像存储某个镜像的N个段。
附录A中的SPI启动部分显示了使用FX3DVK测试USB启动模式的各步骤。
ApplicationNote 32of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 带有USB回退功能的SPI启动
8 带有USB回退功能的SPI启动 在所有的USB回退功能("-->USB")模式中,如果选择0xB2启动或发生错误,USB将进行枚举。
在USB枚举后,外部USB主机可使用USB启动模式启动FX3。
此外,还能使用带USB回退功能的SPI启动(SPI-->USB)来存储USB启动所需的VID和PID。
SPI启动在下面条件下操作失败: •SPI地址周期或数据周期错误•FX3固件中的无效标签。
无效的镜像类型 特殊的镜像类型可用于表示SPI闪存/EEPROM中的数据是USB启动时使用的VID和PID,而不是FX3固件镜像。
这样,可以给USB启动提供新的VID和PID。
•对于USB启动,Bootloader仅支持USB2.0,并不支持USB3.0。
•如果指定了0xB2启动选项,USB描述符将使用客户定义的VID和PID。
这些信息作为0xB2镜像的一部分,存储在SPI闪存/EEPROM中。
•对于USB回退功能,如果在I2C启动时发生任何错误,USB描述符将使用VID=0x04B4和PID=0x00F3。
•USB器件描述符被记录为总线供电,消耗大约200mA的电流。
但在一般情况下,FX3芯片只消耗大约100mA的电流。
8.1 使用VID和PID启动的示例镜像 Location1:0xB20x10'Y''C'//CYSignature,20MHz,0xB2Image Location2:0x04B40008 //VID=0x04B4|PID=0x0008 下一节将介绍同步ADMux接口以及通过该接口启动的详细信息。
ApplicationNote 33of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 同步ADMux启动
9 同步ADMux启动 Figure7显示了通过同步ADMux接口启动的FX3系统框图。
ExternalFPGA/Processor EZ-USBFX3 SyncADMux PMODE2=ZPMODE1=0PMODE0=
0 SyncADMuxBootloaderROM USB2.0/USB3.0 USBHost Figure7同步ADMux启动的系统框图 想要通过同步ADMux接口启动,那么应将PMODE[2:0]引脚的状态设置为Z00,如Table24所示。
Table24PMODE[2]
Z 同步ADMux启动的PMODE引脚PMODE[1]
0 PMODE[0]
0 FX3GPIFII接口支持一个同步ADMux接口,该接口用于从外部处理器或FPGA下载固件镜像。
由Bootloader配置的同步ADMux接口包括以下各信号: •PCLK:该信号必须作为FX3的时钟输入使用。
支持的时钟输入频率最大为100MHz•DQ[15:0]:16位数据总线•A[7:0]:8位地址总线•CE#:低电平有效的芯片使能•ADV#:低电平有效的地址有效•WE#:低电平有效的写使能•OE#:低电平有效的输出使能•RDY:高电平有效的就绪信号 9.1.1接口信号 Figure8中显示了由Bootloader配置并连接至外部处理器的同步ADMux接口的典型互联框图。
ApplicationNote 34of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 同步ADMux启动 ExternalProcessor CLKCE#ADV#A[7:0]/DQ[15:0]WE#OE#RDY EZ-USBFX3 Figure8同步ADMUX接口 进行读操作时,必须激活CE#和OE#。
进行写操作时,则要激活CE#和WE#。
在读/写操作的地址阶段内,必须将ADV#置为低电平。
在读/写操作的数据阶段内,则必须将ADV#置于高电平。
FX3器件的RDY输出信号表示数据有效,并能够对其进行读取。
Table25显示了FX3同步ADMux接口的引脚映射情况。
Table25同步ADMux接口的引脚映射情况EZ-USB™FX3引脚GPIO[7:0]/GPIO[15:0]GPIO[16]GPIO[17]GPIO[18]GPIO[19]GPIO[25]GPIO[27] 同步ADMUX接口A[7:0]/DQ[15:0]CLKCE#WE#OE#RDYADV# 9.1.2同步ADMux时序 有关同步ADMux时序图(同步ADMux接口—读周期时序和写周期时序)以及时序参数的详细信息,请参考Figure9、Figure10和Table26。
同步ADMUX模式上电延迟 ApplicationNote 35of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 同步ADMux启动 上电时或在RESET#线上发生硬复位时,Bootloader需要花费一段时间来配置实现同步ADMux接口的GPIFII。
大概需要几百微秒的时间。
仅在配置好Bootloader后,才能对FX3进行读/写访问。
否则,将损坏数据。
为了防止发生这种情况,请使用以下方案中的一个:•取消激活RESET#后再等待1ms。
•持续轮询PP_IDENTIFY寄存器,直到回读0x81值为止。
•等待INT#信号被激活,然后读取RD_MAILBOX寄存器,并验证回读的值是否等于0x42575943(即 'CYWB')。
9.1.3USB回退功能(-->USB) 在同步ADMUX启动过程中,即使命令发生了错误,USB回退功能也不会有效。
9.1.4热启动 当检测到热启动时,Bootloader会跳到上次存储的"程序入口"(可能就是用户的RESET向量)处。
在这种情况下,GPIFII配置被保留。
9.1.5唤醒/待机 从待机模式唤醒后,应用固件将配置并恢复硬件寄存器、GPIFII配置、ITCM或DTCM。
从待机模式唤醒后,Bootloader将检查已被使能的ITCM和DTCM。
Note: Bootloader从待机模式唤醒或从热启动过程唤醒时,它会跳到复位中断服务子程序,并执行以下操作: •使DCACHE和ICACHE无效•打开ICACHE•禁用MMU•打开DTCM和ITCM•使用DTC设置堆栈 Bootloader分配了0x500字节(范围为0x1000_0000到0x1000_04FF),因此,0x1000_0500到0x1000_1FFF的地址空间可用于下载固件。
当下载应用运行时,可将存储器中0x1000_0000到0x1000_04FF的地址空间用于其他目的。
ApplicationNote 36of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 同步ADMux启动 Figure9同步ADMux接口—读周期时序 Note:
1.外部P-Port处理器和FX3S在同一个时钟沿上运行。

2.外部处理器看到在OE#激活两个周期后,RDY激活,并看到数据输出一个周期后,RDY取消激活。

3.OE#激活后,有效的输出数据存在两个周期。
数据一直保持到OE#取消激活为止。

4.对于0-100MHz的操作,延迟等于两个周期。
对于小于50MHz的操作,延迟可减少为一个周期。
(Bootloader不支持一周期的延迟) Figure10同步ADMux接口—写周期时序 ApplicationNote 37of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 同步ADMux启动Note:
1.外部P-Port处理器和FX3S在同一个时钟沿上运行。

2.外部处理器看到在WE#激活两个周期后,RDY激活,并看到在采样数据三个周期后,RDY取消激活。

3.对于0-100MHz的操作,延迟等于两个周期。
对于小于50MHz的操作,延迟可减少为一个周期。
(Bootloader不支持一周期的延迟) Table26参数FREQtCLKtCLKHtCLKLtStHtCHtDStDHtAVDOEtAVDWEtHZtOHZtOLZtKW 同步ADMux时序参数说明接口时钟频率时钟周期时钟高电平时间时钟低电平时间CE#/WE#/DQ的建立时间CE#/WE#/DQ的保持时间时钟上升沿后数据输出保持的时间数据输入的建立时间时钟上升沿后数据输入保持的时间从ADV#为高电平到OE#为低电平的时间从ADV#为高电平到WE#为低电平的时间从CE#为高电平到数据为高阻态的时间从OE#为高电平到数据为高阻态的时间从OE#为低电平到数据为高阻态的时间时钟上升沿后到RDY有效的时间 最小值–104420.5020.500––0– 最大值100––––––––––88–
8 单位MHznsnsnsnsnsnsnsnsnsnsnsnsnsns 9.1.6GPIFIIAPI协议 该协议仅在GPIFII启动模式下使用。
复位后,外部应用处理器(AP)会使用Table27中定义的命令协议与Bootloader进行通信。
Table27GPIFIIAPI协议 字段 说明 bSignature[2] 2个字节发送方使用"CY"初始化Bootloader使用"WB"响应 bCommand 发送方:1个字节的命令 0x00:NOP 0x01:WRITE_DATA_CMD:写数据命令0x02:进入启动模式 0x03:READ_DATA_CMD:读数据命令Bootloader忽略其他所有命令,并返回bLenStatus中的错误代码 ApplicationNote 38of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 同步ADMux启动 字段bLenStatus dAddrdData[bLenStatus] 说明 输入:(1个字节)00:bLenStatus=0(如果bCommand为WRITE_DATA_CMD,Bootloader将跳到dAddr中的addr,并忽略其他所有命令)01:表示长度,单位为长字(最大值为(512-8)/4)02:512字节大小的块的数量(最大值为16)03:表示长度,单位为长字(最大值为(512-8)/4)Bootloader在PIB_RD_MAILBOX1寄存器中响应下述数据:0x00:成功0x30:命令过程中发生错误,导致操作失败0x31:读取操作发生错误,导致操作失败0x32:中止检测0x33:Bootloader向应用发送的PP_CONFIG.BURSTSIZE邮件箱提示。
PIB_RD_MAILBOX0包含GPIF_DATA_COUNT_LIMIT寄存器。
0x34:Bootloader检测DLL_LOST_LOCK。
PIB_RD_MAILBOX0包含PIB_DLL_CTRL寄存器。
0x35:Bootloader检测PIB_PIB_ERR位。
PIB_RD_MAILBOX0包含PIB_PIB_ERROR寄存器。
0x36:Bootloader检测PIB_GPIF_ERR位。
PIB_RD_MAILBOX0包含PIB_PIB_ERROR寄存器。
4字节发送方:由命令1和3使用的地址 由bLenStatus确定的数据长度发送方:由发送方写入的数据 Note:
1.错误代码bLenStatus将在GPIFII的邮件箱中报告。

2.当使用同步ADMUX将固件下载到FX3时,外部AP需要进行以下操作:a)命令块长度必须等于512个字节。
b)响应块长度必须等于512个字节。
c)需要将Bootloader二进制镜像转换成一个被分成多个512字节的数据流。
d)Bootloader镜像的数据块大小不能超过8K。
例如,对于命令0x02,bLenStatus不能占用超过16个块(8K个字节)。
上述限制是由于最大DMA缓冲区大小。
引导加载程序支持的最大DMA_SIZE为8K,因此,AP每次传输只能发送8K数据(最大值)。
如果固件大小大于8K,则需要多次传输才能将完整的固件下载到FX3。
即,每次传输都应重复第12.4节的步骤
4,直到传输完整的固件e)主机不应该发送大小超过镜像总空间的数据量。

3.Bootloader不支持排队命令。
因此,每次发送某个命令时,主机必须读取其响应。

4.在下载过程中,您应该防止破坏该API结构。
主机不应该将固件下载到Bootloader的保留系统地址 (0x4000_0000到0x4000_23FF)内。
如果固件应用尝试使用该地址空间,那么将返回错误结果。
不应该使 用DTCM中前1280个字节(0x1000_0000–0x1000_04FF)。

5.对于WRITE_DATA_CMD:当bLenStatus=0时,Bootloader将跳到dAddr的程序入口。
ApplicationNote 39of76 001-98024Rev.*D2022-03-17 EZ-USB™FX3/FX3S启动选项 同步ADMux启动 9.1.7固件下载示例 本节介绍了通过16位同步ADMux接口,将固件从主机处理器下载到FX3的一个简单方法。
主机处理器与FX3Bootloader进行通信,以执行固件下载。
进行通信时,主机处理器需要对FX3寄存器和数据套接字进行读和写操作。
Note:有关FX3中套接字概念的详细信息,请参考EZ-USB™FX3入门应用笔记中的"FX3术语"部分。
主机处理器使用可用的GPIFII套接字将数据块传入/传出FX3。
FX3Bootloader使用三个数据套接字来处理固件下载协议,这三个数据套接字分别用于命令、响应和固件数据。
#defineCY_WB_DOWNLOAD_CMD_SOCKET (0x00)//mandblockwriteonlysocket #defineCY_WB_DOWNLOAD_DATA_SOCKET(0x01)//datablockread/writesocket #defineCY_WB_DOWNLOAD_RESP_SOCKET(0x02)//responsereadonlysocket 主机处理器通过这些数据套接字与FX3Bootloader进行通信,以进行固件下载。
命令和响应是用于固件下载协议的数据结构。
其大小都为512个字节。
在这些数据结构中对各个位字段进行了定义,用以执行FX3Bootloader的各个功能。
在本文档所提供的简单示例实现中,实际上仅使用了命令和响应的头4个字节。
命令和响应中剩余的数据字节可忽略。
对于高级别的FX3固件,下载过程要求主机处理器执行以下套接字访问序列:
1.一个命令套接字写操作,命令块被初始化为: command[0]='C'; command[1]='Y'; /*firsttwobytesaresignaturebyteswith constantvalueof"CY"*/ command[2]=0x02; /*0x2isvalueforbootmand.*/ command[3]=0x01; /*1datablock*/
2.另一

标签: #回收站 #转换成 #字体大小 #格式 #文件 #彻底删除 #打印机 #文件夹