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

相关文章

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

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

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示