[X]关闭

1-2-07 Microblaze程序的固化方法

文档创建者:uisrc
浏览次数:1214
最后更新:2023-09-11
文档课程分类
AMD: FPGA部分(2024样板资料) » 1_START(适配所有型号) » 2-快速入门
软件版本: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 系统框图
2504661-20230911160457301-1261000748.jpg
3 基于图形化设计SOC系统
本实验通过前面的实验完成,所以不再重复BD 图像化编程的过程,最小系统的层次化设计如下:
2504661-20230911160457742-1589126931.jpg
展开层次化后如下:
2504661-20230911160458535-60546265.jpg
4 搭建Vitis-sdk工程
创建soc_base sdk platform和APP工程。
4.1 创建SDK Platform工程
2504661-20230911160459090-1691258784.jpg
过程不再重复,如果不清楚的请看第一个demo
4.2 创建helloworld APP工程
过程不再重复,如果不清楚的请看第一个demo。
如下图右击helloworld工程,选择Generate Linker Script
2504661-20230911160500584-22769803.jpg
如下图设置,程序、数据、堆在的运行地址空间为DDR内存空间,设置在DDR中代码执行效率会降低,根据实际情况可以把堆栈设置大一些,也可以在Microblaze IP核中,配置更大的cache和对性能就行优化
2504661-20230911160501231-521173474.jpg
之后重新编译下
2504661-20230911160501859-1138849657.jpg
4.3 创建bootloader引导程序
创建APP过程不再重复,到最后一页,选择SREC SPI Bootloader
2504661-20230911160502612-262737204.jpg
创建完成后
2504661-20230911160503336-139029677.jpg
右击工程选择Generate Linker Script
2504661-20230911160504045-394099268.jpg
设置程序、数据、堆栈全部运行于BRAM,所以BRAM就不能太小,Bootloader也不能太大,bootloader启动把应用程序复制到DDR中运行
2504661-20230911160504662-1660613229.jpg
修改blconfig.h中的文件,FLASH_IMAGE_BASEADDR 0x00500000,这个是FLASH的地址,也就是bootloader程序从这个地址加载进来,后面我们会涉及如何下载程序到FLASH
2504661-20230911160505850-1813348261.jpg
修改后保存,右击编译工程
2504661-20230911160506737-1262591081.jpg
编译完成后产生bootloader.elf
2504661-20230911160507330-1771645283.jpg
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
2504661-20230911160507952-1352529313.jpg
2504661-20230911160508580-137138015.jpg
2504661-20230911160509029-1466866452.jpg
2504661-20230911160509457-1566539298.jpg
单击Program
2504661-20230911160510681-443614884.jpg
开发板可以不通电,因为我们主要为了产生download.bit,JTAG不接通开发板会报一个错误,可以不管,单击OK
2504661-20230911160511918-1743198004.jpg
控制台已经产生了download.bit文件
2504661-20230911160512580-1901780359.jpg

5.3 固化helloworld.elf文件
选择helloworld工程,右击选择Program Flash
2504661-20230911160513781-1020616217.jpg
以下offset 的地址是FLASH中hellowrold.elf程序的起始地址,和bootloader程序中的FLASH_IMAGE_BASEADDR 0x00500000保持一致。设置好后,单击Program
2504661-20230911160517559-2023080753.jpg
提示下载成功
2504661-20230911160520203-1134190460.jpg
5.2 固化download.bit文件
连接好JTAG,并且给开发板通电,右击选择Program Flash
2504661-20230911160521282-1869400630.jpg
Download.bit的加载地址从0x00开始
2504661-20230911160521822-343448426.jpg
2504661-20230911160522798-421563025.jpg
下载结束
2504661-20230911160523486-649962365.jpg
5.4 断电重启开发板
首先打开串口
2504661-20230911160524161-273283615.jpg
给开发板断电后通电
可以看到串口输出了启动打印过程,最后输出了"Hello World"
2504661-20230911160524825-288826831.jpg
5.5 优化bootloader程序
在bootloader.c中,注释掉#define VERBOSE,之后重新编译
2504661-20230911160525428-285231543.jpg
重新制作download.bit,然后下载downlaod.bit方法和前面一样
固化完成后,重新上电串口打印输出如下
2504661-20230911160526100-1427279496.jpg

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则