NiosII_Boot分析

NiosII_Boot分析

ID:40564201

大小:360.50 KB

页数:19页

时间:2019-08-04

NiosII_Boot分析_第1页
NiosII_Boot分析_第2页
NiosII_Boot分析_第3页
NiosII_Boot分析_第4页
NiosII_Boot分析_第5页
资源描述:

《NiosII_Boot分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1、概述……………………………………………………………………………….22、几种常见的Boot方式12.1从EPCS串行存贮器中Boot22.2从外部CFI并行Flash中Boot23、从EPCS中Boot23.1EPCS控制器的Bootloader分析33.2EPCS控制器43.3EPCS串行存贮器件64、从并行Flash中Boot64.1并行Flash配置控制器64.2直接在Flash中运行程序74.3在RAM中运行程序85、Bootloader解读95.1boot_loader.s解读10

2、5.2boot_loader_cfi_bits.s解读116、Crt0.s解读1419/191、概述NiosII的Boot过程要经历两个过程:(1)FPGA器件本身的配置过程:FPGA器件在外部配置控制器或自身携带的配置控制器的控制下配置FPGA的内部逻辑。如果内部逻辑中使用了NiosII,则配置完成的FPGA中包含有NiosII软核CPU。(2)NiosII本身的引导过程:FPGA配置成功后,NiosII被逻辑中的复位电路复位,从reset地址开始执行代码。NiosII的reset地址可以在S

3、OPCbuilder的“NiosIIMore‘CPU’setting”页表中设置。2、几种常见的Boot方式2.1从EPCS串行存贮器中Boot这种Boot方式,FPGA配置数据和NiosII程序都存放在EPCS器件中。FPGA配置数据放在最前面,程序放在后面,程序可能有多个段,每个段前面都插有一个“程序记录”。一个“程序记录”由2个32位的数据构成,一个是32位的整数,另一个是32位的地址,分别用于表示程序段本身的长度和程序段的运行时地址。这个“程序记录”用于帮助Bootloader把各个程序

4、段搬到程序执行时真正的位置。EPCS是串行存贮器,NiosII不能直接从EPCS中执行程序,它实际上是执行EPCS控制器的片内ROM中的代码(即Bootloader),把EPCS中的程序搬到RAM中执行。2.2 从外部CFI并行Flash中Boot这种Boot方式还可以分为2种情况:(1)程序直接在Flash中运行:这种情况程序不需要另外的Bootloader,NiosII复位时从reset地址(指向Flash内部)开始执行程序,程序必须有启动代码用于搬移.rwdata段(因为.rwdata段是

5、可读写的,不能存放在Flash中),同时如果.rodata段和.exceptions段连接时没有指定在Flash中的话,也会被搬到RAM中,并对.bss段清零,设置栈指针。这些工作都在Crt0.s中完成。(2)程序在RAM中运行:这种情况下需要有一个专门的Bootloader,它把存放在Flash中的各个程序段搬到执行时的真正位置。3、从EPCS中Boot要支持NiosII从EPCS中Boot,首先FPGA器件要支持主动串行配置。Altera的Cyclone、CycloneII和StratixI

6、I系列的FPGA支持AS配置。直到NiosII5.1版本,NiosII从EPCS中Boot在StratixII系列的FPGA上实现上仍有问题。所以这种方式主要用于Cyclone和CycloneII系列的器件。19/19为实现这种Boot方式,用户必须在SOPCBuilder中添加一个EPCS控制器,无须给它分配管腿,QuartusII会自动将它分配到专用管腿上。添加完EPCS控制器后,SOPCBuilder会给它分配一个BaseAddress,这个地址是EPCS控制器本身携带的片上ROM在Nio

7、sII系统中的基地址,里面存有Bootloader代码,用于引导整个过程。所以,必须在SOPCBuilder的“NiosIIMore‘CPU’setting”页表中把reset地址设置为这个基地址,使得NiosII复位后从这个地址开始执行以完成整个引导过程。3.1 EPCS控制器的Bootloader分析EPCS控制器带有一块片内ROM,内有Bootloader代码,NiosII就靠这段代码完成Boot过程。它把EPCS里的NiosII程序映像复制到RAM中,然后跳转到RAM中运行。程序映像是由

8、elf2flash输出的,Bootloader对被搬运的程序映像的位置和结构的解读必须和elf2flash工具一致。FPGA配置数据从EPCS中偏移为0的地址开始存放,紧挨着配置数据的是一个32位的整数,指示程序段的长度,接着是一个32位的地址,指示程序段执行时该程序段的地址,把这个长度和地址一起称为“程序记录”,“程序记录”随后就是程序段映像。一个程序可能有多个程序段,也就可能有多个“程序记录”和程序段映像。Bootloader必须知道FPGA配置数据的长度以读取配置数据后面的内容,不同型号的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。