FPGA应用程序加载Word下载.docx
- 文档编号:20564376
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:35
- 大小:382.77KB
FPGA应用程序加载Word下载.docx
《FPGA应用程序加载Word下载.docx》由会员分享,可在线阅读,更多相关《FPGA应用程序加载Word下载.docx(35页珍藏版)》请在冰豆网上搜索。
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可以与不同厂商的许多不同种存一起工作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 应用程序 加载