ZYNQ学习笔记(五):redpitaya板工程程序固化到SD卡(同黑金开发板)

2023-11-10 19:50

本文主要是介绍ZYNQ学习笔记(五):redpitaya板工程程序固化到SD卡(同黑金开发板),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • @[TOC](文章目录)
  • 前言
  • 一、实验任务
  • 二、基本原理
  • 三、硬件设计
  • 四、软件设计
  • 五、实验结果
  • 总结

前言

在ZYNQ学习笔记(三):PL与PS数据交互—— UART串口+AXI GPIO控制DDS IP核输出实验我们成功的实现了利用GPIO来控制DDS IP核的输出,今天我们尝试来把它在板子上固化一下。

一、实验任务

在“UART串口+AXI GPIO控制DDS IP核输出实验”的基础上,创建 FSBL实现程序上电自从SD 卡启动。

二、基本原理

在 ZYNQ SoC 的启动和配置过程中,既需要 PS 的配置信息,又需要 PL 的配置信息。为了简化配置 PS和 PL 的处理过程,ZYNQ 的配置顺序与 Xilinx FPGA 的配置顺序有所不同。差异来源于以下两种类型的文件:
1、 FPGA BIT 文件——定义 PL 的行为
2、 软件 ELF 文件——运行在 PS 中的程序

在 ZYNQ 中,PS 作为主器件,PL 可以看作是 PS 的一个外设,因此需要由 PS 来配置 PL。这个配置顺序的优势是它允许对 PS 单独上电时,此时 PL 不上电,以减小功耗。例外是我们在使用JTAG 下载程序时,此时是使用电脑作为主机来配置 PL。软件代码和配置 FPGA 的 BIT 文件可以存储在连接到 PS 端的配置存储器件中,PS 支持多种片外非易失性存储器(Quad SPI Flash,NAND Flash,NOR Flash 或 SD 卡)。我们常用的是从硬件上支持 SD卡和 QSPI 作为配置器件。
ZYNQ SoC 的启动由片上的 BootROM 开始。片上 BootROM 是 ZYNQ 芯片上的一块非易失性存储器,它包含了 ZYNQ 所支持的配置器件的驱动,BootROM 执行之后,下一个配置阶段被称为 FSBL,它是由设计者所创建的。FSBL 可以配置 DDR 存储器和硬件设计过程中所定义的一些外设。PL 的配置是通过处理器配置访问接口(Processor Configuration Access Port,PCAP)进行的,它允许对PL 进行部分配置或者完全配置。
总结一下 FSBL 的工作内容:
1、 初始化 PS;
2、 如果提供了 BIT 文件,则配置 PL;
3、 加载裸机应用程序到 DDR 中,或者加载 Second-Stage Boot Loader(SSBL);
4、 开始执行裸机应用程序,或者 SSBL

三、硬件设计

双击 ZYNQ Processing System 模块修改其配置,使能SD 控制器外设,并分别设置 Bank0 和 Bank1 (黑金是1.8V)的电平标准。MIO 引脚可以通过查看核心板原理图得知,正点原子是10,黑金是47~

设置完成后点击“OK”。然后按F6验证设计。验证完成后弹出对话框提示“Validation Successful”表明设计无误,点击“OK”确认。最后按快捷键“Ctrl + S”保存设计。接下来“Generate Output Products”。最后点击“Generate Bitstream”,对设计进行综合、实现、并生成 Bitstream 文件。
在生成 Bitstream 之后,在菜单栏中选择 File > Export > Export hardware 重新导出硬件,并在弹出的对话框中,勾选“Include bitstream”。导出硬件会弹出一个对话框,提示我们是否覆盖之前导出的硬件设计文件,在对话框中点击“Yes”,确认导出硬件并覆盖之前的文件。

四、软件设计

在 BSP 工程上右击,然后在菜单中选择“Board Support Package Settings”,如下图所示:

勾选xilffs,以使用 FAT 文件系统。
BSP 设置完成后我们就可以生成一个 FSBL 用来加载应用程序并配置 PL,在菜单栏中选择“File->New->Application Project”。
然后在弹出的新建工程界面中设置工程名,并选择工程中的 BSP。

在示例工程中选择“Zynq FSBL”


FSBL 工程创建完成之后,SDK 软件会自动生成 FSBL.elf 文件,接下来我们就可以创建启动镜像。首先在 FSBL 目录下新建的文件夹BOOTIMAGE,用来存储生成的镜像文件。

设置输出文件的路径:


依次添加 FPGA 配置文件,注意添加顺序不能乱~




添加完成后如图~


点击“Create Image”,完成 BIN 文件的创建。创建完成后,在我们指定的文件夹下可以看到生成的两个文件,如下图所示:

五、实验结果

我们只需要将生成的 BOOT.bin 文件拷贝到 SD 卡BOOT分区就可以,给开发板插卡通电,只连接一根USB线用来串口通信、一根信号线连接示波器~

打开一个串口软件,随机发送数字:

观测示波器:

换个数字:


由此可见,程序已经固化完成~

总结

这一节虽然简单但是我们必须要熟练掌握的技能,我们成功的在“UART串口+AXI GPIO控制DDS IP核输出实验”的基础上,创建 FSBL实现程序上电自从SD 卡启动。积跬步才能致千里,路阻且长~慢慢走吧。

这篇关于ZYNQ学习笔记(五):redpitaya板工程程序固化到SD卡(同黑金开发板)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/384881

相关文章

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和