聊一聊如何实现Xilinx Microblaze Bootloader

一般而言,Xilinx Microblaze会被用来在系统中做一些控制类和简单接口的辅助性工作,比如运行IIC、SPI、UART之类的低速接口驱动,对FPGA逻辑功能模块初始化配置及做些辅助计算等等。类程序的代码量普遍不大,常常在十几KB到几时KB之间,因此对存储的需求通常也不是太高,使用FPGA内部RAM资源便已经够用。那么,当Microblaze需要运行文件系统、USBHCD、网络协议栈甚至是操作系统时,代码量可能会高达几MB甚至是几十MB的规模,此时程序就必须在外部存储器运行了。本文以将外部QSPIFlash中存储的镜像加载到外部DDR为例,讲一讲Microblaze
Bootloader的实现方法。

1.Microblaze Bootloader

Microblaze的工作原理和所有的通用处理器一样,这里不用赘述。我们一般情况下会将.elf代码、FPGA bit文件和.imm RAM初始化文件合成一个download.bit文件烧写到外部Flash中去。这里.elf的可执行代码就变成了FPGA Block RAM的初始化值,复位释放后即可执行。想必聊到这里大家就已经明白Microblaze Bootloader该如何实现了:在有限空间的BlockRAM里面执行一小段代码,负责初始化必要的外设并将Flash里面的其他代码搬运到外部存储器中执行。这种原理和所有的通用处理器是类似的,这里的Block
RAM就相当于是ARM之类通用处理器的片上RAM(OCM)资源,执行的这一小段代码就相当于第一季BootLoader(FSBL)。

以下所有的示例都是在Xilinx XC7K325 FPGA上进行验证。开发环境为Vivado2015.2。硬件平台包含一片256Mbit(32M字节)的Spansion QSPI Flash,一片海力士16bit位宽的容量为512MB的DDR3。

2.搭建FPGA硬件

要验证这个系统,必须要有①Microblaze②DDR Mig③Cache RAM④中断控制器⑤QSPI Flash IP核⑥总线相关的AXIInterconnect⑦串口输出调试信息等协同工作才行(工程顶层结构见附件)。

这里需要特别说明的是QSPI Flash的配置,如图1所示.AXI接口的XIP模式和Performace模式采用AXI Full接口,可以获得更高的带宽和方便使用DMA,这里使用最基本的AXI Lite接口。

图1 QSPI IP核参数配置

需要注意的地方有两点:

①   ext_spi_clk:在QSPI模式下这个时钟的两分频就是给SPI Flash的访问时钟,因此这个时钟要根据QSPI Flash的参数设置到合理值;

②   STARTUPE2原语:如果外部的Flash挂在FPGA的专用配置管脚上就要使能该原语,使用普通IO则不能使能。

3. 创建Microblaze Bootloader

以下介绍如何在SDK中创建Microblaze Bootloader的方法。

第一步:创建基于SPI Flash的serc SPI Bootloader,如下图2所示。

图2 创建serc spi bootloader

第二步:修改xilisf库,serial_flash_family=5选择Spansion 系列QSPI Flash, serial_flash_interface=1选择AXI 接口,如图3所示。

图3 修改xilisf库参数

第三步:修改存储应用程序的Flash偏移量,如图4所示。

图4 修改存储应用程序的Flash偏移量

当前示例选用的FPGA bit文件约为10.5MB,因此偏移量选择12MB,需要根据实际FPGA容量进行调整。

第四步:确认serc spi bootloader链接脚本均在内部RAM空间,应用app工程的链接脚本都指向外部DDR。

到此为止serc spi bootloader工程创建完毕。

4. 烧写Flash

烧写Flash分成两个部分,一个是bit文件,一个是应用程序的serc文件。

4.1 烧写bit文件

烧写bit文件,第一步需要将fpga bit和serc spi bootloader的elf文件先合成,如图5所示,点击编程,默认合成的文件命名为download.bit。如果擅长使用命令行,也可以用updatemem命令手动生成。

图5 编程生成bit文件

第二步是烧写生成的download.bit文件到flash,这里不再多说,注意flash的偏移地址为0x00即可。

4.2 烧写应用程序serc

实际上应用程序烧进flash的是serc文件,该文件可以烧写到特殊的偏移位置。如图6所示,如果需要用其它工具烧写,也可使用命令mb-objcopy手动转换.elf文件为serc文件。

图6 烧写应用程序到特定偏移地址

5. 总结

Microblaze  Bootloader在Microblaze运行大中型软件的系统中是必须的,希望本文能起到抛砖引玉的作用。如有任何问题或心得都可加入QQ讨论群300148644交流。

转载请注明作者和出处。

时间: 2024-11-08 09:35:52

