软件版本: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中也可以通过一样的方法实现程序固化。
标签:07,FLASH,程序,Microblaze,download,固化,bootloader,bit From: https://www.cnblogs.com/milianke/p/17693804.html