您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 选修课嵌入式设计大作业2015
1/11嵌入式系统设计大作业通信工程学院姓名:刘通学号:130101300782/111、叙述JTAG接口在嵌入式开发中的作用。1、对电路和芯片进行边界扫描测定。2、通过JTAG接口可以进行嵌入式系统电路板及芯片的测试,它的基本原理是在器件内部定义一个测试是访问口(TestAccessPort),通过JTAG专用的测试工具对器件内部节点进行测试。通过电路的边界扫描测试技术,用具有边界扫描功能的芯片构成的印制板电路,可通过相应的测试设备检测芯片功能,检测电路连接的正确性同时检测它是否有预定的逻辑功能,从而对这块印制电路进行故障检测和故障定位。3、实现对电路板上的Flash编程.要通过JTAG接口对系统板上Flash编程可以利用专用的硬件控制器或独立的编程器来访问JTAG器件实现,也可以直接用电缆线把PC机并行口与嵌入式系统的微处理器的JTAG引脚连接起来,由PC机上的程序模拟JTAG时序实现.嵌入式系统的Flash芯片的地址线、数据线和控制信号线接到嵌入式系统带JTAG接口的微处理器相应引脚上.在对Flash编程时,PC机上运行的程序控制PC机发送指令或数据到嵌入式系统微处理器内部的边界扫描寄存器里,再把此数据或指令通过JTAG专用指令传送给Flash,从而将代码写入Flash中。,2、叙述嵌入式平台的搭建过程,以linux为例。第一步、建立交叉编译环境我们一般开发机上已经有一套开发工具,我们称之为原生开发套件,我们一般就是用它们来写程序,在开发机上再安装一套开发工具,这套开发工具编译出来的程序,如内核、系统工作或者我们自己的程序,是放在目标主机上运行的。一般来说,我们的开发机都是X86平台,原生开发套件开发的工具,也针对X86平台,而我们的目标主机可能是PowerPC、IXP、MIPS。所以,我们的交叉编译环境是针对某一类具体平台的。一般来讲,交叉开发环境需要二进制工具程序、编译器、C链接库,嵌入式开发常用的这三类软件是:BinutilsGccuClibc当然,GNU包含的工具套件不仅于此,要以根据实际需要,进行选择。第二步、编译内核开发工具是针对某一类硬件平台,内核同样也是。这一步,我们需要用第一步中建立的工具,对内核进行编译,对于有内核编译经验的人来说,这是非常简单的;第三步、建立根文件系统也就是建立我们平常看到的bin、dev、proc„„这一大堆目录,以及一些必备的文件;另外,我们还需要为我们的目标系统安装一些常用的工具软件,如ls、ifconfig。当然,一个办法是找到这些工具的源代码,用第一步建立的交叉编译工具来编译,但是这些软件一是数量多,二是某些体积较大,不适合嵌入式系统,这一步,我们一般都是用busybox来完成的,包括系统引导软件init;最后,为系统还需要建立初始化的引导文件,如inittab3/11第四步、启动系统在这一步,我们把建立好的目标、文件、程序、内核及模块全部拷贝到目标机存储器上,如硬盘。然后为系统安装bootloader,对于嵌入式系统,有许多引导程序可供我们使用。不过它们许多都有硬件平台的限制。当然,如果你是工作在X86,可以直接用lilo来引导,事实上,本文就是采用的lilo。做到这一步,将目标存储设备挂上目标机,如果顺利,就可以启动系统了。当然,针对某些特别的平台,不能像硬盘这样拷贝了,需要读卡器、烧录。但是基本的方法是相通的!第五步、优化和个性化系统通过前四步,我们已经得到了一个可以正常工作的系统。需根据个人的工作习惯进行设置。3、给出现今有哪些用于嵌入式开发的芯片名称,他们分别是哪些公司的产品?体系结构是什么?名字--公司—体系MCS51/AVR--Atmel8BitPIC--Microchip16BitMPS430--TI16BitARM--哪家都有32BitX86--Intel/amd32BitMIPS--MIPS/龙芯32BitPowerPC--Freescale/IBM-AMCC32BitM68K+ColdFire--Freescale32BitDSP--TI32BitFPGA--Altera/Xilinx/Actel/Lattice32Bit4、现今较流行的嵌入式操作系统有哪些?(1)Linux(2)VxWork(3)μC/OS-Ⅱ(4)windowsCE(5)Android5、PXA270嵌入式开发板的接口有哪些?全双工异步串行口和硬件流控制串行口,10M标准以太网接口10M/100M标准以太网接口,USB接口,红外通讯口,音频接口,存储卡口,视频和触摸屏接口摄像头接口,RTC时钟接口,调试接口,下载接口,电源接口。6、请写出NorFlash和NandFlash的区别。一、NANDflash和NORflash的性能比较4/111、NOR的读速度比NAND稍快一些。2、NAND的写入速度比NOR快很多。3、NAND的4ms擦除速度远比NOR的5s快。4、大多数写入操作需要先进行擦除操作。5、NAND的擦除单元更小,相应的擦除电路更少。二、NANDflash和NORflash的接口差别NORflash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。三、NANDflash和NORflash的容量和成本NANDflash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。四、NANDflash和NORflash的可靠性和耐用性采用flahs介质时一个需要重点考虑的问题是可靠性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。五、NANDflash和NORflash的寿命(耐用性)在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。六、位交换所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用七、EDC/ECC算法这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。八、坏块处理NAND器件中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。九、易于使用可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。由于需要I/O接口,NAND要复杂得多。各种NAND器件的存取方法因厂家而异。在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND5/11器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。十、软件支持当讨论软件支持的时候,应该区别基本的读/写/擦操作和高一级的用于磁盘仿真和闪存管理算法的软件,包括性能优化。在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动,该驱动被WindRiverSystem、Microsoft、QNXSoftwareSystem、Symbian和Intel等厂商所采用。驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和损耗平衡7、冯。诺依曼架构与哈佛架构的区别。冯.诺依曼指出:程序只是一种(特殊)的数据,它可以像数据一样被处理,因此可以和数据一起被存储在同一个存储器中——这就是著名的冯.诺依曼原理。注意:数据总线和地址总线共用。哈佛结构:哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统的4条总线:程序的数据总线与地址总线,数据的数据总线与地址总线。这种分离的程序总线和数据总线允许在一个机器周期内同时获得指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,使数据的吞吐率提高了1倍。又由于程序和数据存储器在两个分开的物理空间中,因此取指和执行能完全重叠。CPU首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。8、单周期3级流水的情况下,第10个指令周期时,第几条指令执行结束?第8条指令执行结束。9、下面是linux下的一个简单的设备驱动程序,写出linux设备驱动常用的数据结构,同时阅读下面代码,请给出测试程序中的每条语句加以注释。设备驱动程序Keypad.c的源代码:#includelinux/module.h#includelinux/fs.h#includelinux/init.h#includelinux/poll.h6/11#includelinux/types.h#includelinux/fs.h#includelinux/rtc.h#includelinux/delay.h#includeasm/hardware.h#includeasm/delay.h#includeasm/uaccess.h//将需要用的头文件加入到程序中#defineLEDnKEY_MAJOR251#defineKEYPAD_NAMEX-Hyper250Keypad#defineKEYPAD_VERSIONVersion0.1//进行宏定义,定义几个用到频率较高的常量#defineEXT_KEY_CSEXT_PORT2#defineEXT_LED_CSEXT_PORT3#defineLED_SHOW10/*EXT_KEY_CS为向外部LED进行数值设定,它定义在其它头文件里*/voidled_off_on()/**///定义led灯的开关函数{inti;EXT_LED_CS=0xff;//设置EXT_PORT3寄存器的状态为全1for(i=0;i8;++i){EXT_LED_CS=~((1i)&0xff);//通过逻辑语句来控制EXT_PORT3寄存器的状态udelay(30000);//调用延时函数}EXT_LED_CS=0xff;//将EXT_PORT3寄存器重新置为全1}intlednkey_open(structinode*inode,structfile*filp)//定义一个函数{MOD_INC_USE_COUNT;return(0);/*success*/}intlednkey_release(structinode*inode,structfile*filp){led_off_on();//调用led_off_o
本文标题:选修课嵌入式设计大作业2015
链接地址:https://www.777doc.com/doc-2005019 .html