聊一聊如何实现Xilinx Microblaze Bootloader的相关文章

在嵌入式设计中使用MicroBlaze(Vivado版本)(转)

原文Xilinx官方文档<ug898-vivado-embedded-design>第三章 一.MicroBlaze处理器设计介绍(略) 二.创建带有MicroBlaze处理器的IP设计 使用Vivado进行MicroBlaze设计和使用ISE有很大的不同.(译者加:所以你要仔细看下面的说明) Vivado IDE使用IP综合设计工具进行嵌入式开发.IP综合工具是一个基于图像界面的工具,能够帮助你构建复杂的IP子系统. Vivado IDE的IP目录中提供了很多现成的IP核,提供使用.你也可以

我如何确定一个机器的字节顺序是大端还是小端?

通常的技巧是使用一个指针: int x = 1; if(*(char *)&x == 1) printf("little-endian\n"); else printf("big-endian\n"); 或者一个union: union { int i; char c[sizeof(int)]; } x; x.i = 1; if(x.c[0] == 1) printf("little-endian\n"); else printf(&qu

浅谈linux 中的目标文件 即.o后缀名的文件

实际上 目标文件从结构上讲,已经非常接近可执行文件,只是没有经过链接的过程,所以其中有些符号或者地址还没有被调整. 实际上上在linux下 都是可以称之为ELF文件. 看一下这个图,a.out 就是我们的hello.c的执行文件.hello.o 就是目标文件 所以实际上他们2 几乎是一样的. 一般目标文件有很多属性,比如符号表啊,字符串之类的,然后目标文件 把这些属性 按照 segment的形式存储,也叫段.就是大家经常遇到的段错误 里的那个段. 一般来说程序代码被编译以后 主要分为程序指令和程

FPGA学习笔记(二)——FPGA学习路线及开发流程

###### [该随笔部分内容转载自小梅哥]       ######### 一.FPGA学习路线 工具使用 -> 语法学习 -> 逻辑设计 -> IP使用 ->接口设计 -> 时序分析 -> 片上系统 1.工具使用 Altera:Quartus II Xlinx: Vivado 2.语法学习 Verilog HDL(FPGA设计的是电路) 3. 逻辑设计 组合逻辑:多路选择器.加法器.译码器.乘法器 ······· 时序逻辑:计数器.分频器.移位寄存器.定时器 ···

自定义AXI-IP核(转)

目的: 自定义一个IP核,通过AXI总线与ARM系统连接 环境: Win7 32bit Vivado2014.4.1 Xilinx sdk2014.4 开发板: Zc702 第一步: 新建一个自定义的HDL模块,本实验新建一个16位加法器,保存为test.v,代码如下 module test( input [15:0] a, input [15:0] b, input clk, output reg [15:0] sum ); [email protected](posedge clk) beg

扒一扒ZYNQ里面缩写 及 Xilinx ZYNQ-7000概述

文章转载自 http://www.eefocus.com/Kevin/blog/11-08/228643_42a39.html kevin是xilinx的大牛,必须膜拜啊. 还引自http://blog.sina.com.cn/s/blog_6cb263210101g8lv.html 摘要:本文介绍与XILINX的EPP平台成员, ZYNQ芯片相关的缩写术语和含义.  与简单翻译术语不同,本文对每个缩写在本行业其他公司的展开含义也略作介绍, 避免混淆. 对术语的技术功能也作简单介绍. 8月份学校

Xilinx VDMA 24位流输出与32位AXI总线的内存 流数据关系

测试方法采用了VDMA仅有MM2S通道, 内存中的图像帧是用MicroBlaze核写入的一个colorbar. VDMA的mhs部分如下, 因为我的输出用了Digilent的HDMI核,而这个HDMI核是32位的,我自己写了个axis_24_32的位宽转换的ip,这个暂且按下不表. BEGIN axi_vdma PARAMETER INSTANCE = axi_vdma_0 PARAMETER HW_VER = 5.04.a PARAMETER C_USE_FSYNC = 0 PARAMETER

xps Xilinx Platform Studio

Xilinx Platform Studio (XPS) XPS provides an integrated environment for creating software and hardware specification flows for embedded processor systems based on MicroBlaze™ and PowerPC® processors. XPS offers customization of tool flow configuratio

教程——Basys3开发板的MicroBlaze串口实验

注:本博文所需工程下载链接:http://download.csdn.net/detail/lzy272942518/8850539 一.目的 学会diagram中MicroBlaze最小系统的组成 学会导出.建立以及运行基于SDK的工程 二.简介 实验目的: 1.通过tcl脚本新建工程 2.通过block diagram框图学会microblaze基本结构 3.实现microblaze调用uart模块,完成串口打印功能. 实验原理:本系统中,Basys3的Microblaze模块调用基于AXI