《FPGA应用程序加载.docx》由会员分享,可在线阅读,更多相关《FPGA应用程序加载.docx(58页珍藏版)》请在课桌文档上搜索。
1、基于XilinxFPGA的嵌入式1.ilIUX设计流程FPGA是通过逻辑组合电路来实现各种功能的器件。由于FPGA内部集成了大量的逻辑资源和可配置的I/O引脚,加上独特的并行处理架构,可以轻松实现同时对多个外部设备的配置和管理,以与内外各种接11数据的传输。现在开发厂商乂在FPGA内部加入了大豉的DSP和BIOCkRAM资源,特别适合图像处理、数字信号处理等运弟密集的应用,因此在这些领域取得了广泛的应用。但是由于FPGA程序编写的敏捷性和功能的多样性,使得它在一个困难工程中对各个程序的运用调度、统筹管理上才很大的局限性,这样就必需引入操作系统进行统一的管理。1.inUX系统则因为其良好的可裁减
2、、可配置等特点在嵌入式领域应用广泛。1.inux操作系统供应了很多系统级的应用,例如用这些资源和强大的系统功能,用户可以快速地开发基于嵌入式环境困难系统。因此,结合FPGA和1.inUX双方优势,可以很好地满意嵌入式系统设计需求,硬体裁衣,去除冗余。本文给出了一种基于XiIinXFPGA的嵌入式1.inUX操作系统解决方案。基于FPGA的嵌入式系统的硬件设计本设计是基于XilinxXC4VFX40系列FPGA,它内部集成了两个PowerPC405处理器,4个10/100/100OM以太网MAC模块,运行频率300MHz时,具有420D-MlPS性能,能解决高速网络数据传输问题,并且能解决通过网
3、络加载操作系统和交叉编译等问题。它内部彳448个可配置I/O口,2592kbBlockRAM,能实现对各种外部设备的并行限制以与较多数据的存储与处理。加栽一个操作系统,一般须要几十兆的内存空间,FPGA内部自带的RAM空间是远远不够的,本设计在板上扩展了两片MICRON公司的256MbDDR内存,作为上电时操作系统的加栽和运行空间。现在主流的嵌入式操作系统,都须要搭建交叉编译环境,把在主机匕编写好的可执行文件下载到目标板匕这就须要实现网络数据的传输.由于XC4VFX40自带了以太网MAC模块,只须要在外面添加个PHY芯片和带隔离器的RJ45接11就能实现这个功能。本设计由于对网络数据实时性要求
4、很高,因此采纳Marvell公司的千兆以太网PHY芯片88E1111-RCJ0它能依据自身配置和主机设计,实现10/100/100OMH适应传输,并且1.inux本身对这个芯片供应了驱动支持,实现无缝链接。操作系统加栽到DDR中能快速有效的运行,但是掉电就会丢失,到外部F1.ASH把操作系统文件从F1.ASH读入到DDR中运行。FPGA设计当然会扩展很多接口出来,利用自身并行处理的优势,限制很多外的设备,本设计也不例外,扩展了8个通用的GPI。,2个PS/2接口,1个USB接口,1个AC97声卡接口,1个HOt1.ink接口,以与4个RS422接口,同时扩展了两个CPCI接口,引出了16位数据
5、地址线和Ethernet限制线,整个系统的硬件框图如图1所示。在进行电路设计时,是以FPGA为核心,向外扩展各种设备,因此特殊留意了FPGA各个引脚的连接。由于DDR和PHY芯片都须要供应+2.5V电压,因此和DDR、PHY芯片连接引脚所在的BANK须要供应+2.5V电压参考,并且不能接以1.VTT1.或1.VCMoS为电压参考的引脚。重要快速的时钟信号必需接到全同时钟引脚上由于FPGA须要通过外部F1.ASH扇动操作系统,须要并行配置,以削减加载时间,配置电路如图2所示。在DDR布线时,数据和地址线须要走等长线,数据线之间不能相差IoMiI,地址线要限制在20Mil以内,时钟也须要走差分等长
6、线,长度应大于地址线,DDR各个信号还须要47C的并行端接,改善信号质量。千兆PHY输出MDI信号也须要在顶层做差分等K,不然在进行100OM数据传输时很可能不稳定。DDR和PHY须要完整的电源回路做参考,电源层划分时也要特殊留意,其他电路做常规处理就可以了。EDK和ISE软件设计首先须要调用XiIinX供应的EDK软件,对各个模块加入必要的IPCoRE,以便操作系统能正常调用这些器件的驱动操作他们。本设计采纳的是版本,PPC方面选用ppc405内核,频率设定在300MHz,同时须要添加中断输入引脚,以便响应以太网、串口等外部中断,其他运用默认设置。DDR限制器采纳EDK供应的MUIti-PO
7、rt-MemOryCOntrOIIer模块,须要设置DDR芯片厂商、大小和数据位数等,特殊指出的是,要设性独立的两条P1.B总线和PPC连接,作为PPC的指令和数据总线CMAC单元须要加入XPS_1.1._TEMAC模块来限制,本设计须要设置PHY类型为GMll(千兆以太网),同时要指定物理地址和收发FIFO大小。F1.ASH单元须要加入xps_mch_emc模块,同时设置F1.ASH类型和读写时间。为了便利调试,还须要加入申口限制台模块,本设计运用的是Uart1.ite模块,设置须要的波特率和校验类型。特殊留意的是,系统还须要时钟管理模块(DCM),供应各个模块须要的不同时钟,还要设置段FP
8、GA内部RAM区域,放置PPC的.boot文件外部这些模块都通过P1.B总线和PPC通信,须要统一编址,一股把DDR内存空间地址安排到OxO起先,整个系统的构建如图3所示。!三3EKD中系统镇城图本设计,除在EDK中搭建r操作系统必需的各种模块后,还须要在ISE中编写各个时序电路程序,因此把EDK中编写好的工程作为一个模块,加入到ISE中,然后统一编译,这样生成r我们须要的完整功能的程序C特殊指出的是,PPC405数据地址采纳的是大端模式,接入到ISE中时,须要把数据颠倒位置,如DATA0:31变为DATA31.0,才能正常读写。1.inux操作系统的加载与烧写加我1.inux操作系统须要利用
9、EDK软件供应的板级升级包(BSP)配置内核。BSP包含了所选定处理器架构的标性文件以与相关硬件的驱勖源文件。首先要在EDKProjectOptionProjectPeripheralRespository选项下设置Xilinx供应的gen-mhs-devtree/edk_lib库路径,然后在软件平台设置中选择Dts模式,编译更新升级包,生成dts配置文件。DtS文件包含了全部模块地址安排,中断以与我动信息,把他加入到1.inux内核中,然后配置内核选项选择对应的处理器架构、所选硬件的驱动模块以与须要的其他内核模块,之后再对完成配置的内核进行编译,生成1.inUX的内核image文件。生成内核
10、image文件之后,还须要生成系统运行所须要的根文件系统。根文件系统中包含了嵌入式1.inUX系统的全部应用程序、库以与系统配置等相关文件。根文件系统中常用的程序和吩咐可利用开源软件Busybox构造。构造完成之后,在Busybox生成的书目和文件的基础上再构造根文件系统的书目树,井添加相关设备文件和配置文件以与系统运行时须要的脚本文件,从而形成最终的根文件系统,ramdisk.imageo把他拷贝至!内核中的./arch/POWerPC/boot书目F,在根书目下运行makezlmagcinitrt,生成最终的系统文件。须要指出的是,在编译IinUX内核时,须要设置好交叉编译环境:首先安装E
11、1.DK编译软件,然后在编辑自己的帐户书目下的bashrc(例如:homeppc)中加入卜面内容:CROSS_COMPI1.E=ppc_4xx$PATH=$PATH:/home/ppc/PowerPc/E1.DK/usr/bin:/home/ppc/PowerPC/E1.DK/binexportCROSS,COMPI1.EPATH保存,然后执行$SOUrCe.bashrc把生成的Zlmage.initrd文件通过EDK软件下的XMD调试窗口,运用dowzlmage.initrd吩咐卜载到DDR中,然后运行run吩咐,就正常启动1.inUX了。程序卜载到DDR中,掉电后,数据就丢失了,不能保存和
12、连续运用,因此要把操作系统烧写到F1.ASH,上电后让它能自动运行,掉电后也不会灭失EDK供应了特地的F1.ASH烧写工具ProgramFlashMemory,首先要把ZImage.initrd文件转换为F1.ASH能识别的.SREC文件,须要在EDKShell运行卜面吩咐:一次烧写F1.ASH时须要把ProgramFlashMemory中CreateFkBootlooderApplication勾上,让系统H动生成Btlooder程序操作系统烧写到Flash中后,须要FPGA在上电后自动从F1.ASH读取操作系,运用EDK下的UpdataBitstream吩咐统数据,然后自动运行,就能实现。
13、最终把生成的mcs文件烧写到FPGAPROM中,上电后,系统就能自动运行了。设计结果与分析在1.inUX系统正常加载后,我们设计一个程序,它通过以太网,从上位机获得数据,存入FPGA内部Bl。CkRam中,再在ISE中编写程序,把获得的数据取出,产生频率可变的波形发生器,并回传发送的参数给上位机。通过试验证明,在FPGA加入操作系统后,能轻松实现网络数据的收发,并通过FPGA自号的逻辑,产生我们须要的各种限制信号,做到了系统的统一调度和各个功能的并行处理,发挥了操作系统和FPGA各自的优势C但是也发觉,FPGA下操作系统运行的频率不高,最多600MHz,中断响应间厢较长,大约3ms左右,系统1
14、.电启动时间较长,大约40s左左,这些都须要在今后设计中进一步完善和提升。结语本文介绍了基于FPGA的嵌入式1.inux设计流程,从硬件设计到1.inux系统加载,再到应用程序运行整个过程,从中可以看出,该设计既发挥rFPGA并行处理和多时序限制上的优势,也发挥了嵌入式1.inux系统调度和可裁剪性方面的优势,还提高r这个系统的稳定行,也削减rFPGA与外部高速总线连接的资源开销,二者的结合,既满意了嵌入式应用按需定制、肽体裁衣的缶求,乂能开发出稳定而功能强大的嵌入式系统,在现在嵌入式系统开发中彳很好的运用。MicroBlaze处理卷的Peta1.inux操作系第移植引言随着FPGA(FiCk
15、lPrograromableGateArray,现场可编程门阵列)技术的快速发展,SOPCfSystamOnaPrograromableChip,可编程片上系统)作为一种特殊的嵌入式微处理器系统,已渐渐成为一个新兴的技术方向。SoPC融合了SOe和FPGA各自的优点,并具备软硬件在系统可编程、可裁减、可扩充、可升级的功能。其核心是在FPGA上实现的嵌入式微处理器核,而如何针对特定的微处理器选择合适的嵌入式操作系统是SoPC开发的难点之一。本文针对XilinX公司的MiCrOBIaZe软核,介绍了Peta1.inux嵌入式操作系统与其移植方法,探讨了Peta1.inux的相关配置和启动方案。1基
16、于MicroBlaze处理器的系统设计1.1MicroBlaze处理器简介MicroBlaze软核处理器是一种针对XilinxFPGA器件而优化的功能强大的微处理器。它内部采纳RISC架构的32位指令和数据总线,支持CorcConnect片上总线的标准外设计集合,具有兼容性和重复利用件,且可依据性能需求和逻辑区域成本随意裁减,极大地扩展了应用范围,其最精简的核只须要将近400个SlicecMicroBlaze的CoreConnect总线、它能够将FPGA内各种不同的IP核连接到一起构成一个完整的系统。CoreConnect总线是一个总线标准的集合,它包括P1.B总线(PrOCeSSor1.OC
17、aIBUS,处理器本地总线),1.MB总线(1.OCalMemoryBus,高速本地存储器总线),FS1.(FastSimplex1.ink,快速单连接)总线,以与XC1.(XiIinXCaChe1.ink)总线等。1.2系统结构和外部设备概述本系统主要是在VirteX-4开发板上构建一个以MiCroBIaZe处理器为中心的嵌入式信号处理系统,在FPGA内部实现系统的总线架构、数据存储、地址译码、外设接口等系统部件和功能C各功能部件在FPGA内部都以IP核的形式构建并连接,整个系统的结构框图如图1所示。其中,SySACE用于存放文件系统和应用程序配置文件,INTC用来实现中断限制;GPlO和U
18、ART16550用F系统调试,自定义IP核DDC用来实现数字接收机下变频功能,这些外设通过P1.B总线与MicroBlaze处理器和DDR相连;用于快速傅里叶变换的自定义IP核FFT通过FS1.总线与Micr-OBlaze内部通用寄存器干脆相连,实现了数据的快速传输;DDR通过XC1.总线与MiCroBIaZe处理器相连,实现了MicroBlaze处理器对片外存储器的高速访问1. 3嵌入式操作系统的选择选用Pcta1.inux嵌入式操作系统。它是Pcta1.ogix公司特地针对FPGA的片上系统设计的嵌入式1.inux开发套件,在满意应用工程的逻辑编程实力和对嵌入式1.inux要求的同时,可极
19、大地缩短产拈开发周期。Peta1.inUX作为特地针对于XiIinXFPGA的嵌入式1.inUX解决方案,不但供应了特地的BSP生成器,而且供应了众多的参考设计,可以帮助设计者快速驾驭Peta1.inux的配置方法。Pela1.inux内核正在不断的完善之中,且不断地加入基于XilinXFPGA嵌入式系统IP核的设备驱动,比如XiIinXUSB、SySACE、FS1.总线设备驱动、10/100/100OM三态以太网MAC等。这些设备共动极大地减轻了嵌入式系统开发者的工作电,缩短了产品开发的周期。2Peta1.inux系统移植在SoPe硬件系统构建完成后,就要针对此结构配置操作系统内核,下面介绍
20、具体步骤。2. 1建立交叉编译环境嵌入式系统开发一般采纳交叉编译的方法,即在宿主机上对内核和应用程序进行编译,生成目标机处理器可执行的二进制位流文件,将此文件卜.载到目标机运行。Peta1.inux针对MicroBlaze处理器建立了交叉编译器,运行SoUrCe./settings.Sh脚本,系统会自动建立交叉环境。2. 2建立硬件平台Peta1.inux为每个应用工程建立一个文件夹,里面保存该工程的硬件配置。在移植Peta1.inUX时,只需选择相应的硬件平台,内核就会读取该工程文件夹下的配置文件。运用PCta1.inUX-new-platform吩咐建立硬件平台,假如运用MMU(虚拟内存管
21、理单元),则在此吩咐后添加-m选项。硬件平台建立起来后,运行makemenuconfig吩咐,在VendorZProductSeletion选项中,选择该硬件平台。另外,还需将在EDK下生成的配置文件转换成1.inux操作系统可以识别的格式。在工程文件夹下运行Peta1.inux-copy-autoconfig吩咐,自动完成格式转换,并拷贝配置文件到已选择的工程文件夹下。2. 3添加自定义设备骚动本系统自定义rIP核,因此必需开发驱动程序并将其添加到Peta1.inux配置中。添加自定义设备驱动主要步骤如下:在平台配置书目下Makefile文件中添加语句platobj-$(CONFIG_PET
22、A1.OGIX_DDC)+=ddc.o和$(obj)/ddc.o:.Config使设备初始化函数ddc.C与内核配置相关联;在驱动程序所在书目下的Makefile文件中添加Obj-$(CONFIG_PETA1.oGIX_DDC)+=ddc_adapter.o使设备驱动程序ddc_adapter.C与内核配置相关联;修改设备驱动程序所在书目Z的KConfig文件,使配置内核时可以选择该设备驱动,并添加以下语句:通过以上文件的修改,就可以在配置Peta1.inux内核时选择自定义的设备驱动。2. 4配置Peta1.inUX内核由于1.inux内核的可裁减性,能够便利地对内核进行修改、裁减、编译,最
23、终移植到一个嵌入式系统中。运行图形编辑工具makemenuc-onfig吩咐,对内核和系统环境进行配置.在内核配置的设备驱动选项中,确定要选择与系统硬件配置一样的硬件设备驱动,否则内核编译时就会出错,针对本系统的硬件配置,主要配置以卜几项驱动:Blockdevices)块设备C选择XilinxSyStemACESUPPortoMiscdevice混杂设备C选择FS1.FIFOdriver,然后进入FS1.ChannelSelection,选择FIFOonFS1.O,并选择自添加设备驱勖Pet-a1.xgixDDClOlDriveroNetworkdeviceSUPPorU网络设备。选择Ethe
24、met(100OMbit)子菜单中的XiIinX10Z100Z10001.1.TEMACsupport。Characterdevices字符设备。选择Serialdrivers子菜单中的8250Z16550andcompatibleserialsupport和Consoleon8250Z16550andcompatibleserialPortO文件系统选项中,默认选择rext2romfs和CramfS文件系统,其他文件系统可以依据须要自行选择。本系统须要挂载DOS文件系统的CF卡,因此进行以下配置:(Ddoszftznta选择msdosfss11pportNative1.anguageSupp
25、orto选择COdePage437(UnitedStates,Canada)o内核配置中的其他配置可以依据目标系统的不同敏捷配置,配置完成后保存退出,自动进入系统环境配置菜单。系统环境配置是对Peta-1.inUX的属性、附咐进行配置,主要有以下几个选项:SystemSettings系统设置。配置系统的网络地址、默认用户名、默认登陆密码和所用根文件系统等内容。CoreAPPliCations内核应用。主要配置内核的常用特性CNetworkAPPliCations网络应用。配置网络应用时的相关吩咐。MiscellaneousAPPliCatiOns混杂应用.配置系统内核中的吩咐。旧usyBox0
26、配置系统内核中的吩咐。PCta1.irmX已经设置好了编译规则,因此配置完成后,依次执行吩咐makedep、makeclean、makeall,建立文件依t关系,清除旧的文件,编译内核,生成内核image。3. Peta1.inux启动方案经过编译的Peta1.inux内核image文件主要有image.bin、image.elf、image,ub11依据选择image文件的不同,Peta1.inux有4种启动方案:XMD下载启动、TFTP网络下我启动、Flash启动和SysACECF卡启动。其中,XMD和TFTP网络载启动方案,在每次系统上电后都必需重新下栽,适用于系统调试;FIaSh启动方
27、案在系统上电后自动从FIaSh中读取配置文件,但Flash烧写速度较慢,更改系统配置较为不便。因此,本系统选用SysACECF卡启动方案。运用SysACECF卡启动Peta1.inux,先将硬件比特流文件和image.elf制作成ACE文件,再复制到CF卡中,配置CF卡启动Peta1.inux0制作ACE文件,可在EDKShell窗口运行吩咐:xmd-tclgenace.tcl(吩咐工具)-jprog-boardml402(所需的开发板)- hwimplementationZdownload.bit(生成的比特流文件)- elfimage.cH(编译1.inux内核生成的可执行网表文件)- a
28、cesystem,ace(需生成的ACE文件)胜利后,适合于M1.-402开发板的ACE文件就生成了。1.inUX运行须要根文件系统的支持,启动时必需加载文件系统以支持系统的运行,而image.elf中不包含文件系统。因此,运用SySACECF卡启动时必需手动加载文件系统。在编译Peta1.inux内核时,已经生成了以romfs文件夹为名称的文件系统,所以只需将CF卡分区和格式化,然后挂载此文件系统。具体步骤如下:将CF卡挂载到1.inux系统中,运行吩咐fdiskdevSda把CF卡分成3个区。第1分区存放system.ace文件,第2分区为1.inuxSwap交换分区,第3分区存放根文件系
29、统。1.inUX下格式化第3分区为ext2文件系统,运行吩咐mke2fsdevsda311在etefstab下输入吩咐devsda3mntrootfsautodefaults,user,noauto00。把设备sda3挂在mntrootfs文件下,文件系统为默认的ext2,一般用户,能挂栽,不转储,启动时不扫描文件系统。通过吩咐mount/mnt/rootfs挂载该书目,这样就可以把根文件系统rootfs拷贝到CF卡的该分区上。WindoWS卜.格式化第1分区为FAT32文件系统,把system.ace更制到这个分区。1.inUX下格式化第2分区为交换分区,运行吩咐mkssda2o一切打算就绪
30、后,插入CF卡,开启电源,就可以从CF卡启动Peta1.inux结语本文介绍了一种可用于MicroBlaze处理器的嵌入式1.inux操作系统PCta1.irmX,并具体探讨了其内核配置和启动方案。通过移植Pcta-1.inux,本文开发的SOPC可以干脆用于实际工程。该嵌入式操作系统移植快速、简洁,由于其基于1.inux2.6内核,可以保证较高的稳定性。因此,在SoPC应用日益困难的背景卜具有较高的好用价值。本文创新点:实现了PCta1.inUX在MiCroBIaZC处理器的移植,并胜利实现Peta1.inux中自定义硬件设备驱动的添加和SysACECF卡的启动方案。MPMC的运用双击Bus
31、-Interface标签栏卜的DDR.SDRAM,进入编辑MPMC的界面。如图所示:三三iE!x:H三三1一_点击一大图图3.2.1点击DDR_SDRAM3.2.1 BaseConfiguration主栏:BaseConfiguration包含两个标签栏。其中,用户可以在PortTypeConfigUratiOn中配置端11类型,MPMC最多可以有8个端口,每个端口才前述的4种接口类型XC1.,P1.Bv46,SDMA,NPl以与不运用INACTIVE。点击盾大图图3.2.2MPMC端口的4种接口类型以与不运用INACTlVE安排完毕后可以通过1.eftJustify将不工作的端11消退掉。在
32、这个过程中全部与端口有关的参数和外部总线连接都被移到左边。图3.2.3点击1.eftJustify之前图3.2.4点击之后在CommonAddress中可以视察和设置初始地址。想配置任个独立的端口地址,需到Advanced标签栏下Address选项选择。!W4vIt4M4M图3.2.5CommonAddress标签栏3.2.2 MemoryInterface主标签栏MPMC可以与不同厂商的很多不同种内存一起工作。这个标签栏让你在MemoryPartSelector标签下选择与MPMC连接的内存。MemoryPartSelector它包含Type选项,Memorymanufacturer选项,M
33、emorystyle选项,MCmOrydCnSity选项,MemOryWidth选项和PartNo.选项。图326MemoryPartSelector过滤的结果在PartNo.卜拉列表中出现。假如内置的内存数据库正确部分不能运用时,MemoryPartSelector/PartNO.下拉列表也会包含一个用户选项。在你选择了CUSTOM选项之后,全部内存参数都可修改,你能够输入你想要的参数。在你选择了内存部分之后,参数将被自动载入到SelectedMemoryInfo区和Memo11DIMMSettings标签中去MexnOry/DIMMSettings在这个设置区内,选择下拉菜单,你可以调整D
34、IMMS的数目,内存数据宽度,内存时钟周期,ODT设置和部分其他信息C图3.2.7MemoryInterface标签MonoxyPartSettingsTabMemoryPartSettings标签栏有两个区间:PartSettings和MemoryTimingSettings0PartSettings包含DataDepth,DataWidth,Bank,Row,和CohImnBits。MemoryTimingSettings包含内存部分选项C图3.2.8MemoryPartSettings标签3.2.3 PortConfiguration主标筌栏在POrtConfigUratiOn标签栏可以
35、设置每个独立端口的参数。端口0-3和端口4-7可以在标签栏中显示。端口标签栏分成如图所示的表明端口号的四个象限。只有与现有端口类型相关的参数(在BaseConfiguration主标签栏中选择)可以查看并修改。图3.2.9PortConfiguration3.2.4 Advanced主标签栏Advanced的标签栏供应了更多高级MPMC的用户资源。DataPath在DataPath这个标签栏中,你既能够配置常规传递途径的设置,也能单独设置每个端口GeneralPipelineSettings允许你设置常规传递途径的参数,而Port-specificSettings允许你依据如下方式为独立的端口
36、变更传递途径的设置:NPIWidth:NPl的宽度。能读缓存)执行HFOo WriteFIFOCOnfig:用BRAM,SR1.1或者Rd-Only(只能读,不能写缓存)执行FIFO, ReadMemoryPipeline:允许传递途径读内存。 ReadPortPiPeHne:允许传递途径读潜在端口。 WriteMemoryPipeline:允许传递途径:写内存。.WritePortPipeline:允许传递途径写端口。 AddressAckPipeline:允许传递途径确认抵制要求。图3.2.10DataPathPort-specificSettings中ReadFIFOConfig有三个选
37、项:BRM,SR1.,Wr-Only0图3.2.11ReadFIFOConfig同样,WriteFIFOConfig有三个选项:BRAM,SR1.,Rd-Onlyo图3.2.12WriteFIFOConfigArbitrationMPMC最多有8个端口,它们能同时访问内存。因此,在任何必要时候都能有一个仲裁机制来断定哪个端口有优先权,就显得特别重要了。在Arbitration标签栏中,你可以选择用哪种仲裁机制。从下拉菜单中选取一种仲裁机制:RoundRobin:实行循环仲裁模式。XMU”一)VMM(MMraUMMWMMN11MratMraucm4W1*MMIMM11UMTVUW*WItMM图3
38、.2.13RoundRobitFixed:实行确定的优先级模式。Custom:在这种模式中,可以定制时间档的数值和每个时间档的仲裁优先级,在每个时间档中仲裁优先级被编译成描述端口制优先级下降的字符串。图3.2.14Custom例如,字符串“01234567”给端口0最高的优先级,然后从端口1到7优先级下降。MiSC这个从标签栏包含了须要你留意,但不在从前类别内的参数。图3.2.15Misc上面也许地介绍rMPMC的结构和功能,具体如何在设计中加入运用NPI接口将在第七章中给出个实际的例子。BtloaderBt1.oader的基本*除板级支持包(BSP)BSP是板级支持包(BoardSUPPor
39、tPaCkage)的缩写,是通常用在嵌入行业中的一个术语,用来代表在一个特殊硬件平台上快速构建一个嵌入操作系统所需的原始资料或者二进制软件包。OBSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,包括WindowsCE、1.inUx、VXWOrkS等。SoC/CPU厂商应向其芯片的用户供应一个基本的BSP包,以支持主板厂商或整机制造厂商在此基础上定制和开发各种商用终端产品。在嵌入式系统学习过程中设计到了Bootloader,下面讲解并描述了Bootloader的基本作用,在后续的文点中我将对如何编写自己的Bootloader进行介绍。1. BOOtIOader的基本概念:简
40、单地说,bootloader就是在操作系统内核运行前运行地一段小程序。通过这段小程序,可以对硬件没备,如CPU、SDRAM、Flash,串口等进行初始化,也可以下载文件到系统板、对FlaSh进行擦除和编程,真正起到引导和加载内核镜像的作用,但是殖着嵌入式系统的发展,bootloader已经渐渐在基本功能的基础上,进行了扩展,bootloader可以更多地增加对具体系统的板级支持,即增加一些硬件模块功能匕的运用克持,以便利开发人员进行开发和调试。从这个层面上看,功能扩展后bootloader可以虚拟地看成是一个微小的系统级的代码包。bootloader是依微于硬件而实现的,特殊电在嵌入式系统中。
41、不同的体系结构需求的bootloader是不同的;除了体系结构,bootloader还依竟于具体的嵌入式板级设备的配置。也就是说,对于两块不同的嵌入式板而言,即使它们基于相同的CPU构建,运行在其中一块电路板上的bootloader,未必能够运行在另一块电路开发板上。BoOt1.oader最为系统且位或上电后忏先运行的代码,般应写在起始物理地址OxO起先Bootloader的启动过程可以是单阶段的,也可以是多阶段的。通常多阶段的bootloader能供应更为困难的功能,以与更好的可移植性。从固态存储设备上启动的bootloader大多数是二阶段的启动过程,也即启动过程可以分为stage1和st
42、age2两部分。2. ARMBootloader的一般作用对于一个ARM系统来说,本质上,bootloader作为引导与加载内核镜像的“工具”,在实现上,必需供应以下几个功能,更准确地说,必需做到以下儿点:(1)初始化RAM(必需):bootloader必需能够初始化RAM,因为将来系统要通过它保存一些Volatile数据,但具体地实现要侬泉与具体的CPU以与硬件系统C(2)初始化串口(可选,举荐):bootlOader应当要初始化以与使能至少一个串口,通过它与限制自联系进行一些debug的工作;甚至与PC通信。(3n启动内核镜像(必需):依据内核镜像保存的存储介质不同,可以有两种启动方式:F
43、A1.SH启动以与RAM启动;但是无论是哪种启动方式,下面的系统状态必需得到满意:1 CPU寄存器的设置:RO=O;Rl=机器类型;R2=启动参数标记列表在RAM中的起始地址;这三个寄存器的设置是在最终启动内核时通过启动参数来传递完成的。1CPU模式:关闭中断;属于SVC模式;Bootloader中没有必要支持中断的实现,这属于内核机制以与设备驱动管理的管理范畴;SVC模式是系统的一种爱护模式,这样就可以进行一些只能在SVC模式下的操作,例如些特定寄存器访问操作。1CaChe和MMU的设置:MMU必褥关闭;数据CaChe必需关闭;指令cache可以关闭也可以开启;Bootloader中全部对地
44、址的操作都是运用物理地址,是实在的实地址,不存在虚拟地址,因此MMU必需关闭。BOotIOadCr主要是装载内核镜像,镜像数据必需真实写回SDRAM中,所以数据CaChe必需关闭;而对于指令CaCha不存在强制性的规定,但是一般状况下,举荐关闭指令cache。Bootloader启动内核镜像的方法是通过跳转语句F脆跳转至内核镜像的第句指令语句。Bootloader存在的必要性Bootloader的功能确定了在引导1.inux系统时,必需运用bootloader,除非你对IinUX内核进行了修改。Bootloader有两个主婴功能:1 .在发布模式,自动引导IinUX系统,为系统初始化各种参数。
45、2 .在调试模式,要能够便利的下载内核,引导内核。1.inux系统确定要bootloader支持吗?答:是的。通用的1.inUX内核,启动时须要很多参数,这些参数必筋通过bootloader传递.而且内核一般是压缩存放到外存上的,从外存到内存的拷贝也是由bootloader完成。Bootloader为什么不和kernel放到一起呢?答:不行以这样做。从bootloader的其次个功能就知道,bootloader是不能和内核放到一起,当然,在发布模式时,是可以集成到一起的,通常没必要。从哪里可以得到bootloader?答:目前通用的bootloader很多,不论是嵌入式还是桌面系统,比如lil
46、o,grub,blob等C桌面用的bootloader我们就不探讨了,重点说一下嵌入式领域用的bootloader。采纳通用的bootloader功能强大,开发简洁,而且由专人维护升级,不过多是针对特定的CPU或者特定开发板的。假如是学习,举荐自己开发bootloader。如何编写自己的bootloader?答:编写一个bootloader只要能够完成前面提到的两个功能就可以了。分别描述一下这两个功能的实现:1 .该功能比较简洁,就是从F1.ASH中拷贝数据到RAM。假如内核的存放不是基于文件系统的,干脆采纳汇编就可以完成块搀贝。然而假如内核存放在文件系统之上,比如内核存放到了基于ext2文件
47、系统的CF卡匕首先我们的bootloader要能够访问CF卡,然后要能够识别文件系统,只有这样才能正确找到内核文件并拷贝到内存2 .该功能一般通过串口实现。对于ARM来说,驱动串口比较简洁,干脆从主机的串口接收内核数据存放到RAM中,就可以后动内核了.假如须要发布,还要实现把内核从RAM烧写到外存的实力。为了提高速度,充分挖掘开发板和CPU的潜力,出现了很多用网口和USB接口卜载内核的bootloader。运用网口,bootloader必需供应网卡骤:动和TCP/IP协议的支持。运用USB接口,须要提高大容啦存储类驱动。为r拓展思路,你也可以运用红外,存储卡接口进行数据下我。运用红外接口,和串口基本样,无非就是没有了连线。运用存储卡,通常须要文件系统的支持。比如,我们运用SD卡存放内核,在主机交叉编译好内核后,把内核存放到SD卡上。然后将XD卡插到目标板的插槽中,bootloader必需有实力把SD卡上的内核拷贝的RAM中,过程参考功能1的实现。Background-几乎全部的嵌入式系统都须要用外部存储器- 最
链接地址:https://www.desk33.com/p-1505004.html