FPGA应用程序加载.docx

上传人:b****6 文档编号:7452951 上传时间:2023-01-24 格式:DOCX 页数:35 大小:382.77KB
下载 相关 举报
FPGA应用程序加载.docx_第1页
第1页 / 共35页
FPGA应用程序加载.docx_第2页
第2页 / 共35页
FPGA应用程序加载.docx_第3页
第3页 / 共35页
FPGA应用程序加载.docx_第4页
第4页 / 共35页
FPGA应用程序加载.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

FPGA应用程序加载.docx

《FPGA应用程序加载.docx》由会员分享,可在线阅读,更多相关《FPGA应用程序加载.docx(35页珍藏版)》请在冰豆网上搜索。

FPGA应用程序加载.docx

FPGA应用程序加载

基于XilinxFPGA的嵌入式Linux设计流程

FPGA是通过逻辑组合电路来实现各种功能的器件。

由于FPGA部集成了大量的逻辑资源和可配置的I/O引脚,加上独特的并行处理架构,可以轻松实现同时对多个外部设备的配置和管理,以与外各种接口数据的传输。

现在开发厂商又在FPGA部参加了大量的DSP和BlockRAM资源,非常适合图像处理、数字信号处理等运算密集的应用,因此在这些领域取得了广泛的应用。

但是由于FPGA程序编写的灵活性和功能的多样性,使得它在一个复杂工程中对各个程序的使用调度、统筹管理上有很大的局限性,这样就必须引入操作系统进展统一的管理。

Linux系统那么因为其良好的可裁减、可配置等特点在嵌入式领域应用广泛。

Linux操作系统提供了许多系统级的应用,例如网络协议的实现、进程调度、存管理等,同时Linux是一个成熟的开源操作系统,有丰富的应用资源,利用这些资源和强大的系统功能,用户可以快速地开发基于嵌入式环境复杂系统。

因此,结合FPGA和Linux双方优势,可以很好地满足嵌入式系统设计需求,量体裁衣,去除冗余。

本文给出了一种基于XilinxFPGA的嵌入式Linux操作系统解决方案。

基于FPGA的嵌入式系统的硬件设计

本设计是基于XilinxXC4VFX40系列FPGA,它部集成了两个PowerPC405处理器,4个10/100/1000M以太网MAC模块,运行频率300MHz时,具有420D-MIPS性能,能解决高速网络数据传输问题,并且能解决通过网络加载操作系统和交叉编译等问题。

它部有448个可配置I/O口,2592kbBlockRAM,能实现对各种外部设备的并行控制以与较多数据的存储与处理。

加载一个操作系统,一般需要几十兆的存空间,FPGA部自带的RAM空间是远远不够的,本设计在板上扩展了两片MICRON公司的256MbDDR存,作为上电时操作系统的加载和运行空间。

现在主流的嵌入式操作系统,都需要搭建交叉编译环境,把在主机上编写好的可执行文件下载到目标板上,这就需要实现网络数据的传输。

由于XC4VFX40自带了以太网MAC模块,只需要在外面添加个PHY芯片和带隔离器的RJ45接口就能实现这个功能。

本设计由于对网络数据实时性要求很高,因此采用Marvell公司的千兆以太网PHY芯片88E1111-RCJ。

它能根据自身配置和主机设计,实现10/100/1000M自适应传输,并且Linux本身对这个芯片提供了驱动支持,实现无缝。

操作系统加载到DDR中能快速有效的运行,但是掉电就会丢失,因此必须参加FLASH芯片,把系统文件存储到外部FLASH中。

加电时,FPGA把操作系统文件从FLASH读入到DDR中运行。

FPGA设计当然会扩展很多接口出来,利用自身并行处理的优势,控制很多外围设备,本设计也不例外,扩展了8个通用的GPIO,2个PS/2接口,1个USB接口,1个AC97声卡接口,1个HotLink接口,以与4个RS422接口,同时扩展了两个CPCI接口,引出了16位数据地址线和Ethernet控制线,整个系统的硬件框图如图1所示。

在进展电路设计时,是以FPGA为核心,向外扩展各种设备,因此特别注意了FPGA各个引脚的连接。

由于DDR和PHY芯片都需要提供+2.5V电压,因此和DDR、PHY芯片连接引脚所在的BANK需要提供+2.5V电压参考,并且不能接以LVTTL或LVCMOS为电压参考的引脚。

重要快速的时钟信号必须接到全局时钟引脚上。

由于FPGA需要通过外部FLASH启动操作系统,需要并行配置,以减少加载时间,配置电路如图2所示。

在DDR布线时,数据和地址线需要走等长线,数据线之间不能相差10Mil,地址线要控制在20Mil以,时钟也需要走差分等长线,长度应大于地址线,DDR各个信号还需要47Ω的并行端接,改善信号质量。

千兆PHY输出MDI信号也需要在顶层做差分等长,不然在进展1000M数据传输时很可能不稳定。

DDR和PHY需要完整的电源回路做参考,电源层划分时也要特别注意,其他电路做常规处理就可以了。

 

EDK和ISE软件设计

首先需要调用Xilinx提供的EDK软件,对各个模块参加必要的IPCORE,以便操作系统能正常调用这些器件的驱动操作他们。

本设计采用的是EDK10.1.2版本,PPC方面选用ppc405核,频率设定在300MHz,同时需要添加中断输入引脚,以便响应以太网、串口等外部中断,其他使用默认设置。

DDR控制器采用EDK提供的Multi-Port-MemoryController模块,需要设置DDR芯片厂商、大小和数据位数等,特别指出的是,要设置独立的两条PLB总线和PPC连接,作为PPC的指令和数据总线。

MAC单元需要参加XPS_LL_TEMAC模块来控制,本设计需要设置PHY类型为GMII(千兆以太网),同时要指定物理地址和收发FIFO大小。

FLASH单元需要参加xps_mch_emc模块,同时设置FLASH类型和读写时间。

为了方便调试,还需要参加串口控制台模块,本设计使用的是UartLite模块,设置需要的波特率和校验类型。

特别注意的是,系统还需要时钟管理模块(DCM),提供各个模块需要的不同时钟,还要设置一段FPGA部RAM区域,放置PPC的.boot文件。

外部这些模块都通过PLB总线和PPC通信,需要统一编址,一般把DDR存空间地址分配到0x0开始,整个系统的构建如图3所示。

本设计,除了在EDK中搭建了操作系统必须的各种模块后,还需要在ISE中编写各个时序电路程序,因此把EDK中编写好的工程作为一个模块,参加到ISE中,然后统一编译,这样生成了我们需要的完整功能的程序。

特别指出的是,PPC405数据地址采用的是大端模式,接入到ISE中时,需要把数据颠倒位置,如DATA[0:

31]变为DATA[31:

0],才能正常读写。

Linux操作系统的加载与烧写

加载Linux操作系统需要利用EDK软件提供的板级升级包(BSP)配置核。

BSP包含了所选定处理器架构的属性文件以与相关硬件的驱动源文件。

首先要在EDKProjectOption中ProjectPeripheralRespository选项下设置Xilinx提供的gen-mhs-devtree/edk_lib库路径,然后在软件平台设置中选择Dts模式,编译更新升级包,生成.dts配置文件。

Dts文件包含了所有模块地址分配,中断以与驱动信息,把他参加到Linux核中,然后配置核选项选择对应的处理器架构、所选硬件的驱动模块以与需要的其他核模块,之后再对完成配置的核进展编译,生成Linux的核image文件。

生成核image文件之后,还需要生成系统运行所需要的根文件系统。

根文件系统中包含了嵌入式Linux系统的所有应用程序、库以与系统配置等相关文件。

根文件系统中常用的程序和命令可利用开源软件Busybox构造。

构造完成之后,在Busybox生成的目录和文件的根底上再构造根文件系统的目录树,并添加相关设备文件和配置文件以与系统运行时需要的脚本文件,从而形成最终的根文件系统,ramdisk.image。

把他拷贝到核中的../arch/powerpc/boot目录下,在linux2.6.x根目录下运行makezlmage.initrt,生成最终的系统文件。

需要指出的是,在编译linux核时,需要设置好交叉编译环境:

首先安装ELDK编译软件,然后在编辑自己的目录下的.bashrc(例如:

/home/ppc/)中参加下面容:

CROSS_COMPILE=ppc_4xx

$PATH=$PATH:

/home/ppc/PowerPc/ELDK/usr/bin:

/home/ppc/PowerPc/ELDK/binexportCROSS_COMPILEPATH

保存,然后执行$source.bashrc

把生成的zlmage.initrd文件通过EDK软件下的XMD调试窗口,使用dowzlmage.initrd命令下载到DDR中,然后运行run命令,就正常启动Linux了。

程序下载到DDR中,掉电后,数据就丢失了,不能保存和连续使用,因此要把操作系统烧写到FLASH,上电后让它能自动运行,掉电后也不会丢失。

EDK提供了专门的FLASH烧写工具ProgramFlashMemory,首先要把zlmage.initrd文件转换为FLASH能识别的.SREC文件,需要在EDKShell下运行下面命令:

$powerpc-eabi-objcopy–Ielf32-powerpc–OsreczImage.initrd.srec

第一次烧写FLASH时需要把ProgramFlashMemory中CreateFlashBootlooderApplication勾上,让系统自动生成Bootlooder程序。

操作系统烧写到Flash中后,需要FPGA在上电后自动从FLASH读取操作系统数据,然后自动运行,这几需要把刚刚生成的bootloadr_0工程中的.elf参加到.bit生成新的配置文件,使用EDK下的UpdataBitstream命令就能实现。

最后把生成的.mcs文件烧写到FPGAPROM中,上电后,系统就能自动运行了。

设计结果与分析

在Linux系统正常加载后,我们设计一个程序,它通过以太网,从上位机获得数据,存入FPGA部BlockRam中,再在ISE中编写程序,把获得的数据取出,产生频率可变的波形发生器,并回传发送的参数给上位机。

通过实验证明,在FPGA参加操作系统后,能轻松实现网络数据的收发,并通过FPGA自身的逻辑,产生我们需要的各种控制信号,做到了系统的统一调度和各个功能的并行处理,发挥了操作系统和FPGA各自的优势。

但是也发现,FPGA下操作系统运行的频率不高,最多600MHz,中断响应间隔较长,大约3ms左右,系统上电启动时间较长,大约40s左右,这些都需要在今后设计中进一步完善和提升。

结语

本文介绍了基于FPGA的嵌入式Linux设计流程,从硬件设计到Linux系统加载,再到应用程序运行整个过程,从中可以看出,该设计既发挥了FPGA并行处理和多时序控制上的优势,也发挥了嵌入式Linux系统调度和可裁剪性方面的优势,还提高了这个系统的稳定行,也减少了FPGA与外部高速总线连接的资源开销,二者的结合,既满足了嵌入式应用按需定制、量体裁衣的需求,又能开发出稳定而功能强大的嵌入式系统,在现在嵌入式系统开发中有很好的运用。

 

MicroBlaze处理器的PetaLinux操作系统移植

引言

随着FPGA(FieldPrograromableGateArray,现场可编程门阵列)技术的迅速开展,SOPC(SystamOnaPrograromableChip,可编程片上系统)作为一种特殊的嵌入式微处理器系统,已逐渐成为一个新兴的技术方向。

SOPC融合了SoC和FPGA各自的优点,并具备软硬件在系统可编程、可裁减、可扩大、可升级的功能。

其核心是在FPGA上实现的嵌入式微处理器核,而如何针对特定的微处理器选择适宜的嵌入式操作系统是SOPC开发的难点之一。

本文针对Xilinx公司的MicroBlaze软核,介绍了PetaLinux嵌入式操作系统与其移植方法,研究了PetaLinux的相关配置和启动方案。

1基于MicroBlaze处理器的系统设计

1.1MicroBlaze处理器简介

MicroBlaze软核处理器是一种针对XilinxFPGA器件而优化的功能强大的微处理器。

它部采用RISC架构的32位指令和数据总线,支持CoreConnect片上总线的标准外设计集合,具有兼容性和重复利用性,且可根据性能需求和逻辑区域本钱任意裁减,极扩展了应用围,其最精简的核只需要将近400个Slice。

MicroBlaze的CoreConnect总线、它能够将FPGA各种不同的IP核连接到一起构成一个完整的系统。

CoreConnect总线是一个总线标准的集合,它包括PLB总线(ProcessorLocalBus,处理器本地总线),LMB总线(LocalMemoryBus,高速本地存储器总线),FSL(FastSimplexLink,快速单连接)总线,以与XCL(XilinxCacheLink)总线等。

1.2系统结构和外部设备概述

本系统主要是在Virtex-4开发板上构建一个以MicroBlaze处理器为中心的嵌入式信号处理系统,在FPGA部实现系统的总线架构、数据存储、地址译码、外设接口等系统部件和功能。

各功能部件在FPGA部都以IP核的形式构建并连接,整个系统的结构框图如图1所示。

其中,SysACE用于存放文件系统和应用程序配置文件,INTC用来实现中断控制;GPIO和UART16550用于系统调试,自定义IP核DDC用来实现数字接收机下变频功能,这些外设通过PLB总线与MicroBlaze处理器和DDR相连;用于快速傅里叶变换的自定义IP核FFT通过FSL总线与Micr-oBlaze部通用存放器直接相连,实现了数据的快速传输;DDR通过XCL总线与MicroBlaze处理器相连,实现了MicroBlaze处理器对片外存储器的高速访问。

1.3嵌入式操作系统的选择

选用PetaLinux嵌入式操作系统。

它是PetaLogix公司专门针对FPGA的片上系统设计的嵌入式Linux开发套件,在满足应用工程的逻辑编程能力和对嵌入式Linux要求的同时,可极缩短产品开发周期。

PetaLinux作为专门针对于XilinxFPGA的嵌入式Linux解决方案,不但提供了专门的BSP生成器,而且提供了众多的参考设计,可以帮助设计者快速掌握PetaLinux的配置方法。

PelaLinux核正在不断的完善之中,且不断地参加基于XilinxFPGA嵌入式系统IP核的设备驱动,比如XilinxUSB、SysACE、FSL总线设备驱动、10/100/1000M三态以太网MAC等。

这些设备驱动极减轻了嵌入式系统开发者的工作量,缩短了产品开发的周期。

2PetaLinux系统移植

在SOPC硬件系统构建完成后,就要针对此结构配置操作系统核,下面介绍具体步骤。

2.1建立交叉编译环境

嵌入式系统开发一般采用交叉编译的方法,即在宿主机上对核和应用程序进展编译,生成目标机处理器可执行的二进制位流文件,将此文件下载到目标机运行。

PetaLinux针对MicroBlaze处理器建立了交叉编译器,运行source./settings.sh脚本,系统会自动建立交叉环境。

2.2建立硬件平台

PetaLinux为每个应用工程建立一个文件夹,里面保存该工程的硬件配置。

在移植PetaLinux时,只需选择相应的硬件平台,核就会读取该工程文件夹下的配置文件。

使用PetaLinux-new-platform命令建立硬件平台,如果使用MMU(虚拟存管理单元),那么在此命令后添加-m选项。

硬件平台建立起来后,运行makemenuconfig命令,在Vendor/ProductSeletion选项中,选择该硬件平台。

另外,还需将在EDK下生成的配置文件转换成Linux操作系统可以识别的格式。

在工程文件夹下运行PetaLinux-copy-autoconfig命令,自动完成格式转换,并拷贝配置文件到已选择的工程文件夹下。

2.3添加自定义设备驱动

本系统自定义了IP核,因此必须开发驱动程序并将其添加到PetaLinux配置中。

添加自定义设备驱动主要步骤如下:

①在平台配置目录下Makefile文件中添加语句platobj-$(CONFIG_PETALOGIX_DDC)+=ddc.o和$(obj)/ddc.o:

.config使设备初始化函数ddc.C与核配置相关联;

②在驱动程序所在目录下的Makefile文件中添加obj-$(CONFIG_PETALOGIX_DDC)+=ddc_adapter.o使设备驱动程序ddc_adapter.c与核配置相关联;

③修改设备驱动程序所在目录下的Kconfig文件,使配置核时可以选择该设备驱动,并添加以下语句:

通过以上文件的修改,就可以在配置PetaLinux核时选择自定义的设备驱动。

2.4配置PetaLinux核

由于Linux核的可裁减性,能够方便地对核进展修改、裁减、编译,最终移植到一个嵌入式系统中。

运行图形编辑工具makemenuc-onfig命令,对核和系统环境进展配置。

在核配置的设备驱动选项中,一定要选择与系统硬件配置一致的硬件设备驱动,否那么核编译时就会出错。

针对本系统的硬件配置,主要配置以下几项驱动:

①[Blockdevices]块设备。

选择XilinxSystemACEsupport。

②[Miscdevice]混杂设备。

选择FSLFIFOdriver,然后进入FSLChannelSelection,选择FIFOonFSLO,并选择自添加设备驱动Pet-aLogixDDC101Driver。

③[Networkdevicesupport]网络设备。

选择Ethernet(1000Mbit)子菜单中的Xilinx10/100/1000LLTEMACsupport。

④[Characterdevices]字符设备。

选择Serialdrivers子菜单中的8250/16550andcompatibleserialsupport和Consoleon8250/16550andcompatibleserialport。

文件系统选项中,默认选择了ext2、romfs和cramfs文件系统,其他文件系统可以根据需要自行选择。

本系统需要挂载DOS文件系统的CF卡,因此进展以下配置:

①[DOS/FAT/NTFilesystems]。

选择MSDOSfssupport。

②[NativeLanguageSupport]。

选择Codepage437(UnitedStates,Canada)。

核配置中的其他配置可以根据目标系统的不同灵活配置,配置完成后保存退出,自动进入系统环境配置菜单。

系统环境配置是对Peta-Linux的属性、命令进展配置,主要有以下几个选项:

①[SystemSettings]系统设置。

配置系统的网络地址、默认用户名、默认登陆密码和所用根文件系统等容。

②CoreApplications]核应用。

主要配置核的常用特性。

