ALINX黑金Zynq7000开发平台配套教程
当我们拿刡开収板是否应该测试一下收刡癿开収板是否功能正常,以及各个接口工作是否工作正常。在出厂前我们已经在SD卡里存储了启劢程序和操作系统,所以开収板上电就能启劢幵可以用杢测试各个部分接口和电路癿工作是否正常。通过测试也使大家对我们开収板癿功能有一个大致癿认识。ALINXOALNX黑金2ynq7000开发平台配套教程序首先感谢大家购买黑金动力社区出品的zYNQ7000的开发板AX7010和AX7020!您对我们和我们产品的支持和信任给我们增添了永往直前的信心和勇气。赛灵思公司xinx)于2012年推出zynq7000SOC芯片解决方案,该方案将双核ARMCortex-A9和 FPGA Fabric集成在一颗芯片上,通过内部总线连接,ARM和FPGA之间的通信速度大大提高,从而提高芯片整体性能。但同时,ARM和FPGA两门之前独立的软硬件学科在一颗芯片上应用,大大提高了芯片入门门槛。黑金这两年一直在筹划推出Zynq7000S0C系列硬件开发平台,同时编著一套教程,循序渐进,由浅入深,旨在让学员很轻松的入门,体验最前沿的ARM+ FPGA SOC技术。本教程根据不同的侧重点分4部分:第一部分是基础篇,分别介绍开发板的上电捡测,硬件电路的介绍,zYNQ芯片的介绍,软件 Vivado的安装, Linux系统虚拟机的安装,PS和P接口技术的介绍和zYNQ开发流程的介绍。通过基础篇让大家对黑金开发板AX7010/A×7020及zYNQ芯片和开发有一个总体认识,为后面几部分的学习打好基础。第二部分是逻辑篇,在逻辑篇里我们把ZYNQ芯片当做普通的FPGA来使用,结合开发板和厶YNQ芯片的资源实现纯逻辑的开发。我们会通过大量的应用实例让大家了解和掌握FPGA的 Verilog程序的设计及实现。AX7010/AX7020开发平台的硬件资源。播下—粒种子,收获一片森林”,更是黑金 ALINX硬件开发的美好愿望,同时我们会在黑金动力社区http://www.hejin.org和大家一起讨论,一起学习,一起进步,一起成长。ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程目录序目录......4第一部分基础篇…第1章AX7010/AX7020开发板开箱检测.1.1准备工作.1.1.1硬件配置….112USB转UART驱动安装…1.1.3终端登录工具 Securecrt安装1.2外设连接141.3实验操作第2章zYNQ7000芯片的简介……172.1PS内部资源介绍……2.1PL内部资源介绍.….…19第3章 Vivado软件安装.31WⅣVADO软件介绍…。,乙3.2 VIVADO软件版本…033WⅣVADo软件安装21第4章Linuκ系统虚拟机的安装2941虚拟机的安装294.2安装 ubuntu30第5章PS和PL接口技术详解.4151AⅪ接口标准介绍4152zYNQ的AXI资源445.3P端的AⅪ接口设计……,455.4 AXI Interconnect.………第6章zYQ芯片开发流程的简介……4961开发工具介绍…4962开发流程说明……50第二部分逻辑篇52第7章 FPGA LED控制实验……5271硬件介绍.527.2创建工程537.3编写流水灯的 verilog代码….ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程74添加XDC管脚约束文件7.5编译7.6下载和调试…翻。着69第8章HDMI输出实验7381HDMI及TMDS原理738.2硬件介绍.758.3程序设计……/684添加XDC管脚约束文件798.5编译和下载80第三部分SDK篇81第9章 Hello world实验….18191 Vivado工程创建8192zYNQ系统的配置…9.3硬件导入SDK.9994SDK软件编程….10295下载和调试.,105第10章P端和PS端的协同设计流水灯实验110101 Vivado工程创建.110102zYNQ系统的配置11110.3添加XDC管脚约束文件….121104编译生成比特流文件122105硬件导入SDK12310.6SDK软件编程125107下载和调试…127第11章定时器中断实验131111中断控制器和计数器..131112zYNQ系统的配置13211.3硬件导入SDK.135113SDK软件编程..137114下载和调试…1D妻第12章按键实验..142121PS和PL共亨中断142122 Vivado工程创建…14312.3添加按键IP.……14512.4添加按键管脚约束15212.5编译生成比特流文件.153126硬件导入SDK153127SDK软件编程155ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程128下载和调试…161第13章自定义IP实验166131RTC时钟DS1302166132Vⅳvado工程创建.118133创建自定义IP134添加RTC管脚约束185135编译生成比特流文件…∴18513.5硬件导入SDK.186136SDK软件编程.186137下载和调试…189第14章VDMA实验硬件系统搭建….19314.1硬件构架193142搭建硬件工程…..….194143添加HDMI管脚约束…223144编译生成比特流文件…22414.5硬件导入SDK224第15章VDMA实验SDK软1件.225151SDK软件编程..225152程序说明22615.3图像数据生成方法…::::::::::::::.·t23154下载和调试235第16章程序固化和启动239161开发板启动流程239162 Vivado工程修改……163生成FSBL可执行文件….245164BOOT.BIN文件的生成165烧写 FLASH并启动254166SD卡启动257第17章 Linux开发环境的搭建………259171安装Lnu版本的SDK259172安装32位支持工具包270173安装 OpenSSL库第18章∪-boot的编译和启动.…273181∪-Boot原理及实现182∪-Boot的编译…279183生成 BOOTBIN文件283184 Uboot启动实验.295第19章内核的编译299ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程191 Linux内核介绍299192 Linux内核源码编译301193设备树 Device tree的编译.194文件系统第20章SD卡的制作20.1SD卡分区31020.2复制BOOT.BIN文件31420.3复制编译后的内核文件315204复制编译后的设备树文件·:..31520.5复制文件系统31620.6 Linux sd卡启动第21章 Linux系统下的 hello world实验…322211 nfs server安装和配置..322212编写 helloworld程序21.3编译 helloworld程序.33021.4运行……30第22章 Linux系统下的GPIO应用实践.332221 sysfs方式控制GPIO33222.2编写GPIO应用程序33622.3编译GPIO程序…:::::::::::·:340224运行和实验341ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程第一部分基础篇第1章AX7010/AX7020开发板开箱检测当我们拿到开发板是否应该测试一下收到的开发板是否功能正常,以及各个接口工作是否工作正常。在出厂前我们已经在SD卡里存储了启动程序和操作系统,所以开发板上电就能启动并可以用来测试各个部分接口和电路的工作是否正常。通过测试也使大家对我们开发板的功能有一个大致的认识。11准备工作1.1.1硬件配置开发板的上电检测需要以下的设备。其中SD卡里我们已经为用户存储了ARM的Boot启动程序和系统的镜像文件 lmage。红色USB线用于开发板和PC之间的串口通信。HDM线和HDMI显示器用于显示AX7010/AX7020开发板翰出的 Ubuntu界面,网线用于开发板连接 Internet网络,USB鼠标和键盘用于人机交互操作。因为开发板上只有一个USB口,这里需要连接一个∪ SB Hub设备来扩展多个USB口连接USB键盘和鼠标。AX7010开发板或AX7020开发板◇5V直流电源适配器(开发板自带)令 Micro sd卡〔开发板自带)mini usB数据线2根(开发板自带)今网线◇HDMI线和HDMI显示器◇USB鼠标和键盘r USB Hub◇PC机ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程下图为开发板自带的测试设备:S ZNO(1).AX7010/AX7020开发板;(2).SD卡读卡器;(3).+5V电源;④4).2根USB线;(5)SD卡下图为用户自己需要准备的测试设备USB Hub网线USB鼠标图图图图图图围图国园USB鼠标HDMI显示器ALⅠNX黑金mq700.列开发宏典http://www.heijin.orgALINXOALNX黑金2ynq7000开发平台配套教程112USB转UART驱动安装测试前我们需要安装∪SB转串口的驱动软件(05软件工具及驱动CP2l0 x Windows Drivers.zip),不然无法做串口通信测试。驱动安装好以后,用红色USB线连接电脑USB口和开发板上的∪ART口(7)进行连接,然后打开电脑的设备管理器,设备管理器能够找到串口设备CP210x,我机器上映射的是COM3。4端口(COM和LPTPH Silicon Labs CP210x USB to UART Bridge(COM311.3终端登录工具 SecureCrt安装终端工具有很多, putty, teraterm, Windows自带终端工具, SecureCRT等等,众多终端工具中,比较下来,还是 Securecrt最好用,我们在资料的05_软件工具及驱动 Securecrt目录下为大家准备了绿色免安装的 secureCRT软件。下面简单介绍基于 SecureCrT串口终端的创建(在后面串口终端打印启动信息,需要用到双击 Secure CRTexe图标112005/12/917:29应用程序打展273ORDER TXT2006/5/3113:30文本文档6README.TXT207/3/3013:51文本文档SecureCRT. CH2007/3/2111:57编译的HmL帮aaSecureCRT.EXE2007/4/81:12应用程序1.890sN. txt207/6/1115:03文本文档SSH2Client43. d1.2007//210:52应用程序扩展4663SSH2Core43.all2007/4/210:52应用程序扩展1,058第一次使用会弹出以下对话框,点击OKe CRTThis is the first time that you have runSecureCRT?. SecureCRT needs to set a folder wherefy a fol der belPressing Cancel will exit the application wi thoutsetting the confi gurati on folder.ADministrator App Data RoaninzlanDwke cOnf」C点击YES。ALⅠNX黑金mq700.列开发宏典10http://www.heijin.org
- 2020-07-01下载
- 积分:1
Java面试笔试题大汇总(最全+详细答案)
搜集的 Java面试笔试题,设置最低积分,备份加供诸位道兄下载,没积分的私我是的内部类,其代码如下所小简单的说,如果整型字面量的值在到之间,那么不会新的对象,而是直接引用常量池中的对象,所以上面的面试题中的结果是而的结果是提醒:越是貌似简单的面试题其中的玄机就越多,需要血试者有相当深厚的功力。和的区别答:运算符有两种用法:按位与;逻辑与ε运算符是短路与运算。逻辑与跟短路与的差别是非常巨人的,虽然二者都要求运算符左右两端的布尔值都是整个表达式的值才是之所以称为短路运算是因为,如果左边的表达式的值是右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用而不是,例如在验证用户登录时判定用户名不是而且不是空字符串,应当写为:二者的顺序不能交换,更不能用运算符,因为第一个条件如果不成立,根本不能进行字符串的比较,否则会产生异常。注意:逻辑或运算符()和短路或运算符()的差別也是如此。补充:如果你熟悉那你可能更能感受到短路运算的强大,想成为的高手就先从玩转短路运算开始吧3114解释内存中的栈堆和静态区的用法。答:通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通过关键字和构造器创建的对象放在堆空间;程序中的字面量()如直接书写的和常量都是放在静杰区中。栈空间操作起来最快但是栈很小,通常大量的对象都是放在堆空间,理论上整个内存没有被其他进程使用的空间甚至硬盘上的虚拟内存都可以被当成堆空间来使用。上面的语句中变量放在栈上,用创建出来的字符串对象放在堆上,而这个字面量放在静态区。补充:较新版本的(从的某个更新开始)中使用了一项叫逃逸分析的技术,可以将一些局部对象放在栈上以提升对象的操作性能等于多少?等于多少?答的返回值是的返回值是。四舍五入的原理是在参数上加然后进行下取整。是否能作用在上,是否能作用在上,是否能作用在上答:在以前,中只能是从开始中引入了枚举类型,也可以是类型,从开始,还可以是字符串(),但是长整型()在目前所有的版本中都是不可以的。、用最有效率的方法计算乘以?答:(左移位相当于乘以的次方,右移位相当于除以的次方)。补充:我们为编写的类重写方法时,可能会看到如下所示的代码,其实我们不太理解为什么要使用这样的乘法运算来产生哈希码(散列码),而且为什么这个数是个素数,为什么通常选择这个数?前两个问题的答案你可以自己百度一下,选择是因为可以用移位和减法运算来代替乘法,从而得到更好的性能。说到这里你可能凵经想到了:等价于左移位相当于乘以的次方再诚去自身就相当于乘以,现在的都能自动完成这个优化4/114、数组有没有方法?有没有方法?答:数组没有方法,有的属性。有方法中,获得字符串的长度是通过属性得到的,这一点容易和混淆。在中,如何跳出当前的多重嵌套循环?答:在最外层循环前加个标记如,然后用可以跳出多重循环。(中支持带标签的和语句,作用有点类似于和中的语句,但是就像要避免使用一样,应该避免使用带标签的和,因为它不会让你的程序变得更优雅,很多时候甚至有相反的作用,所以这种语法其实不知道更好)、构造器()是否可被重写()?答:构造器不能继承,因此不能被重写,但可以被重载。、两个对象值相同但却可有不同的这句话对不对答:不对,如果两个对象和满足,它们的哈希码(相同对于方法和方法是这样规定的:如果两个对象相同(方法返回,那么它们的值一定要相同:如果两个对象的它们并不一定相同。当然,你未必要按照要求去做,但是如果你违背了上述原则就么发在使用容器时,相同的对象可以出现在集合中,同时增加新元素的效率会大大下降(对于使用哈希存储的系统,如果哈希码频繁的冲突将会造成存取性能急剧下降)补充:米于和方法,很多程序都知道,但很多人也就是仅仅知道而己,在的大作《》(很多软件公司,《《编程思想》以及《重构:改善既有代码质量》是程序员必看书籍,如果你还没看过,那就赶紧去亚马逊买一本吧)中是这样介绍方法的:首先方法必须满足自反性(必须返回)、对称性(返回时也必须返回)、传递性(和都返回时,也必须返回)和致性(当和引用的对象信息没有被修改时,多次调用应该得到同样的返回值),而且对于任何非值的引用,必须返回实现高质量的方法的诀窍包括:使用操作符检查参数是否为这个对象的引用;5114使用操作符检查参数是否为正确的类型;对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;编写完方法后,问自己它是否满足对称性、传递性、一致性;重写时总是要重写;不要将方法参数中的对象替换为其他的类型,在重写时不要忘掉注解。、是否可以继承类?答:类是类,不可以被继承。补充:继承本身就是一个错误的行为,对类型最好的重用方式是关联关系)和依赖关系()而不是继承关系()、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?答:是值传递。语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值訫是对该对象的引用。对象的属性可以在被调用过程中被改变,但对对象引用的改变是不会影响到调用者的。和中可以通过传引用或传输出参数来改变传入的参数的值。在中可以编写如下所示的代码,但是在中却做不到。说明:中没有传引用实在是非常的不方便,这点在中仍然没有得到改进,正是如此在编写的代码中才会出现大量的类(将需要通过方法调用修改的引用置类中,再将对象传入方法),这样的做法只会让代码变得臃肿,尤其是让从和转型为程序员的开发者无法容。和的区别?答:平台提供了两种类型的字符串和,它们可以储存和操作字符串。其中是只读字符串,也就意味着引用的字符串内容是不能被改变的。而类表小的字符串对象可以直接进行修改是中引入的,它和的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方面都没有被修饰,因此它的效率也比要高。面试题什么情况下用运算符进行字符串连接比调用对象的方法连接字符串性能更好?如果是少量的字符串拼接,可以用,如果是大量的还是用吧是线程安全的是线程不安全的,很6114明显,的系统开销要大,所以如果我们只有个单线程,考虑速度的话更好。那为什么我们很少见到呢?原因很简单,因为我们有时候很难确定我们创建的系统会不会是多线程的,如果考虑到以后扩展的可能性,则更难确定,所以我们更愿意使用因为它是线程安全的,不用担心以后扩展。面试题请说出下面程序的输出。补充:解答上面的面试题需要清楚两点对象的方法会得到字符串对象在常量池中对应的版本的引用(如果常量池中有一个字符串与对象的结果是),如果常量池中没有对应的字符串,则该字符串将被添加到常量池中,然后返回常量池中字符串的引用;字符串的操作其本质是创建了对象进行操作,然后将拼接后的对象用方法处理成对象,这一点可以用命令获得文件对应的字节码指令就可以看出来。方法就是把该对象放进常量池。、重载()和重写()的区别。重载的方法能否根据返回类型进行区分?答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在了类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求面试题:华为的面试题中曾经问过这样一个问题为什么不能根据返回类型来区分重载,快说出你的答案吧!返回类型不同不构成重载,重载的机制是参数列表不同,即参数的类型,个数,排列顺序。、描述·下加载文件的原理机制?答中类的装载是由类加载器()和它的子类来实现的,中的类加载器是一个重要的运行时系统组件,它负责在运行时查找和装入类文件中的类。由于的跨平台性,经过编译的源程序并不是·个可执行程序,而是个或多个类文件。当程序需要使用某个类时,会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的文件中的数据读入到内存中,通常是创建一个字节数组读入文件,然后产生与所加载类对应的对象。加载完成后,对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证7114准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后对类进行初始化,包括:如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;如果类中存在初始化语句,就依次执行这些初始化语类的加载是由类加载器完成的,类加载器包括:根加载器()、扩展加载器)、系统加载器()和用户自定义类加载器(的子类)。从)开始,类加载过程采取了父亲委托机制()。更好的保证了平台的安全性,在该机制中自带的是根加载器,其他的加载器都有且仅有一个父类加载器。类的加载首先请求父类加载器加载,父类加载器无能为力时才由其子类加载器自行加载不会向程序提供对的引用。下面是关于几个类加载器的说明:般用本地代码实现,负责加载基础核心类库();从系统属性所指定的目录中加载类库,它的父加载器是又叫应用类加载器,其父类是环境变量或者系统属性所指公应它是应用最广泛的关加载器。它从目录中记载类,是用户自定义加载器的默认父加载器。型变量中能不能存贮一个中文汉字,为什么?答:类型可以存储一个中文汉字,因为中使用的编码是不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个类型占个字节(比特),所以放一个中文是没问题的补充:使用意味着字符在内部和外部有不同的表现形式,在内部都是当这个字符被从内部转移到外部时(例如存入文件系统中),需要进行编码转换。所以中有字节流和字符流,以及在字符流和字节流之间进行转换的转换流,和,这两个类是字节流和字符流之间的适配器类,承担了编码转换的任务;对于程序员来说,要完成这样的编码转换恐怕要依赖于(联合体共用体)共享内存的特征米实现了。、抽象类和接口()有什么异同?答:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承」某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以是默认的,而接口中的成员全都是的抽象类中可以定义成员变量,而接∏中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法、静态嵌套类和内部类()的不同?是被声明为静态)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化,其语法看起来挺诡异的,如下所示。扑克类(一副扑克)骆昊黑桃红桃草花方块8114构造器洗牌(随机乱序)发牌发牌的位置下片类(一张扑克)内部类骆昊花色点数9114测试代码:汏牌发第一张牌对于非静态内部类只有通过其外部类对象才能创建对象红心自己创建一张牌洗牌后的第一张打印红心面试题下面的代码哪些地方公产生编译错误?注意中非静态内部类对象的创建要依赖其外部类对象,上面的面试题中和方法都是静态方法,静态方法中没有,也就是说没有所谓的外部类对象,因此无法创建内部类对象,如果要在静态方法中创建内部类对象,可以这样做:、中会存在内存泄漏吗,请简单描述答:理论上因为有垃圾回收机制()不会存在内存泄露问题(这也是被广泛使用于服务器端编程的一个重要原因);然而在实际开发中,可能会存在无用但可达的对象,这些对象不能被回收,因此也会导致内存泄露的发生。例如的10/114
- 2020-06-20下载
- 积分:1