您的位置 首页 技术

根据Xilinx FPGA的嵌入式Linux规划流程

结合FPGA和Linux双方优势,可以很好地满足嵌入式系统设计需求,量体裁衣,去除冗余。本文给出了一种基于Xilinx FPGA的嵌入式Linux操作系统解决方案。

FPGA是经过逻辑组合电路来完结各种功用的器材。因为FPGA内部集成了许多的逻辑资源和可装备的I/O引脚,加上共同的并行处理架构,能够轻松完结一起对多个外部设备的装备和办理,以及表里各种接口数据的传输。现在开发厂商又在FPGA 内部参加了许多的DSP和Block RAM资源,十分合适图画处理、数字信号处理等运算密布的运用,因而在这些范畴取得了广泛的运用。可是因为FPGA 程序编写的灵活性和功用的多样性,使得它在一个杂乱工程中对各个程序的运用调度、统筹办理上有很大的局限性,这样就有必要引进操作体系进行一致的办理。Linux 体系则因为其杰出的可削减、可装备等特点在嵌入式范畴运用广泛。 Linux操作体系供给了许多体系级的运用,例如网络协议的完结、进程调度、内存办理等,一起Linux 是一个老练的开源操作体系,有丰厚的运用资源,运用这些资源和强壮的体系功用,用户能够快速地开发依据嵌入式环境杂乱体系。因而,结合FPGA和Linux两边优势,能够很好地满意嵌入式体系规划需求,因地制宜,去除冗余。本文给出了一种依据Xilinx FPGA的嵌入式Linux操作体系处理方案。

依据FPGA的嵌入式体系的硬件规划

本规划是依据Xilinx XC4VFX40系列 FPGA,它内部集成了两个PowerPC405处理器, 4个10/100/1000M以太网MAC模块,运转频率300MHz时,具有420D-MIPS功用,能处理高速网络数据传输问题,而且能处理经过网络加载操作体系和穿插编译等问题。它内部有448个可装备I/O口,2592kb BlockRAM,能完结对各种外部设备的并行操控以及较多数据的存储与处理。加载一个操作体系,一般需求几十兆的内存空间,FPGA内部自带的RAM空间是远远不够的,本规划在板上扩展了两片MICRON公司的256Mb DDR内存,作为上电时操作体系的加载和运转空间。现在干流的嵌入式操作体系,都需求建立穿插编译环境,把在主机上编写好的可履行文件下载到方针板上,这就需求完结网络数据的传输。因为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-Memory Controller模块,需求设置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 包含了所选定处理器架构的特点文件以及相关硬件的驱动源文件。首要要在EDK Project Option 中Project Peripheral Respository选项下设置Xilinx供给的 gen-mhs-devtree/edk_lib 库途径,然后在软件渠道设置中挑选Dts形式,编译更新升级包,生成.dts装备文件。Dts文件包含了一切模块地址分配,中止以及驱动信息,把他参加到Linux 内核中,然后装备内核选项挑选对应的处理器架构、所选硬件的驱动模块以及需求的其他内核模块,之后再对完结装备的内核进行编译,生成Linux 的内核image 文件。生成内核image 文件之后,还需求生成体系运转所需求的根文件体系。根文件体系中包含了嵌入式Linux体系的一切运用程序、库以及体系装备等相关文件。根文件体系中常用的程序和指令可运用开源软件Busybox结构。结构完结之后,在Busybox 生成的目录和文件的基础上再结构根文件体系的目录树,并增加相关设备文件和装备文件以及体系运转时需求的脚本文件, 然后构成终究的根文件体系,ramdisk.image。把他拷贝到内核中的../arch/powerpc/boot目录下,在linux2.6.x根目录下运转make zlmage. initrt,生成终究的体系文件。需求指出的是,在编译linux内核时,需求设置好穿插编译环境:首要装置ELDK编译软件,然后在修改自己的帐户目录下的 .bashrc (例如:/home/ppc/) 中参加下面内容:

CROSS_COMPILE=ppc_4xx
$PATH=$PATH:/home/ ppc /PowerPc/ELDK/usr/bin:/home/ ppc /PowerPc/ELDK/binexport CROSS_COMPILE PATH

保存,然后履行$source .bashrc

把生成的zlmage.initrd 文件经过 EDK 软件下的XMD调试窗口,运用dow zlmage.initrd指令下载到DDR中,然后运转 run指令,就正常发动Linux了。

程序下载到 DDR中,掉电后,数据就丢掉了,不能保存和接连运用,因而要把操作体系烧写到FLASH,上电后让它能主动运转,掉电后也不会丢掉。EDK供给了专门的FLASH 烧写东西Program Flash Memory,首要要把zlmage.initrd文件转换为FLASH能辨认的.SREC文件,需求在EDK Shell下运转下面指令:

$powerpc-eabi-objcopy –I elf32-powerpc –O srec zImage.initrd.srec

第一次烧写FLASH时需求把Program Flash Memory中Create Flash Bootlooder Application 勾上,让体系主动生成Bootlooder程序。操作体系烧写到Flash中后,需求FPGA在上电后主动从FLASH读取操作体系数据,然后主动运转,这几需求把刚刚生成的bootloadr_0工程中的.elf参加到.bit生成新的装备文件,运用EDK下的Updata Bitstream指令就能完结。最终把生成的.mcs文件烧写到FPGA PROM中,上电后,体系就能主动运转了。

规划结果与剖析

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

经过试验证明,在FPGA参加操作体系后,能轻松完结网络数据的收发,并经过FPGA本身的逻辑,发生咱们需求的各种操控信号,做到了体系的一致调度和各个功用的并行处理,发挥了操作体系和FPGA各自的优势。可是也发现,FPGA下操作体系运转的频率不高,最多600MHz,中止呼应距离较长,大约3ms左右,体系上电发动时刻较长,大约40s左右,这些都需求在往后规划中进一步完善和提高。

结语

本文介绍了依据FPGA的嵌入式Linux规划流程,从硬件规划到Linux体系加载,再到运用程序运转整个进程,从中能够看出,该规划既发挥了FPGA并行处理和多时序操控上的优势,也发挥了嵌入式Linux体系调度和可裁剪性方面的优势,还提高了这个体系的安稳行,也削减了FPGA 与外部高速总线衔接的资源开支,二者的结合, 既满意了嵌入式运用按需定制、因地制宜的需求, 又能开宣布安稳而功用强壮的嵌入式体系,在现在嵌入式体系开发中有很好的运用。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/195512.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部