从零开始的ZYNQ学习(基于矿卡EBAZ4205)(一) |
您所在的位置:网站首页 › 4205和4415 › 从零开始的ZYNQ学习(基于矿卡EBAZ4205)(一) |
文章目录
0. 声明1. 矿卡EBAZ4205介绍2. 学习要点和目标3. 成品板?开发板!4. 板载外设们4.1 TF卡及TF卡启动配置4.2 PWM输出电路的修改4.3 LED4.4 按键4.5 PS端时钟源4.6 PL端时钟源(1)与IP101GA共享时钟源(2)使用有源晶振(3)MRCC和SRCC
5. 裸机的Hello World(调试&固化)5.1 启动镜像和开发工具说明5.2 Vivado工程创建(1)调用ZYNQ的IP核(2)配置UART(3)配置DDR(4)精简其它配置项(5)完成配置&验证(6)创建HDL封装(7)生成Bitstream文件(8)导出硬件(9)启动SDK
5.3 SDK工程调试(1)创建Hello World示例工程(2)调试前硬件的准备工作(3)配置板端调试(4)启动板端调试
5.4 将裸机镜像固化到NAND Flash(1)ZYNQ启动流程概述(2)NAND的适配和Vivado工程修改(3)创建FSBL工程·1)创建启动镜像使用的FSBL·2)创建烧录NAND Flash使用的FSBL
(4)生成启动镜像(5)下载启动镜像
参考资料1. 相关信息2. 参考描述
0. 声明
本文由长春理工大学电子信息工程学院C&I实验室所有,已获得原作者发布授权。转载请注明出处。 本文编写过程中参考了很多前辈的记录,在此表示感谢,已将所有参考项列于文末。 当前版本R1.0(预发布)。 作者联系方式:E-mail: [email protected] 1. 矿卡EBAZ4205介绍比特币因着时间的推移渐渐淡出公众的视线,在浪潮中追逐过的人们也随之一哄而散,所剩下来的,也许就是曾经为“挖矿”努力工作过的矿机们,蒙着厚厚的灰尘在无人知晓的角落被人遗忘。本文所基于的硬件便是它们其中的一员。
下面是对该板的参数说明: EBAZ4205采用ZYNQ7010(XC7Z010-CLG400-1)作为主控。 DRAM有两个版本(就我知道的而言),分别是Etron的EM6GD16EWKG-12H(DDR3 SDRAM 2G-Bit 128Mx16 1.5V 96-Pin F-BGA),或者是镁光的MT41K128M16(丝印关键词:D9MPTK)。它们都是256MiB的DDR3(后者是DDR3L)。 存储器使用华邦的W29N01HV,一个128MiB×8bit的NAND。 单口百兆以太网芯片使用WIZnet的IP101GA,LQFP-48封装,3.3V供电。 主板整体供电使用12V直流,但是论坛上有人测试5V似乎也可以跑起来;用于电源供电的接口类型为5557-6pin。 成品板还自带1路PS调试串口、支持XILINX下载器的标准14pin JTAG调试口、2路PWM输出、TF卡槽(未焊接。注:官方手册中描述为SD Card,本文遵循矿卡采用的接口,称其为TF卡。)、两个LED、2个按键(其中之一未焊接)以及14路*3的PL端IO接口。对于PL端的AXI GPIO,已经有商家做出了匹配的转接板,提供RS232、VGA、OV7670等扩展接口,但是价格不菲,如有需要自己画板也是一个很好的选择。 这些资源差不多就是我们最终能够使用的了,详细的电路修改或者使用说明看后面的章节吧~如果时间允许我去搞的话。 2. 学习要点和目标开始之前一定有一个疑问,为什么不直接使用成品的开发板呢?开发板的资料一定比这种逆向工程的资料要全一些。这是因为穷,如果有第二个原因,那就是:在可能的情况下,对于陌生的东西,自己在主动探索和发现的过程中会得到更多的成长、成就感和喜悦之情。 学习的目的不在于吃透这个板子,它只是工具,而且是性(you)价(bug)比(mei)比(ban)较(fa)高(gai)的便宜货,能学到多少是多少,只管尽力,但不要花费过多的时间和精力。本文只是对其PS端进行学习,学习的要点如下: 了解成品板基本结构,知道从购买回来到改造成开发板需要做的改动; 学习ZYNQ7000SoC的PS端工程构建流程; 掌握在成品板的局限环境下的烧录和调试方法; 学习NAND Flash相关知识(配置、烧录、启动等); 学习TF卡相关知识(配置、烧录、启动等); 学习基于Vivado+Petalinux配置下的PS端Linux对外设的访问; 学习PS-PL通过AXI总线的通信方法。 最终的目标是,我们可以有足够的资料和经验,将这块廉价的成品板做成实验室可用的开发板。 3. 成品板?开发板!当购买回一块矿卡之后,需要进行以下修改才能进行基本的测试(查看原有程序的运行输出)。 焊接D24二极管(可使用SS810),以使矿卡可从5557-6pin接口获得供电。焊接也可使用一根铁丝直接短接,从原理图可知,它主要是起到桥接前后级电源的作用; 制作电源线。可以使用5557-6pin的端子自己制作,也可以简单粗暴地自己从背板焊出来两条线; 焊接JTAG排针。板子上的JTAG引脚是完全按照XILINX下载器的顺序定义的,因此为调试带来方便。JTAG口的对应位置如图所示:
最基本的操作完成了!把串口连接在开发PC上(可别问用什么连接,USB转TTL嘛),串口终端打开调试串口,通电即可看到输出。此时系统是从板载的NAND启动的,虽然不如TF卡方便,但是现在它有串口、最小系统和网口(可提供下载),已然成为了一块开发板。 4. 板载外设们只能跑系统,实在是让开发者感到憋屈,更何况它是人造出来的机器,自然也得能和人进行互动才成,为一个系统配备输入和输出是基本的情怀(…也许吧)。所以下面看一看板子上的外设们。 事先声明,这些外设中,有些我也没进行过验证,只是搜集的资料或者随便乱写的,姑且看之吧(笑)。 注:以下对矿卡ZYNQ外设的配置修改方法可根据需求自行决定是否采用,它们不是必须的。 4.1 TF卡及TF卡启动配置两种版本的矿卡中,TF卡相关电路的已焊接器件均是一样,在原理图中只有R166-10K-1%和R167-0Ω-1%是连接的,其余上拉电阻(R160、R161、R162、R163、R164、R165)和滤波电容(C93、C94)均为空贴,实际上只要焊接TF卡座即可。焊接前建议使用吸锡器清除焊盘上的焊锡再手动依次焊接,因为板子散热较好,风枪和烙铁不容易使焊盘达到焊锡熔点。 ZYNQ的启动模式配置在手册《UG585-ZYNQ7000技术参考手册(v1.12.2)》中,版本之间会有差异,但功能上不变,启动时MIO电平配置与启动方式之间的关系如图所示:
一定要使用电阻而非短接,这一点是必须的,猜猜看为什么?(后文有答案) 4.2 PWM输出电路的修改矿卡上共有两组PWM相关接口,它们的丝印分别是J3和J5。每一组有SPEED和PWM两个信号,SPEED线路为信号输入,PWM线路为信号输出,流经它们的信号经过光耦与外界隔离。各引脚的标号、信号流向以及与ZYNQ的连接如下表所示:
拆除电阻:R2552、R2553、R2554、R2557,这些电阻在原理图上原本是NC; 焊接四个PC817光电耦合器; 焊接电阻:R2548-10K-1%、R2549-10K-1%、R2547-10K-1%、R2546-10K-1%、R2544-10K-1%、R2545-10K-1%、R2551-1K-1%、R2555-1K-%1(该电阻在原理图上错标为R3555)、R2550-10K-1%(该电阻在原理图上错标为R3550)、R2556-10K-1%。 4.3 LED矿卡上原焊接有6个LED,它们(的丝印)分别是: 接在VCC和GND之间,用于指示供电的LED4; 接在ZYNQ的DONE_0引脚,用于指示ZYNQ配置完成的LED1; 接在ZYNQ上W13和W14的红、绿指示灯(暂未做对应)LED6; 接在IP101GA上的2个网口指示灯。 即可用于自定义的仅有2个。 4.4 按键矿卡上共有2个按键,它们的丝印是S2和S3(注:没有S1),其中只有S2及其电路是已经焊接好的。 如需焊接S3,首先观察矿卡,确定其版本,使用Etron的DRAM版本的矿卡上,S3的相关电阻、电容均已焊好,只需焊接按键即可;使用镁光的DRAM版本的矿卡上,需焊接C2410-1UF和R2649-0Ω-1%(原理图上标注为R2641A),再焊接按键。 S2按键连接在ZYNQ的A17引脚;S3按键连接在ZYNQ的A14引脚。按键松开时引脚上为低电平。 4.5 PS端时钟源PS端时钟输入引脚(PS_CLK)是固定的,矿卡采用一颗33.333MHz有源晶振作为PS端时钟。 4.6 PL端时钟源总的来说,ZYNQ的PL端时钟有两个来源,它可以配置为由PS端提供,或由外部时钟提供。当使用外部时钟时,矿卡的硬件电路提供了两种选择。 (1)与IP101GA共享时钟源IP101GA需要25.000MHz的晶振作为时钟来源,该晶振的输出经由电阻R1485(e.g. 33Ω)与ZYNQ的U18引脚相连。 注意:在使用镁光的DRAM版本的矿卡上,该电阻已处于连接的状态,此时需设置PL端通过R1485向IP101GA提供时钟;在使用Etron的DRAM版本的矿卡上,可增加R1485使PL端获取到IP101GA的时钟。 注:在PL和IP101GA共享时钟源时,需要注意PL端IO配置,否则会出现PHY不工作或ZYNQ端检测PHY异常的情况。 另一种时钟来源与IP101GA本身的配置有关,IP101GA的RXCLK和TXCLK分别接到了ZYNQ的U14、U15引脚(硬件线路连接),且IP101GA的Pin1内部接到GND、Pin44外部接到VCC,芯片即工作在MII 100Mbps模式,此时RXCLK/TXCLK的时钟是25MHz,即U14、U15之间为25MHz。相关信息来源已放置在文末参考资料列表中。 (2)使用有源晶振两个版本中,晶振部分电路均未焊接。使用时,需至少焊接R1372(<50Ω)、有源晶振(3325封装,≤50MHz)、L29电感(可直连)。R277、C362、C363和C364可不焊接。其中,L29电感和C363电容在板子背面。有源晶振的输出连接在ZYNQ的N18引脚。 (3)MRCC和SRCC注意(其实原理图上也有注明),以上所述时钟源连接的引脚(U14、U15、U18、N18)均具备M/SRCC属性。 注:欲查看XC7Z010-CLG400的引脚位置和定义,可参考《UG865-Zynq-7000 SoC封装和引脚输出产品规格(v1.8.1)》。如图所示:
ZYNQ的时钟相关信息可参考《UG472-7系列FPGA时钟资源用户指南(v1.14)》,以及文末参考资料所列项目。 5. 裸机的Hello World(调试&固化)裸机Hello World程序的意义是:在较少的软件构建下,快速验证ZYNQ最小系统运行条件的完备性。ZYNQ最小系统包括PS处理核心、DDR初始化和调试串口。非常幸运的是,这些操作已经有前人做过、并且留下记录了,但是别人的经验不能直接“拿来主义”,所以这里还是会重写一遍。 本章涉及到的外设有:DDR、UART1。 本章相关信息来源已放置在文末参考资料列表中。 5.1 启动镜像和开发工具说明制作启动镜像需要以下三个文件: FSBL镜像:第一阶段引导,用于配置PL和加载用户应用程序;Bitstream文件(比特流,后文直接使用此翻译名称):用于在启动时配置PL端参数;应用程序代码:属于SSBL第二阶段引导,如果是裸机,则开始运行应用程序;如果使用操作系统等,则开始运行U-Boot。裸机Hello World程序的镜像文件的生成主要用到Xilinx SDK(后文简称为SDK)和Vivado两个软件。与硬件相关的项目,例如接口、时钟配置和硬件比特流生成等,均在Vivado中完成;与软件相关的任务,包括裸机应用程序工程创建、编译和运行调试等,均在SDK中完成。 对于开发平台,本文以2017.4版本的工具作为示例。后文使用的Vivado、SDK、Petalinux均为此版本。这是因为项目适配需要。而如果你使用的是2019.2版本的XILINX开发套件,开发流程会有所不同,在这里也顺便提一嘴,2019.2版本起,Vivado变成Vitis的子项,Vitis取代了SDK成为统一开发平台,板级描述文件的后缀名也从 *.dhf 变成了 *.xsa ,但是依旧使用Petalinux生成需要的内核镜像等。 言归正传,深入了解这些镜像文件的还需学习ZYNQ的启动流程,关于启动流程的说明可参考《UG821-Zynq-7000所有可编程SoC软件开发人员指南(v12.0)》,本章暂时不表。 5.2 Vivado工程创建打开Vivado,选择“Create Project”:
点击左侧的Create Block Design(创建模块设计),在弹出的窗口中输入设计名字,目录和资源位置保持默认。
PS-PL Configuration(PS-PL配置) 用于配置PS和PL之间的通信接口,包括AXI、HP和ACP总线接口。 Peripheral I/O Pins(外围I/O引脚) 和下一项对应,用于配置片内资源对外接口,如资源使能、引脚复用等。 在这里可以看出,片内资源使用的引脚集中在Bank0[0,15]和Bank1[16,53]上。对于矿卡,两个Bank的电压均设置为3.3V。 MIO Configuration(MIO配置) 和上一项对应,用于更详细的MIO配置。 Clock Configuration(时钟配置) 用于配置PS输入时钟、外设时钟、DDR时钟、CPU时钟等。 DDR Configuration(DDR配置) 用于配置DDR控制器。 SMC Timing Calculation(SMC时序计算) 用于SMC(Static Memory Controller,静态存储控制器)时序计算。SMC是PS内置硬核模块。 Interrupts(中断) 用于配置PS端和PL端之间的中断信号。 (2)配置UART首先进行UART的配置。调试串口在硬件板上的插接件丝印为J7,对照原理图可知其TxD和RxD对应ZYNQ的A16和F15。
查看《UG585-ZYNQ7000技术参考手册(v1.12.2)》2.5.4 MIO-at-a-Glance Table(MIO概览表)可知,MIO24和MIO25属于UART1。因此我们照此配置,配置信息和原理图吻合,两者得以相互验证。
DDR是ZYNQ运行时所必须的,根据相关描述(已放置在文末参考资料列表中),矿卡使用的256MiB单内存颗粒总线位宽必须配置为16 Bit。配置参数如下图:
因本例无需PL端资源,因此去除PS-PL连接相关的配置。 1.取消选择“Clock Configuration”->“PL Fabric Clocks”中“FCLK_CLK0”项; 注:该项可作为PS端向PL端提供时钟的输出接口。 2.取消选择“PS-PL Configuration”->“General”->“Enable Clock Resets”中“FCLK_RESET0_N”项; 3.取消选择“PS-PL Configuration”->“AXI Non Secure Enablement”->“GP Master AXI Interface”中“M AXI GP0 interface”项。 (5)完成配置&验证配置完成后,单击“OK”即可看到ZYNQ的IP核框图完成更新。此时点击“Run Block Automation(运行块自动化)”:
完成后可点击“Validate Design(F6)(验证设计)”确保设计正确。
首先,在“Source”视图中右键本次设计,选择“Generate Output Products”:
在Sources窗口中,点击“IP Source”标签页,可以看到生成操作的输出结果。
完成后的Sources视图如下图所示: ZYNQ7010_wrapper.v是创建的Verilog文件,前置图标表示当前模块为顶层模块,主要完成对Block Design的例化操作。 另外,由于之前生成HDL时选择了自动更新,因此再次修改Block Design之后不需再重新生成顶层模块,Vivado会自动更新。 (7)生成Bitstream文件比特流文件用于描述PL端的初始化。如果设计中使用到了PL的资源,则需要添加引脚约束并对设计进行综合、实现并生成比特流文件。
选择“File”->“Export”->“Export Hardware”,出现下图对话框:
在Vivado工程中启动SDK可免去设置工作文件夹等的麻烦。选择“File”->“Launch SDK”。在弹出的对话框中直接点击“OK”即可。 至此,裸机Hello World工程的Vivado部分配置完成。 5.3 SDK工程调试在上一步末尾,Vivado将启动SDK并将工程目录等设置为当前设计。这一步我们要先建立Hello World应用程序,并通过JTAG的方式在矿卡上运行它,以了解SDK的调试流程。 选择“File”->“New”->“Application Project”: OS Platform表示使用哪种操作系统,裸机情况下选择“standalone”。 输入工程名,其余保持默认即可,点击“Next”,选择Hello World示例工程:
工程创建完成后,SDK主界面会打开BSP工程目录下的system.mss文件。MSS是英文Microprocessor Software Specification的缩写,即微处理器软件说明。该文件包含BSP的操作系统信息和硬件设计中各个外设的软件驱动等信息。 SDK会创建一个应用程序工程和板级支持工程,并自动编译工程(手动编译快捷键为Ctrl+B)。完成后,SDK中的工程结构如下图所示: 矿卡的启动引脚的配置为从NAND启动,这在4.1节已经有所介绍,然而使用SDK进行下载时,ZYNQ必须处于JTAG模式。在市售的开发板上,启动配置通常使用拨码开关或跳线设置,但在矿卡上我们一无所有。 (3)配置板端调试XILINX下载器(Platform Cable USB)的安装指南可参见《UG344 - USB Cable Installation Guide (v2.2)》,驱动程序下载位置可在https://china.xilinx.com/search/support-keyword-search.html#q=UG344查看,或尝试访问截至目前有效的下载地址:https://china.xilinx.com/member/forms/download/design-license.html?cid=100840&filename=ug344_windows.zip。 选择“Run”->“Debug Configurations”,双击左侧“Xilinx C/C++ application (System Debugger)”新建一个配置项,并按如下配置: 如果前面生成了比特流文件,则在此界面中“Target Setup”选项卡下的“Bitstream File”项中导入相应的比特流文件。
因为在“Target Setup”选项卡中选择了“Reset entire system(重置整个系统)”,因此在“Application”选项卡中的“Reset Processor”不可选择。 全部配置完成后点击“Apply”提交更改,而后关闭配置页面。 首先保证XILINX下载器的连接。 如果下载器未连接,则SDK连接到TCP:127.0.0.1:3121失败,后续操作将提示以下信息:
如果不进行这一步,后续操作将提示以下信息:
点击状态栏上的运行按钮即可在SDK Terminal(SDK终端)查看到输出。 关于SDK Terminal 如果下方没有该窗口,则可以选择“Window”->“Show View”->“Other”,在弹出的对话框中选择“Xilinx”->“SDK Terminal”调出该终端。 此时在下方会有SDK Terminal出现: 点击“+”打开一个串口连接,串口为ZYNQ和电脑通过调试UART(即前面配置的UART1)连接生成的端口号。 点击“OK”,连接后在SDK Terminal中会有相应的提示。
前面我们实现了裸机调试Hello World程序。先使用比特流文件对FPGA(PL端)进行编程,再使用Xilinx系统调试器使目标板运行我们的程序。但是让程序独立在板子上运行才是最终目的。因此本节在前面叙述的基础上尝试制作裸机Hello World的启动镜像。 (1)ZYNQ启动流程概述想让ZYNQ上电自动运行用户的应用程序,需要了解它从上电开始做了哪些动作,这个流程可参考《UG821-Zynq-7000所有可编程SoC软件开发人员指南(v12.0)》和《UG585-ZYNQ7000技术参考手册(v1.12.2)》,网络上相关信息也非常之多,此处不再赘述。 总体来讲,ZYNQ内部存储了最基本的固件(BootROM),用于开机时的判断和处理逻辑,BootROM的执行过程被称为第〇启动阶段(Stage-0 Boot)。随后BootROM将First Stage Bootloader(即FSBL)载入进OCM并开始执行,FSBL和BootROM一样,都是执行在OCM(On-Chip Memory)上的。 FSBL执行时做了以下事情: 使用Xilinx硬件配置工具提供的PS端配置数据进行初始化;使用比特流(如果提供的话)对PL端进行编程;将第二阶段引导程序(Second Stage Bootloader, SSBL)或裸机应用程序代码加载到DDR内存中;移交给SSBL或裸机应用程序。第二阶段引导程序一般就是通常意义上的Bootloader(U-Boot用的多一些…吧),用于继续启动操作系统,这在本例中并不需要。现在,我们已经有了比特流文件和裸机应用程序的elf二进制代码。 (2)NAND的适配和Vivado工程修改将程序固化在NAND中,需要ZYNQ上电时初始化NAND静态存储器,因此需要对之前的Vivado工程进行一些修改,以增加对NAND的支持。 双击IP核,选择“Peripheral I/O Pins”,在右侧勾选NAND Flash器件,由于矿卡使用的W29N01HV是8bit数据位宽,因此不需要使能date[8:15]: 这里使用的NAND Flash是3.3V电平的,因此其余配置保持默认即可,如需更换NAND等,需要在“MIO Configuration”中对其详细修改。 而后切换到“SMC Timing Calculation”,按照如下参数配置时序:
在Vivado主界面依次点击“Run Synthesis”、“Run Implemented”、“Generate Bitstream”已完成工程的重新编译。 或者直接点击“Generate Bitstream”,一路“YES下去,”Vivado会自动完成其它项目。 选择“File”->“Export”->“Export Hardware”,包含比特流,并在提示是否覆盖时选择“YES”:
SDK中已经提供了FSBL工程模板,所以直接使用它生成我们需要的fsbl.elf就可以了。 ·1)创建启动镜像使用的FSBL选择“File”->“New”->“Application Project”,这一步和创建Hello World示例工程一样,注意板级支持包要选取之前生成的那一个,然后点击“Next”: 我事先生成过了,所以这里显示不能重复创建。另外,注意这里不要直接点“Finish”。 而后选择FSBL工程:
如果生成过程提示“This application requires xilffs library in the Board Support Package.”: 则在板级支持工程文件夹中的mss文件中添加xilffs库即可。 矿卡的NAND Flash和启动引脚共用PS_MIO,如果通过改动启动配置电阻的方式进行下载,那么下载之后还需要把电阻改回到NAND模式,非常的麻烦。 如果简单地在MIO[4]的下拉电阻R2582位焊接开关作为启动模式选择,则会导致NAND读写烧录失败。找出这个忽略了引脚复用导致的问题使我多花费了3天的时间。 因此为了方便调试和配置,可以从ZYNQ的下载流程进行如下考虑: Xilinx SDK在下载时需要一个额外的FSBL文件,该引导程序仅用于下载,具体内容大概就是一个自动运行Flash烧写并通过JTAG与SDK进行通信的U-Boot。又因为在FSBL的主程序中,会对启动配置进行判断以便转入相应的处理分支,因此,如果我们修改下载用的FSBL程序,使其强制进入JTAG模式,则随后的引导将无视实际启动配置。具体操作过程如下: 重新建立一个FSBL工程,命名要与先前的不同以防止冲突,这里命名为“FSBL_for_EBAZ4205_JTAG”。板级支持工程同样选择先前那个。 打开FSBL_for_EBAZ4205_JTAG\src\main.c,搜索“BootModeRegister”变量,并在下图所示上下文进行修改: 保存并编译待用。 (4)生成启动镜像选中我们的Hello World工程主目录,在其上右键选择“Create Boot Image”:
如果烧写到NAND或SD卡,输出格式为BIN;如果烧写到QSPIFlash,输出格式为MCS。 点击“Create Image”生成镜像,生成的镜像在应用程序主目录下的“bootimage”文件夹下: 注:如果程序有改动或板配置有变化,需重新生成启动镜像。 (5)下载启动镜像将JTAG和串口线连接到矿卡,和之前的调试一样,需要使ZYNQ启动在JTAG模式。 XILINX下载器连接到就绪会花费一点时间,否则会出现错误。若该过程中无法检测到Cable,可在编程时手动指定设备。“Program Flash”同理。 检测Cable需要矿卡在上电状态。 选择“Xilinx”->“Program Flash”,确保“Flash Type”项为“nand_8”,并选择先前“FSBL_for_EBAZ4205_JTAG”工程编译生成的elf文件作为下载用的FSBL: 另外一定注意下载使用的FSBL文件是修改之后的用于烧录Flash的FSBL。具体说明见“创建烧录NAND Flash使用的FSBL”章节。 而后点击“Program”下载,下载完成后断电,从NAND重新启动即可从串口看到输出:
从上面的记录可以看出,修改后的FSBL忽略对启动模式的检测,直接进行了烧录任务。 至此,基于NAND Flash的裸机Hello World工程镜像的制作、固化、烧录和运行成功完成。 参考资料本文编写过程中参考的所有资料均列在下方。本文若与任何列表之外的文章、博客、视频、教程等描述相同或相似则纯属巧合。 另在此处再次对以下资料的作者们表示感谢。 1. 相关信息 Xilinx 7系列FPGA时钟篇(3)_时钟操作法则原理图中的MRCC和SRCC有什么区别…百度知道SD卡 TF卡 接口引脚定义 2. 参考描述 zynq7010之EBAZ4205入门改造_CSDN“关于EBAZ4205的PL部分的时钟的说明_OSCHINA”zynq7010之EBAZ4205之helloworld_CSDN100块学会ZYNQ-矿板Nand Flash烧写和启动_CSDNzynq 制作镜像_CSDNEBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_简书【ZYNQ】EBAZ4205 ZYNQ 7010矿板改造开发板_CSDNZYNQ 从NAND flash启动应用笔记_CSDNzynq[1] 矿板helloworld————2020-11-17 @燕卫博———— |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |