




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于Xilinx FPGA的嵌入式Linux设计流程FPGA是通过逻辑组合电路来实现各种功能的器件。由于FPGA内部集成了大量的逻辑资源和可配置的I/O引脚,加上独特的并行处理架构,可以轻松实现同时对多个外部设备的配置和管理, 以及内外各种接口数据的传输。现在开发厂商又在FP GA内部加入了大量的DSP和Block RAM资源,非常适合图像处理、数字信号处理等运算密集的应用,因此在这些领域取得了广泛的 应用。但是由于FPGA程序编写的灵活性和功能的多样性,使得它在一个复杂工程中对各个程序的使用调度、统筹管理上有很大的局限性,这样就必须引入操作系统进行统一的管理。Linux系统则因为其良好的可裁
2、减、可配置等特点在嵌入式领域应用广泛。Linux操作系统提供了许多系统级的应用,例如网络协议的实现、进程调度、内存管理等,同时 一 Linux是一个成熟的开源操作系统,有丰富的应用资源,利用这些资源和强大的系统功能,用户可以快 速地开发基于嵌入式环境复杂系统。因此,结合FPGA和Linux双方优势,可以很好地满足嵌入式系统设计需求,量体裁衣,去除冗余。本文给出了一种基于Xilinx FPGA的嵌入式Linux操作系统解决方案。基于FPGA勺嵌入式系统的硬件设计本设计是基于Xilinx XC4VFX40系列FPGA它内部集成了两个PowerPC405处理器,4个10/100/1000M 以太网M
3、AC莫块,运行频率300MHz时,具有420DFIPS性能,能解决高速网络数据传输问题,并且能 解决通过网络加载操作系统和交叉编译等问题。它内部有448个可配置I/O 口,2592kb BlockRAM,能实现对各种外部设备的并行控制以及较多数据的存储与处理。加载 一个操作系统,一般需要几十兆的内存空间,FPGA内部自带的RAM空间是远远不够的,本设计在板上扩展了两片MICRONS司的256Mb DDR内存,作为上电时操作系统的加载和运行空间。现在主流的嵌入式操作系统,都需要搭建交叉编译环境,把在主机上编写好的可执行文件下载到目标板上,这就需要实现网络数据的传输。由于XC4VFX40自带了以太
4、网MAC莫块,只需要在外面添加个PHY芯片和带隔离器的RJ45接口就能实现这个功能。本设计由于对网络数据实时性要求很高,因此采用Marvell公司的千兆以太网 PHY芯片88Ellll-RCJo它能根据自身配置和主机设计,实现 10/100/1000M自适应传输,并且Linux 本身对这个芯片提供了驱动支持,实现无缝链接。操作系统加载到DDR中能快速有效的运行,但是掉电就会丢失,因此必须加入FLASH芯片,把系统文件存储到外部FLASH中。加电时,FPGA把操作系统文件 从FLASH卖入到DDR中运行。FPGAS计当然会扩展很多接口出来,利用自身并行处理的优势,控制很 多外围设备,本设计也不例
5、外,扩展了8个通用的GPIQ2个PS/2接口,1个USB接口,1个AC97声卡接口,1个HotLink接口,以及4个RS422接口,同时 扩展了两个CPCI接口,引出了 16位数据地址线和Ethernet控制线,整个系统 的硬件框图如图1所 不O在进行电路设计时,是以FPGA为核心,向外扩展各种设备,因此特别注意了 FPGA各个引脚的连接。 由于DDR和PHY芯片都需要提供+电压,因此和DDR PHY芯片连接引脚所在的BAN | K需要提供+电压参考,并且不能接以LVTTL或LVCM0为电压参考的引脚。重要快速的时钟信号必须接到全局时钟引脚上。1由于FPGA需要通过外部FLASH启动操作系统,
6、需要并行配置,以减少加载时间,配置电路如图 2所示。在DDF布线时,数据和地址线需要走等长线,数据线之间不能相差lOMil,地址线要控制在20Mil以内,时钟也需要走差分等长线,长度应大于地 pHY 址线,DDR各个信号还需要47 Q的并行端接,改善信号质量。千兆也需要在顶层做差分等长,输出不然在进行MDI信号 1000M数据传输时很可能不稳定。DDR和PHY需要完 整的电源回路做参考,电源层划分时也要特别注意,其他电路做常规处理就可以了。EDK和ISE软件设计 首先需要调用Xili nx提供的EDK软件,对各个模块加入必要的IP CORE以便操作系统能正常调用这 些器件的驱动操作他们。本设计
7、采用的是版本,PPC方面选用PPC405内核,频率设定在300MHz同时需要添加中断输入引脚,以便响应以太网、串口等外部中断,其他使 用默认设置。DDR控制器采用EDK提供的Multi-Port-Memory Controller模块,需要设置DDR芯片厂商、大小和数据位数等,特别指出的是,要设置独立的两条PLB总线和PPC连接,作为PPC 的指令和数据总线。MAC单元需要加入XPS_LL_TEMA模块来控制,本设计需要设置PHY类型为GMII (千兆以太网),同时要指定物理地址和收发 FIFO大小。FLASH单元需要 加入xps_mch_emc模块,同时设置FLASH类型和读写时间。为了方便
8、调试,还需要加入串口控制台模 块,本设计使用的是UartLite模块,设置需要的波特率和校验类型。特别注意的是,系统还需要时钟管理模块 (DCM),提供各个模块需要的不同时钟,还要设置一段FPGA内部RAM区域,放置.PPC的.boot文件。外部这些模块都通过PLB总线和PPC通信,需要统一编址,一般把DDR内存空间地址分配到0x0开始,整个系统的构建如图3所示。本设计,除了在EDK中搭建了操作系统必须的各种模块后,还需要在 ISE中编写各个时序 电路程序,因此把EDK中编写好的工程作为一个模块,加入到ISE中,然后统一编译,这样生成了我 们需要的完整功能的程序。特别指出的是,PP C405数
9、据地址采用的是大端模式,接入到ISE中时,需要把数据颠倒位置,如 DATA0: 31变为DATA31:0,才能正常读写。Linux操作系统的加载与烧写中加载Linux操作系统需要利用EDK软件提供的板级升级包(BSP)配置内核。|BSP包含了所选 库 定处理器架构的属性文件以及相关硬件的驱动源文件。首先要在EDK Project Op tion DtsProject Peripheral Respository 选项下设置 Xilinx 提供的 gen-mhs-devtree/edk_lib 路 径,然后在软件平台设置中选择 Dts模式,编译更新升级包,生成 .dts配置文件。 文件包含了所有
10、模块地址分配,中断以及驱动信息,把他加入到Linux内核中,然后配置内核选项选择对应的处理器架构、所选硬件的驱动模块以及需要的其他内核模块, 所选硬件的驱动模块以及需要的其他内核模块,之后再对完成配置的内核进行编译,生成 Linux的内核image文件。生成内核image文件之后,还 需要生成系统运行所需要的根文件系统。根文件系统中包含了嵌入式 Linux系统的所有应用 程序、库以及系统配置等相关文件。根文件系统中常用的程序和命令可利用开源软件Busybox构造。构 造完成之后,在Busybox生成的目录和文件的基础上再构造根文件系统的目录树,并添加相关设备文 件和配置文件以及系统运行时需要的
11、脚本文件,从而形成最终的根文件系统,。把他拷贝到内核中的./arch/powerpc/boot 目录下,在根目录下运行 make zlmage. initrt ,生成最终的系统文件。需要指出的是,在编译linux内核时,需要设置好 交叉编译环境:首先安装 ELDK编译软件,然后在编辑自己的帐户目录下的.bashrc (例如:,/home/ppc/)中加入下面内容: CROSS_CO 1P ILE=ppc_4xx$P ATH=$ PATH:/home/ ppc /Po werPc/ELDK/usr/bi n:/home/ ppc /Po werPc/ELDK/bi nex port CROSS_
12、CO MP ILE PATH 保存,然后执行$011底6 . bashrc把生成的 文件通过EDK软件下的XMD调试窗口,使用dow命令下载到DDR中,然后运行run命令,就 正常启动Linux 了。程序下载到DDR中,掉电后,数据就丢失了,不能保存和连续使用,因此要把操作系统烧写到FLASH 上电后让它能自动运行,掉电后也不会丢失。|EDK提供了专门的FLASH烧写工具Program Flash Memory,首先要把文件转换为FLASH能识别 的.SREC文件,需要在EDKShell下运行下面命令:$powerpc-eabi-objcop3 - 1 elf32-powerpc - 0 sr
13、ec 第 次烧写 FLASH 时需要把 Program Flash Memory 中 Create Flash Bootlooder Application 勾上,让系统自动生成 Bootlooder 程序。操作系统烧写到Flash中后,需要FPGA在上电后自动从FLASH读取操作系统数据,然后自动 运行,这几需要把刚刚生成的bootloadr 0工程中的.elf加入到.bit生成新的配置文件,使用 EDKT 的 Up data Bitstream 命令就能实现。最后把生成的.mcs文件烧写到FPGA PROM中,上电后,系统就能自动运行了。 设计结果与分析 在Linux系统正常加载后,我们设
14、计一个程序,它通过以太网,从上位机获得数据,存入FPGA内部 BlockRam中,再在ISE中编写程序,把获得的数据取出,产生频率可变的波形发生器,并回传发送的 参数给上位机。通过实验证明,在FPGA加入操作系统后,能轻松实现网络数据的收发,并通过FPGA自身的逻辑,产生我们需要的各种控制信号,做到了系统的统一调度和各个功能的并行处理,发挥了操作系统和FPGA各自的优势。但是也发现,FPGAF操作系统运行的频率不高,最多600MHz中断响应间隔较长,大约3ms左右,系统上电启动时间较长,大约 40s左右这些都需要在 今后设计中进一步完善和提升。 结语 本文介绍了基于FPGA的嵌入式Linux设
15、计流程,从硬件设计到Linux系统加载,再到应用程序运行整个过程,从中可以看出,该设计既发挥了 FPGA并行 处理和多时序控制上的优势,也发挥了嵌入式Linux系统调度还提高了这个系统的稳定行,也减, 和可裁剪性方面的优势,少了 FPGA与外部高速总线连接的资 既满足了嵌入式应用按需定制、 源开销,二者的结合量体裁衣的需求,又能开发出稳定而功能在现在嵌入式系统开发中有很强大的嵌入式系统,好的运用。MicroBlaze处理器的PetaLinux操作系统移植引言 随着FPGA (Field Prograromable Gate Array ,现场可编程门阵列)技术的迅速发展,SOP C (Sy s
16、t am On a P rograromable Chip ,可编程片上系统)作为一种特殊的嵌入式微处理器系 统,已逐渐成为一个新兴的技术方向。SOPC融合了 SoC和FPGA各自的优点,并具备软硬件在系统可编程、可裁减、可扩充、可升级的功能。其核心是在FPGA上实现的嵌入式微处理器核,而如何针对特定的微处理器选择合适的嵌入式操作系统是SOPC开发的难点之一。本文针对Xilinx公司的MicroBlaze软核,介绍了 PetaLinux嵌入式操作系统及其移植方法,研究了 PetaLinux的相关配置和启动方案。1基于MicroBlaze处理器的系统设计1. 1 MicroBlaze处理器简介M
17、icroBlaze软核处理器是一种针对Xilinx FPGA器件而优化的功能强大的微处理器。它内部采用RISC架构的32位指令和数据总线,支持CoreConnect片上总线的标准外设计集合,具有兼容性和重复利用性,且可根据性能需求和逻辑区域成本任意裁减,范 极大地扩展了应用 围,其最精简的核只需要将近400个Slice oMicroBlaze的CoreConnect总线、它能够将FPGA内各种不同的IP核连接到一起构成一个 完整的系统。CoreConnect总线是一个总线标准的集合,它包括PLB总线(Processor LocalBus,处理器本地总线),LMB总线(Local Memory
18、Bus ,高速本地存储器总线),FSL (Fast Simplex Link,快速单连接)总线,以及XCL (Xilinx CacheLink)总线等。1. 2系统结构和外部设备概述本系统主要是在Virtex-4开发板上构建一个以MicroBlaze处理器为中心的嵌入式信号处理系统, 在FPGA内部实现系统的总线架构、数据存储、地址译码、外设接口等系统部件和功能。各功能部件在 FPGA内部都以IP核的形式构建并连接,整个系统的结构框图如图1所示。其中,SysACE用于存放文件系统和应用程序配置文件,INTC用来实现中断控制;GPI0和UART16550用于系统调试,自定义IP核DDC用来实现数
19、字接收机这些外设通过PLB下变频功能,总线与MicroBlaze处理器和DDR相连;用于IP核FFT通过FSL快速傅里叶变换的自定义总线与Micr-oBlaze内部通用寄DDR通过XCL总线存器直接相连,实现了数据的快速传输;与MicroBlaze处理器相连,实现了 MicroBlaze处理器对片外存储器的高速访问。1 . 3嵌入式操作系统的选择选用PetaLinux嵌入式操作系统。它是PetaLogix公司专门针对FPGA的 片上系统设计的嵌入式Linux开发套件,在满足应用工程的逻辑编程能力和对嵌入式Linux要求的 同时,可极 大地缩短产品开发周期。PetaLinux作为专门针对于Xil
20、inx FPGA的嵌入式Linux解决方 案,不但提供了专门的BSP生成器,而且提供了众多的参考设计,可以帮助设计者快速掌握 PetaLinux的配置方法。PelaLinux内核正在不断的完善之中,且不断地加入基于Xilinx FPGA嵌入 式系统IP核的设备驱动,比如XilinxUSB、SysACE FSL总线设备驱动、10/100 / 1000M三态以太网 MAC等。这些设备驱动极大地减轻了嵌入式系统开发者的工作量,缩短了产品开发的周期。2 PetaLinux系统移植在SOPC硬件系统构建完成后,就要针对此结构配置操作系统内核,下面介绍具 体步骤。2. 1建立交叉编译环境嵌入式系统开发一般
21、采用交叉编译的方法,即在宿主机上对内核和应用程序进行编译,生成目标机 处理器可执行的二进制位流文件,将此文件下载到目标机运行。PetaLinux针对MicroBlaze处理器建立了交叉编译器,运行 source . / settings . sh脚本,系统会自动建立交叉环境。2. 2建立硬件平台PetaLinux为每个应用工程建立一个文件夹,里面保存该工程的硬件配置。在移植PetaLinux时,只 需选择相应的硬件平台,内核就会读取该工程文件夹下的配置文件。使用如果使用MMU虚拟内存管理单 PetaLinux-new-platform命令建立硬件平台,令元),则在此命makemenuconfi
22、g命令,在Vendor / 后添加-m选项。硬件平台建立起来后,运行 Product Seletion选项中,选择该硬件平台。另外,还需将在EDK下生成的配置文件转换成夹Linux操作系统可以识别的格式。在工程文件 下运行PetaLinux-copy-autoconfig命令,的 自动完成格式转换,并拷贝配置文件到已选择 工程文件夹下。2. 3添加自定义设备驱动本系统自定义了 IP核,因此必须开发驱动程序并将其添加到PetaLinux配置中。添加自定义设备驱动主要步骤如下:在平台配置目录下Makefile文件中添加语句platobj-$ (CONFIG_PETALOGIX_DDC)+=ddc
23、. o和$(obj) /ddc. o:. config使设备初始化函数ddc. C与内核配置相关联;在驱动程序所在目录obj-的Makefile文件中 添加$ (CONFIG_PETALOGIX_DDC) +=ddc_adapter. o 配置相关 使设备驱动程序 ddc_adapter . c 与内核 联;修改设备驱动程序所在目录下的Kconfig文件,加使配置内核时可以选择该设备驱动,并添以下语句:通过以上文件的修改,就可以在配置PetaLinux内核时选择自定义的设备驱动。2. 4配置PetaLinux内核由于Linux内核的可裁减性,能够方便地对内核进行修改、裁减、编译,最终移植到一个
24、嵌入 式系统中。运行图形编辑工具make menuc-onfig命令,对内核和系统环境进行配置。在内核配置的设备驱动选项中,一定要选择与系统硬件配置一致的硬件设备驱动,否则内核编译时就会出错。针对本系统的硬件配置,主要配置以下几项驱动:Block devices块设备。选择 Xili nx SystemACEsu pport。Mise device混杂设备。选择 FSL FIFO driver ,然后进入 FSL Channel Selection ,选择 FIFO on FSLO,并选择自添加设备驱动Pet-aLogix DDC101 Driver。Network device supp o
25、rt网络设备。选择 Ethernet (1000Mbit)子菜单中的 Xili nx 10/ 100 / 1000 LLTEVIAC support。Character devices compatible serial字符设备。选择Serial drivers子菜单中的 8250/16550 and 和 Console on 8250 / 16550 and compatible serial port文件系统选项中,默认选择了要自行选择。本系统需要挂载ext2、romfs和cramfs文件系统,其他文件系统可以根据需 DOS文件系统的CF卡,因此进行以下配置:DOS/ FATZ NT Fi
26、lesystems® Native Lan guage Supp orto 选择 MSDOS fssupport。o 选择 Codepage 437 (United States , Canada) o 内核配置中的其他配置可以根据目标系统的不同灵活配置,配置完成后保存退出,自动进入 系统环境配置菜单。系统环境配置是对Peta-Linux的属性、命令进行配置,主要有以下几个选项:System Sett in gs系统设置。配置系统的网络地址、默认用户名、默认登陆密码和所用 根文件系统等内容。Core AppI icatio ns内核应用。主要配置内核的常用特性。Network App
27、I icati on s网络应用。配置网络应用时的相关命令。Miscella neous AppI icatio ns混杂应用。配置系统内核中的命令。BusyBox。配置系统内核中的命令。依次执行命令 make dep、make生成内核clean、 imageoPetaLinux已经设置好了编译规则,因此配置完成后, make all ,建立文件依赖关系,清除旧的文件,编译内 核, 3 PetaLinux启动方案经过编译的PetaLinux内核image文件主要有image.elf、 image. ubo 根据 TFT P网络下载启动、 在每次系统上电后Flash中读取配置 SysACECF
28、卡启选择image文件的不同,PetaLinux有4种启动方案:Flash启动和SysACECF卡启动。其中,XMD和TFTP网络下载bin、 启动方案,都必须重新下载,适用于系统调试;Flash启动1mage .方案在系统上电后自动从文件,但Flash烧写速度较慢,更改系统配置较 为不便。因此,本系统选用动方案。使用SysACE CF卡启动PetaLinux,先将硬件比特流文件和image, elf制作成ACE文件,再复制到CF卡中,配置CF卡启动PetaLinux。制作ACE文件,可在EDKShell窗口运行命 令:xmd-tcl genace . tel (命 令工具)-jprog-bo
29、ard ml402 (所需的开发板)-hw implementation / download . bit (生成的比特流文件)-elf image . elf (编译 Linux 内核生成的可执行网表文件)-ace system . ace (需生成的ACE文件)成功后,适合于 血-402开 发板的ACE文件就生成了。Linux运行需要根文件系统的支持,启动时必须加载文件系统以支持系统的运行,而image, elf中不 包含文件系统。因此,使用SysACE CF卡启动时必须手动加载文件系统。在编译PetaLinux内核时,已经生成了以romfs文件夹为名称的文件系统,所以只需将CF躁唠翻I解
30、蹦个吻俺挂载此文件系统。具体步骤如下:将CF卡挂载到Linux系统中,运行命令fdisk / dev/sda把CF卡分成3个区。第1分区 存放 system , ace文件,第2分区为Linux Swap交换分区,第3分区存放根文件系统。Linux下格式化第3分区为ext2文件系统,运行命令mke2fs/dev/sda3o在/ete /fstab下输入命 令/ dev/ sda3/ mnt/ rootfs auto defaults , user, noauto 0 0。把设备 sda3 挂在/ mnt/rootfs 文件下,文件系统为默认的ext2,普通用户,能挂载,不转储,启动时不扫描文件
31、系统。通过命令 mount / mnt/ rootfs 挂载该目录,这样就可以把根文件系统 rootfs拷贝到CF卡的该分区上。Windows下格式化第1分区为FAT32文件系统,把system, ace复制到这个分区。Linux卜格式化第2分区为父换分区,运行命令一切mkswa/ dev / sda2。 准备就绪后,插入 CF卡,开启电源,就可以从 CF卡启动 结语本文介绍了一种可用于MicroBlaze处理器的嵌入式LinUX操作系统 PetaLinux,并详细讨论了其内核配置和启动方案。通过移植 Peta-Linux,本文开发的SOPC可以直接用于实际 工程。该嵌入式操作系统移植快速、简
32、单,由于其基于Linux2 , 6内核,可以保证较高的稳定性。因此,在SOPC应用日益复杂的背景下具有较高的实用价值。本文创新点:实现了 PetaLinux在MicroBlaze处理器的移植,并成功实现 PetaLinux中自 宗硬件铅冬驹动的添加和SvsACE CF卡的启动方案八MPMC勺使用双击Bus_ In terface标签栏下的DDR_SDRAMS入编辑MPM的界面。如图所示:点击看大图图点击DDR_SDRAMBase Con figurati on 主标签栏:包含两个标签栏。其中,用户可以在Port Type Co nfiguratio n中配 置端口类型,MPM最多可以 有8个端
33、口,每个端口有前述的4种接口类型XCL, PLBv46, SDMANPI以及不使用INACTIVEo点击看大图图MPMC端口的4种接口类型以及不使用INACTIVE分配完毕后可以通过Leftjustify将不工作的端口消除掉。在这个过程中所有与端口有关的参数和外部总线连接都被移到左边。图点击Leftjustify之前图点击之后在Common Address中可以观察和设置初始地址。想配置任一个独立的端口地址,需到 Advanced标签栏下Address选项选择。图 Com mon Address 标签栏Memory In terface 主标签栏MPM可以与不同厂商的许多不同种内存一起工作。这
34、个标签栏让你在Memory Part Selector标签下选择与MPM连接的内存。Memory Part Selector 它包含 Type 选项,Memorymanufaeturer 选项,Memorystyle 选项, Memorydensity 选项,Memory width 选项和 Part No.选项。图 Memory Part Selector过滤的结果在Part No.下拉列表中出现。如果内置的内存数据库正确部分不能使用时,Memory Part Selector/Part No.下拉列表也会包含一个用户选项。在你选择了 CUSTO选项 之后,所有内存参数都可修改,你能够输入你
35、想要的参数。在你选择了内存部分之后,将被自 参数 动载入到 Selected Memory Info 区和 Memory/DIMM Sett in gs 标签中去Memory/DIW Setti ngs在这个设置区内,选择下拉菜单,你可以调整DIMMs的数目,内存数据宽度, 内存时钟周期,ODT设置和部分其他信息。图 Memory In terface 标签Memory Part Setti ngs TabMemory Part Sett in gs 标签栏有两个区间: Part Setti ngs 和 Memory Timi ng Setti ngs。 Part Setti ngs 包含 D
36、ata Dep th, Data Width , Bank, Row 和 Colu mn BitSo MemoryTimi ng Setti ngs包含内存部分选项。图 Memory Part Sett in gs 标签Port Co nfigurati on 主标签栏在Port Configuration 标签栏可以设置每个独立端口的参数。端口 0-3和端口 4-7可以在 标签栏中显示。端口标签栏分成如图所示的表明端口号的四个象限。只有与现有端口类型相关的参数(在Base Configuration 主标签栏中选择)可以查看并修改。图 Port Con figurati onAdvaneed
37、主标签栏Advaneed的标签栏提供了更多高级MPMC勺用户资源。Data Path在Data Path这个标签栏中,你既能够配置常规传递途径的设置,也能单独设置每个端口。General Pip eli neSett in gs允许你设置常规传递途径的参数,而 Port-s pecific Sett ings 允许你按照如下方式为独立的端口改变传递途径的设置:NPI Width: NPI 的宽度。Read FIFO Conf ig:用BRAM, SRL,或者Wr-Oniy (只能写,不能读缓存)执行FIFO。Write FIFO Con fig:用 BRAM, SRL,或者 Rd-O nly
38、(只能读,不能写缓存 )执行 FIFOo Read Memory Pip eli ne:允许传递途径读内存。Read Port Pip eli ne:允许传递途径读潜在端口。Write Memory Pip eli ne:允许传递途径写内存。Write Port Pip eli ne:允许传递途径写端口。Address Aek Pip eli ne:允许传递途径确认抵制要求。图 Data PathPort-s pecific Sett ings 中 Read FIFO Config 有三个选项:BRAM SRL Wr-Oniyo图 Read FIFO Config同样,Write FIFO C
39、onfig有三个选项:BRAM SRL, Rd-Onlyo图 Write FIFO ConfigArbitrati onMPM最多有8个端口,它们能同时访问内存。因此,在任何必要时候都能有一个仲裁机制来断定哪个端口有优先权,就显得十分重要了。 在Arbitration标签栏中,你可以选择用哪种仲裁机制。从下拉菜单中选取一种仲裁机制:Round Robi n:采取循环仲裁模式。图 Rou nd RobitFixed:采取确定的优先级模式。Custom:在这种模式中,可以定制时间档的数值和每个时间档的仲裁优先级。在每 个时间 档中仲裁优先级被编译成描述端口间优先级下降的字符串。图 Custom例如
40、,字符串“ 01234567'给端口。最高的优先级,然后从端口1到7优先级下降。MiseMise这个从标签栏包含了需要你注意,但不在先前类别内的参数。图 MiseNPI接口将在第七章中上面大概地介绍了 MPM的结构和功能,具体如何在设计中加入使用 给出一个实际的例 子。BootloaderBootLoader的基本概念板级支持包(BSDBSP是板级支持包(Board Support Package)的缩写,是通常用在嵌入行业中的一个术语, 用来代表在一个特殊硬件平台上快速构建一个嵌入操作系统所需的原始资料或者二进制软 件包。BsP的作用是支持操作系统,使之能够更好的运行于硬件平台。统而
41、言曲SP拗的于操作系 操作系统对应于不同定义形式的BSp包括Windows CE Linux> Vxworks等。SoC/CPU厂商应向其芯片的用户提供一个基本的BSP包,以支持主板厂商或整机制造厂商在此基础上定制和开发各种商用终端产品。在嵌入式系统学习过程中设计到了Bootloader,下面讲述了 Bootloader的基本作用,在后续的文章中我将对如何编写自己的Bootloader进行介绍。1. Bootloader的基本概念:简单地说,bootloader就是在操作系统内核运行前运行地一段小程序。通过这段小程序, 可以对硬件设备,如CPU SDRAM Flash、串口等进 行初始化
42、,也可以下载文件到系统板、 对Flash进行擦除和编程,真正起到引导和加载内核镜像的作电一j但是随着嵌入式系统的发展,bootloader已经逐渐在基本功能的基础上,进行了扩展,bootloader可以更多地增加对具体系统的板级支持,即增加一些硬件模块功能上的使用支持,以方便开发人员进行开发和调试。从这个层面上看,功能扩展后 bootloader可以虚拟地看成是一个微小的系统级 的代码 包。 bootloader是依赖于硬件而实现的,特别是在嵌入式系统中。不同的体系结构需求的 bootloader是不同的;除了体系结构,bootloader还依赖于具体的嵌入式板级设备的配置。也就是说,对于两块
43、不同的嵌入式板而言,即使它们基于相同的CPU构建,运行在其中一块电路板上的bootloader,未必能够运行在另一块电路开发板上。0x0开始。bootloaderbootloader 大多BootLoader最为系统复位或上电后首先运行的代码,一般应写在起始物理地址Bootloader的启动过程可以是单阶段的,也可以是多阶段的。通常多阶段的能提供更为复杂的功能,以及更好的可移植性。从固态存储设备上启动的数是二阶段的启动过程,也即启动过程可以分为stage 1和stage 2两部分。2. ARM Bootloader 的一般作用对于一个ARM系统来说,本质上,bootloader作为引导与加载内
44、核镜像的“工具”,在实 现上,必须提供以下几个功能,更确切地说,必须做到以下几点:(1)初始化RAM (必需):bootloader必须能够初始化RAM因为将来系统要通过它保存一些Volatile数据,但具体地实现要依赖与具体的CPU以及硬件系统。(2)初始化串口(可选,推荐):bootloader应该要初始化以及使能至少一个串口,通过它与控制台联系进行一些 debug的工作;甚至与PC通信。(3 n启动内核镜像(必需):根据内核镜像保存的存储介质不同,可以有两种启动方式:FALSH启动以及RAMB动;但是无论是哪种启动方式,下面的系统状态必须得到满足:CPU寄存器的设置:R0=0;R1二机器
45、类型;R2二启动参数标记列表在RAM中的起始地址;这三个寄存器的设置是在最后启动内核时通过启动参数来传递完成的。CPU模式:关闭中断;属于SVC模式;Bootloader中没有必要支持中断的实现,这属于内核机制以及设备驱动管理的管理范畴;SVC模式是系统的一种保护模式,这样就可以进行一些只能在SVC模式下的操作,例如一些特定寄存器访问操作。Cache和MM附勺设置:MMU必须关闭;数据cache必须关闭;指令cache可以关闭也可以开启;Bootloader中所有对地址的操作都是使用物理地址,是实在的实地址,不存在虚拟地址,因此MMU必须关闭。Bootloader主要是装载内核镜像,镜像数据必
46、须真实写回SDRAM中,所以数据cache必须关闭;而对于指令cache,不存在强制性的规定,但是一般情况下,推 荐关闭指令 cache。Bootloader启动内核镜像的方法是通过跳转语句直接跳转至内核镜像的第一句指令 语句。Bootloader存在的必要性Bootloader的功能决定了在引导Linux系统时,必须使用bootloader,除非你对linux内核进行了 修改。Bootloader有两个主要功能:1 .在发布模式,自动引导 linux系统,为系统初始化各种参数。2 .在调试模式,要能够方便的下载内核,引导内核。LinUX系统一定要bootloader支持吗答:是的。通用的Li
47、nUX内核,启动时需要很多参数,这些参数必须通过bootloader传递。而且内核一般是压缩存放到外存上的,从外存到内存的拷贝也是由bootloader完成。Bootloader为什么不和kernel放到一起呢答:不可以这样做。从bootloader的第二个功能就知道,bootloader是不能和内核放 到一起。 当然,在发布模式时,是可以集成到一起的,通常没必要。从哪里可以得到bootloader答:目前通用的bootloader很多,不论是嵌入式还是桌面系统, 比如lilo, grub, blob等。桌面用的bootloader我们就不讨论了,重点说一下嵌入式领域用的bootloader。
48、采用通用的bootloader功能强大,开发容易,而且由专人维护升级, 不过多是针对特定的CPU或者特定开发板的。如果是学习,推荐自己开发 bootloader o如何编写自己的bootloader答:编写一个bootloader只要能够完成前面提到的两个功能就可以了。分别描述一下这两个功 能的实现:1 该功能比较简单,就是从FLASH中拷贝数据到RAM I如果内核的存放不是基于文件系统的,直接采用汇编就可以完成块拷贝。然而如果内核存放在文件系统之上,比如内核存放到了基于ext2文件系统的CF卡上。I首先我们的bootloader要能够访问CF卡,然后要能够识别文件系统.只有这样才能正确找到内
49、核文件并拷贝到内存中。2.该功能一般通过串口实现。对于ARM来说,驱动串口比较容易,直接从主机的串口接收内核数据存放到RAM中,就可以启动内核了。如果需要发布,还要实现把内核从RAM烧写到外存的能力。为了提高速度,充分挖掘开发板和 CPU的潜力,出现了许多用网口和USB接口下载内核 必须提 的供网卡驱动和TCP/IP协议的支持。使用USB的 bootloadero 使用网口,bootloader 接口,需要提高大容量存储类驱动。为了拓展思路,你也可以使用红外,存储卡接口进行数据下载。使用红外接口,和串 口基本一样,无非就是没有了连线。使用存储卡,通常需要文件系统的支持。比如,我们使用SD卡存放
50、内核,在主机交叉编译好内核后,把内核存放到SD卡上。然后将XD卡插到目标板的插槽中,bootloader必须有能力把SD卡上的内核拷贝的RAM中,过程参考功能1 的实现。Backgro und- 几乎所有的嵌入式系统都需要用外部存储器一最终的设计不可能用Demo Board, 肯定者I,要重新画PcB- DDR Memory Co ntroller是一个挺复杂的系统,移植起来比较麻烦Questi on怎样移植现有设计的Memroy Controller到定制PCB板上Solutio n- 此文针对EDK MPMC-MPMC提供两种PHY - MIG PHY和STATIC PHYo MIG PH
51、Y可以达到比较高的performance,移植也相对困难。STATIC PHY使用DCM PHASE SHIFTS能来调校时序,调校一次后可以把数值固定下来以后就不必调了,缺点是速度只能达到100T25MHZ。- Port 的经验主要参考 MPM(Datasheet P43 Memor4nterface Generator (MIG) Based PH# In terface 和 P 47Co nverti ng MIG UCF to UCF,另外 AR29221 虽然 AR 是针对Spartan3的,但是Virtex系列也很有参考意义。- 使用MIG PHY需要遵循特定的管脚分配规则。参考U
52、G086 - Section VI. MemoryImpI eme ntati on Guideli nes- 自己调整过的管脚分配需要在MIG中Verifyo- MPM提供perl语言将MIG的UCF根据MHS MPM的引脚名字转换成相应的UCF Virtex-5DDR2 PHY 需要设置 C MEM DOS TO COLC MEM DO TO MS一调整 MPMC 勺 Parameter,比如 C MEM pARtNQMIG PHY不需要任何软件设置,自动会做 Calibration。如果过不了 Memory Test或读写不正常,那么首先把MPMC_lnitDone引到LED上观察初始化
53、有没有完成。-如果MIG PHY初始化不能自动完成,可以参考UG086 Section V. DDR2 Debug Guide的debug flow来查找关键信号,比如calib_start, calib_done等。或者试用STATIC PHY-STATIC PHY的用法在MPMC datasheet中有详细介绍。主要步骤为: 0.在UCF中定义好管脚位置。1 . MPMC PARAMETER C_USE_STATIC_ PHY = 12 .取消 MPMC_Clk_200lHz P0R 的连接3 .根据 Datasheet 中 Static PHY Implementation ->
54、DCM Phase Adjust Port的说明修改 1HS 文件,添加一个 DCM 连接 MPMC_DCM_PSINCDEMPMC_ClkO 并调整 MPM C Clk Mer 等信号 LOCKED I 号。4 .将MPMC_CTFBus连接到系统的PLB46总线上。这个总线用于控制 存器。 Static PHY的控制寄 5. 根 据 Datasheet 中 Static PHY Implementation 一一> Timing Constraints在 UCF 中添加时序约束。6. 添力口SW Application , 内容为 ,放在BRAM中,所需空间大 约为10K。7. 这个
55、 calibration example 会自动找至 j 所需设置的 phase shift 值, 记下来并填在 DCM 的C PHASE SHIF 参数中o-如果还是有问题,仔细查看ngdbuiId/map/par report的warning,从中查找信息。通常static phy都是可以用的。-我犯过的个错误:在UCF编辑管脚的时候,把CAS管脚写成了 CS管脚,结果有个CS管脚的定义被overwrite ,怎么都不能完成calibrate , XMD mrd读取同一个地址的的数据永远都不 一样。通过检查ngdbuiId report发现这个warning,于是通过static phy,
56、也通过了 MIG PHY -另一个错误:V5 DDR2 Place报错引用Place:292 - The components u_system/mpm c_0/mpm c_0/mpm c_core_0/u _p hy_io_0/gen_dq28. u_iob_dq/stg3b_out_fall a ndu_system/mpm c_0/mpm c_0/mpm c_core_0/u _p hy_io_0/ge n_dq29. u_iob_dq/stg3b_out_fal 1 seem to be placed / locked to the same siteSLICE X0Y138是由于没有
57、设置C MEM DQS 10 COC MEM DQ 10引起的。MIG太复杂,通常来讲不推荐自己改代码。因此感觉就算查了MIG PHY勺关键信号帮助也不太大。绝望时仔细查查Answer Record,试一'试Static PHY项目需要MicroBlazel将采集到的大批数据缓存到SDRAM中,然后再通知MicroBlazeO将该数据读出再通过Ethernet接口送给PC由于特殊原因,FPGA在一块现成的控制卡上,需要将该卡插到我们的母板上。但是该控制板最初的设计是用来控制电机的,所以根本就没考虑过什么端接电阻匹配和等长 这些问题,给 项目带来了意想不到的问题。所以以后做 SDRAM控制的时候,硬件上一定要提前考虑好,这样的话后 期逻辑的设计就会省事多了,特别是做加R的设计。言归正传,还是看怎么倒腾这块控制卡
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 历史建筑群保护社区残疾人托养中心规划基础知识点归纳
- 2025年小学逻辑推理试题
- 海外衍生品市场风险管理研究-以青山集团伦镍市场“逼空”事件为例
- 混合现实编程培训研究-洞察阐释
- 高一地理第二节大气圈与天气气候《全球的气压带与风带》教学设计
- 学生社区思想政治工作的现实困境与创新路径
- 当前绿色金融体系发展现状与问题分析
- 2025至2030年中国热镀锌管外丝行业投资前景及策略咨询报告
- 2025至2030年中国混纺毛条行业投资前景及策略咨询报告
- 2025至2030年中国测缝计行业投资前景及策略咨询报告
- 中国建筑信息模型(BIM)行业发展状况与前景趋势研究报告2024-2029年
- 小学科学学法指导
- 分级护理制度培训
- 寰枢关节错位
- 《泌尿系统检查》课件
- 关于水痘的护理查房
- 苏教版小学科学四年级下册各单元测试卷附答案
- 华中师大一附中2024届高二数学第二学期期末综合测试模拟试题含解析
- 公司股权投资管理制度
- 景区保安投标方案技术标
- 售楼处装修工程施工进度表7.31
评论
0/150
提交评论