③[NetworkApplications]网络应用。

配置网络应用时的相关命令。

④[MiscellaneousApplications]混杂应用。

配置系统核中的命令。

⑤[BusyBox]。

配置系统核中的命令。

PetaLinux已经设置好了编译规那么,因此配置完成后,依次执行命令makedep、makeclean、makeall,建立文件依赖关系,去除旧的文件,编译核,生成核image。

3PetaLinux启动方案

经过编译的PetaLinux核image文件主要有image.bin、image.elf、image.ub。

根据选择image文件的不同,PetaLinux有4种启动方案:

XMD下载启动、TFTP网络下载启动、Flash启动和SysACECF卡启动。

其中,XMD和TFTP网络下载启动方案,在每次系统上电后都必须重新下载,适用于系统调试;Flash启动方案在系统上电后自动从Flash中读取配置文件,但Flash烧写速度较慢,更改系统配置较为不便。

因此,本系统选用SysACECF卡启动方案。

使用SysACECF卡启动PetaLinux,先将硬件比特流文件和image.elf制作成ACE文件,再复制到CF卡中,配置CF卡启动PetaLinux。

制作ACE文件,可在EDKShell窗口运行命令:

xmd-tclgenace.tcl(命令工具)

-jprog-boardm1402(所需的开发板)

-hwimplementation/download.bit(生成的比特流文件)

-elfimage.elf(编译Linux核生成的可执行网表文件)

-acesystem.ace(需生成的ACE文件)

成功后,适合于ML-402开发板的ACE文件就生成了。

Linux运行需要根文件系统的支持,启动时必须加载文件系统以支持系统的运行,而image.elf中不包含文件系统。

因此,使用SysACECF卡启动时必须手动加载文件系统。

在编译PetaLinux核时,已经生成了以romfs文件夹为名称的文件系统,所以只需将CF卡分区和格式化,然后挂载此文件系统。

具体步骤如下:

①将CF卡挂载到Linux系统中,运行命令fdisk/dev/sda把CF卡分成3个区。

第1分区存放system.ace文件,第2分区为LinuxSwap交换分区,第3分区存放根文件系统。

②Linux下格式化第3分区为ext2文件系统,运行命令mke2fs/dev/sda3。

在/ete/fstab下输入命令/dev/sda3/mnt/rootfsautodefaults,user,noauto00。

把设备sda3挂在/mnt/rootfs文件下,文件系统为默认的ext2,普通用户,能挂载,不转储,启动时不扫描文件系统。

通过命令mount/mnt/rootfs挂载该目录,这样就可以把根文件系统rootfs拷贝到CF卡的该分区上。

③Windows下格式化第1分区为FAT32文件系统,把system.ace复制到这个分区。

④Linux下格式化第2分区为交换分区,运行命令mkswap/dev/sda2。

一切准备就绪后,插入CF卡,开启电源,就可以从CF卡启动PetaLinux。

结语

本文介绍了一种可用于MicroBlaze处理器的嵌入式Linux操作系统——PetaLinux,并详细讨论了其核配置和启动方案。

通过移植Peta-Linux,本文开发的SOPC可以直接用于实际工程。

该嵌入式操作系统移植快速、简单,由于其基于Linux2.6核,可以保证较高的稳定性。

因此,在SOPC应用日益复杂的背景下具有较高的实用价值。

本文创新点:

实现了PetaLinux在MicroBlaze处理器的移植,并成功实现PetaLinux中自定义硬件设备驱动的添加和SysACECF卡的启动方案。

 

MPMC的使用

双击Bus_Interface标签栏下的DDR_SDRAM,进入编辑MPMC的界面。

如图3.2.1所示:

点击看大图

图3.2.1点击DDR_SDRAM

3.2.1BaseConfiguration主标签栏:

BaseConfiguration包含两个标签栏。

其中,用户可以在PortTypeConfiguration中配置端口类型,MPMC最多可以有8个端口,每个端口有前述的4种接口类型XCL,PLBv46,SDMA,NPI以与不使用INACTIVE。

点击看大图

图3.2.2MPMC端口的4种接口类型以与不使用INACTIVE

分配完毕后可以通过LeftJustify将不工作的端口消除掉。

在这个过程中所有与端口有关的参数和外部总线连接都被移到左边。

图3.2.3点击LeftJustify之前

图3.2.4点击之后

在CommonAddress中可以观察和设置初始地址。

想配置任一个独立的端口地址,需到Advanced标签栏下Address选项选择。

图3.2.5CommonAddress标签栏

3.2.2MemoryInterface主标签栏

MPMC可以与不同厂商的许多不同种存一起工作

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1