07 Microblaze程序的固化方法

软件版本:vitis2021.1(vivado2021.1)

操作系统:WIN10 64bit

硬件平台:适用AMD-XILINX A7/K7/Z7/ZU/KU系列FPGA

登录"米联客"SOC|SOC社区-www.uisrc.com视频课程、答疑解惑!

1 概述

前面学习了很多Microblaze软核的实验,但是最终我们是要固化到开发板运行的才有实际的工程价值。本实验完成SDK程序固化到FLASH,并且从FLASH启动。

2 系统框图

3 基于图形化设计SOC系统

本实验通过前面的实验完成,所以不再重复BD 图像化编程的过程,最小系统的层次化设计如下:

展开层次化后如下:

4 搭建Vitis-sdk工程

创建soc_base sdk platform和APP工程。

4.1 创建SDK Platform工程

过程不再重复,如果不清楚的请看第一个demo

4.2 创建helloworld APP工程

过程不再重复,如果不清楚的请看第一个demo。

如下图右击helloworld工程,选择Generate Linker Script

如下图设置,程序、数据、堆在的运行地址空间为DDR内存空间,设置在DDR中代码执行效率会降低,根据实际情况可以把堆栈设置大一些,也可以在Microblaze IP核中,配置更大的cache和对性能就行优化

之后重新编译下

4.3 创建bootloader引导程序

创建APP过程不再重复,到最后一页,选择SREC SPI Bootloader

创建完成后

右击工程选择Generate Linker Script

设置程序、数据、堆栈全部运行于BRAM,所以BRAM就不能太小,Bootloader也不能太大,bootloader启动把应用程序复制到DDR中运行

修改blconfig.h中的文件,FLASH_IMAGE_BASEADDR 0x00500000,这个是FLASH的地址,也就是bootloader程序从这个地址加载进来,后面我们会涉及如何下载程序到FLASH

修改后保存,右击编译工程

编译完成后产生bootloader.elf

5 固化测试

5.1 产生download.bit

首先要通过下载bit产生download.bit , download.bit包含了fpga部分的bit文件已经刚才产生的bootloader.elf文件部分。原理是包含microbalze的download.bit加载完成后,在bram中运行bootloader.elf程序,bootloader.elf文件程序从FLASH_IMAGE_BASEADDR 0x00500000设置的地址加载用户的应用程序,这里把应用程序加载到DDR中。

右击选择Program Device

单击Program

开发板可以不通电,因为我们主要为了产生download.bit,JTAG不接通开发板会报一个错误,可以不管,单击OK

控制台已经产生了download.bit文件

 

5.3 固化helloworld.elf文件

选择helloworld工程,右击选择Program Flash

以下offset 的地址是FLASH中hellowrold.elf程序的起始地址,和bootloader程序中的FLASH_IMAGE_BASEADDR 0x00500000保持一致。设置好后,单击Program

提示下载成功

5.2 固化download.bit文件

连接好JTAG,并且给开发板通电,右击选择Program Flash

Download.bit的加载地址从0x00开始

下载结束

5.4 断电重启开发板

首先打开串口

给开发板断电后通电

可以看到串口输出了启动打印过程,最后输出了"Hello World"

5.5 优化bootloader程序

在bootloader.c中,注释掉#define VERBOSE,之后重新编译

重新制作download.bit,然后下载downlaod.bit方法和前面一样

固化完成后,重新上电串口打印输出如下

 

6本章小结

本章节系统的学习了Microblaze的固化方法,方法具有通用性,在其他的Microblaze demo中也可以通过一样的方法实现程序固化。

posted @ 2023-09-11 16:05  米联客(milianke)  阅读(1756)  评论(0编辑  收藏  举报