5 - ZYNQ SDK学习记录(2)

news2024/11/23 3:39:23

文章目录

  • 1 Vivado工程基本设计
  • 2 Vivado工程位置不变
    • 2.1 修改设计1 - 增加PS侧QSPI外设
    • 2.2 修改设计2 - 增加PL侧AXI GPIO外设
    • 2.3 总结
  • 3 Vivado工程位置变动
    • 3.1 先修改BD后打开SDK
    • 3.2 先打开SDK后修改BD
    • 3.3 总结

1 Vivado工程基本设计

Step 1:

  • Vivado版本Vivado 2018.3
  • 器件型号xc7z020clg400-2
  • 创建Vivado工程(名为pl_axi_gpio)
  • 搭建Block Design(名为system)
  • PS核
    • 勾选UART(查看打印信息)
    • 勾选GPIO-MIO(连接PS侧LED)
    • 选择DDR型号(运行应用程序)
    • 使能PL-PS中断 (接收PL侧提交的中断)
  • AXI GPIO核
    • 配置位宽(1-bit,连接PL侧按键)
    • 使能中断(检测按键中断并向PS提交中断)

在这里插入图片描述

Step 2:

  • 验证BD设计
  • 保存BD设计
  • 右击BD设计,Generate Output Products
  • 右击BD设计,Create HDL Wrapper
  • Open Elaborated Design,为axi_gpio_key分配引脚
  • 生成bit文件
  • 导出hdf

Step 3:

  • 打开SDK
  • 新建空应用工程pl_axi_gpio,SDK首先会自动生成BSP文件(包括驱动、库函数等)
  • 添加已编写好的源文件(main.c),SDK会自动编译应用工程,生成ELF文件

在这里插入图片描述
Step 4:

  • 开发板上电
  • 打开串口
  • 下载程序
  • Pl侧按键触发中断控制PS侧LED亮灭功能正常
  • 关闭SDK和Vivado

2 Vivado工程位置不变

2.1 修改设计1 - 增加PS侧QSPI外设

Step 1:

  • 打开Vivado
  • 打开pl_axi_gpio工程
  • 打开SDK

Step 2:

  • 切换到Vivado
  • 打开BD设计
  • 双击PS核,打开PS配置界面
  • 在Peripheral I/O Pins选项中勾选Quad SPI Flash
  • 验证BD设计
  • 保存BD设计
  • 右击BD设计,Generate Output Products
  • 生成bit文件
  • 导出hdf
  • 弹出如下图所示提示,点击Yes

在这里插入图片描述

Step 3:

  • 切换到SDK(SDK先前已打开未关闭),弹出如下图所示提示

在这里插入图片描述

Step 4:

  • 点击Yes,SDK会更新hw_platform_0,同时重新生成BSP文件和并重新编译应用工程,如下图所示,system.hdf和system.mss中多了ps7_qspi_0和ps7_qspi_linear

在这里插入图片描述

在这里插入图片描述

Step 5:

  • 稳妥起见,右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程

Step 6:

  • 上板验证
  • 关闭SDK

2.2 修改设计2 - 增加PL侧AXI GPIO外设

Step 1:

  • 切换到Vivado
  • 打开BD设计
  • 复制axi_gpio_0核(自动命名为axi_gpio_1)
  • 双击axi_gpio_1核,去掉中断
  • 验证BD设计
  • 保存BD设计
  • 右击BD设计,Generate Output Products
  • Open Elaborated Design,为axi_gpio_led分配引脚
  • 生成bit文件
  • 导出hdf

在这里插入图片描述

Step 2:

  • 打开SDK(SDK在2.1小节的最后已关闭)
  • SDK会自动检测到hw_platform_0使用的hardware specification发生变化,然后会自动
    • 更新hw_platform_0
    • 重新生成BSP文件
    • 重新编译应用工程
  • SDK如果仅更新hw_platform_0,并未重新生成BSP文件和重新编译应用工程,此时有两种方法:
    • 关闭SDK重新打开试试
    • Step 3

Step 3:

  • 稳妥起见,右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程

Step 4:

  • 上板验证
  • 关闭Vivado和SDK

2.3 总结

在Vivado工程位置不变的情况下,只要对设计做了修改,然后重新导出了hdf文件,SDK无论在设计修改之前是否打开,SDK都能识别到hdf的变化,然后自动

  • 更新hw_platform_0
  • 重新生成BSP文件
  • 重新编译应用工程

但是,注意有时候SDK也会失灵,仅更新hw_platform_0,不会重新生成BSP文件和重新编译应用工程。稳妥起见,右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程。

3 Vivado工程位置变动

  • 将2.2小节的Vivado工程复制到其他文件夹下
  • 打开Vivado
  • 打开pl_axi_gpio工程

3.1 先修改BD后打开SDK

Step 1:

  • 从BD设计中删除axi_gpio_1核及其接口
  • 重新编译Vivado工程
  • 重新导出hdf文件

Step 2:

  • 打开SDK,发现会多出一个hw_platform_1
  • hw_platform_1基于最新的hdf文件
  • hw_platform_0基于旧有的hdf文件
  • pl_axi_gpio和pl_axi_gpio_bsp是和hw_platform_0绑定的

在这里插入图片描述

Step 3:按照正点原子SDK嵌入式开发教程的方法

  • 彻底删除hw_platform_0
  • 将hw_platform_1重命名为hw_platform_0
  • 右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程

此时,打开system.hdf和system.mss文件,发现axi_gpio_1还在(在Vivado工程已删除),如下图所示:

在这里插入图片描述

在这里插入图片描述
Step 4:

  • 关闭SDK重新打开

此时,system.hdf文件中axi_gpio_1已消失,system.mss出现异常,如下图所示:

在这里插入图片描述
Step 5:

  • 只能删除Vivado工程目录下的SDK子文件夹,重新搭建SDK工程

3.2 先打开SDK后修改BD

Step 1:

  • 打开SDK,发现会多出一个hw_platform_1(因为此时Vivado工程未做任何修改,所以hw_platform_1和hw_platform_0完全一致)

Step 2:按照正点原子SDK嵌入式开发教程的方法

  • 彻底删除hw_platform_0
  • 将hw_platform_1重命名为hw_platform_0

Step 3:

  • 切换到Vivado,从BD设计中删除axi_gpio_1核及其接口
  • 重新编译Vivado工程
  • 重新导出hdf文件

Step 4:

  • 切换到SDK(SDK先前已打开未关闭),弹出如下图所示提示

在这里插入图片描述

Step 5:

  • 点击Yes,SDK会更新hw_platform_0,同时重新生成BSP文件和并重新编译应用工程(一切正常,哈哈)

Step 4:

  • 稳妥起见,右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程

Step 5:

  • 上板验证
  • 关闭Vivado和SDK

3.3 总结

在Vivado工程位置变化的情况下,在对设计做出任何修改前,首先打开SDK,然后彻底删除hw_platform_0
并将hw_platform_1重命名为hw_platform_0,最后再对设计进行修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2137371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【观影聊数学】聊聊电影《孤注一掷》中的数学逻辑

反电诈题材影片《孤注一掷》取材于真实案例,揭秘了境外电信网络诈骗黑色产业链的骇人内幕。境外诈骗集团往往以高薪招聘为诱饵,吸引有发财梦的人去境外淘金,一旦人们走出国门,跳入犯罪分子设下的陷阱里,等待他们的将是…

【python爬虫】之scrapy框架介绍

一.什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍。所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析&a…

SpringBoot开发——使用@Slf4j注解实现日志输出

文章目录 1、Lombok简介2、SLF4J简介3、实现步骤3.1 创建SpringBoot项目3.2 添加依赖3.3 使用 Slf4j 注解3.4 输出日志信息 4、结论 在现代Java开发中,日志记录是至关重要的。它不仅帮助开发者调试代码,还便于监控系统运行状态和性能。 Lombok 和 SLF4J …

了解水凝胶纤维制造?自润滑纺丝来帮忙!高韧性纤维用途广!

大家好,今天我们来了解一篇水凝胶纤维文章——《Continuous Spinning of High‐Tough Hydrogel Fibers for Flexible Electronics by Using Regional Heterogeneous Polymerization》发表于《Advanced Science》。在柔性电子领域,水凝胶纤维因其独特的性…

检查一个复数C的实部a和虚部b是否都是有限数值即a和b都不是无限数值、空值cmath.isfinite(x)

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 检查一个复数C的实部a和虚部b 是否都是有限数值 即a和b都不是无限数值、空值 cmath.isfinite(x) [太阳]选择题 根据给定的Python代码,哪个选项是错误的? import cma…

适合小客厅使用的投影仪推荐:2024年当贝X5S小户型客厅的最佳选择

我们在买投影前都会先看看家里的环境、预算以及自己的需求去选择适合自己的家的那款;正好最近有朋友向我资讯:我家客厅面积不大,有没有适合的家用投影仪推荐啊?对于这种家庭使用环境不大的小客厅我们该如何挑选投影仪?…

人员抽烟AI检测算法在智慧安防领域的创新应用,助力监控智能化

随着人工智能技术的飞速发展,计算机视觉和深度学习算法在各个领域的应用日益广泛。其中,人员抽烟AI检测算法以其高效、精准的特点,成为公共场所、工厂、学校等场景中的得力助手。本文将介绍TSINGSEE青犀AI智能分析网关V4人员抽烟检测算法的基…

JavaScript高级——执行上下文栈

1、在全局代码执行前,JS引擎就会创建一个栈来存储管理所有的执行上下文对象 2、在全局执行上下文(window)确定后,将其添加到栈中(压栈) 3、在函数执行上下文创建后,将其添加到栈中&#xff08…

AI 驱动腾讯游戏智能 NPC,开启新纪元

AI 驱动腾讯游戏智能 NPC,开启新纪元 前言AI 驱动腾讯智能 NPC 前言 曾经,游戏 NPC 往往只是按照预设脚本进行简单互动,缺乏深度和灵活性。然而,如今在 AI 的赋能下,NPC 开始展现出前所未有的智能与活力。它们能够进行…

【springboot】父子工程项目搭建

父工程创建 1.新建一个spring项目 2.选择合适的springboot版本,点击【完成】,即创建父工程完毕 3.删除父工程中无用文件:src 创建子工程模块 1.右键项目名->新建(news)->模块(Module)…

web知识

sql注入的万能密码:1’ or true#如果页面没有什么东西可见,首先可以用diresearch看看有没有什么隐藏的目录,或者检查源代码,如果这些都没成功可以用 dirsearch如果没有找到东西,可能需要调低线程 dirsearch.py -u url -e * --ti…

【数据结构与算法】巧用位运算

【数据结构与算法】巧用位运算 文章目录 【数据结构与算法】巧用位运算位运算的巧思用位运算来求集合公式用位移求集合公式二进制库函数 位扩展:基础例题例题LC190——用到左移和或运算异或运算法则经典例题:[LC136 唯一数](https://leetcode.cn/problem…

stm32单片机个人学习笔记3(GPIO输出)

前言 本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 STM32入门教程-2023版 细…

基于千问大模型Intel G8i开发主动问询导购助手

文章目录 1. 背景2.环境介绍2.1 硬件环境2.2 软件环境 3. 大模型环境部署3.1 准备硬件资源 3.2 大模型部署3.1 部署Docker3.2 部署Intel xFasterTransformer容器3.3 准备模型数据3.4 运行模型进行AI对话 4. 构建主动问询导购助手应用 1. 背景 北京又开始发放消费券啦&#xff…

整个场面要hold住-《分析模式》漫谈32

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的第一章有这么一句: It is important to be clear to them that I am not holding them up as gospel, and if they are not comfortable, I will …

RedisTemplate操作ZSet的API

文章目录 ⛄概述⛄常见命令有⛄RedisTemplate API❄️❄️ 向集合中插入元素,并设置分数❄️❄️向集合中插入多个元素,并设置分数❄️❄️按照排名先后(从小到大)打印指定区间内的元素, -1为打印全部❄️❄️获得指定元素的分数❄️❄️返回集合内的成员个数❄️❄…

鸿蒙应用开发:音频播放

鸿蒙系统提供了多样化的API,来帮助开发者完成音频播放的开发,不同的API适用于不同音频数据格式、音频资源来源、音频使用场景,甚至是不同开发语言。因此,选择合适的音频播放API,有助于降低开发工作量,实现更佳的音频播放效果。 本节介绍通过Media Kit实现音频播放。 AVP…

【机器学习】--- 深度学习中的注意力机制

深度学习中的注意力机制 在深度学习领域,注意力机制(Attention Mechanism)已经成为近年来最受瞩目的研究热点之一。它不仅提升了现有模型的性能,更启发了全新的网络结构,如Transformer模型。注意力机制被广泛应用于自…

SMA2:代码实现详解——Image Encoder篇(Hiera章)

SMA2:代码实现详解——Image Encoder篇(Hiera) 写在前面 大家在SMA2:代码实现详解——Image Encoder篇(FpnNeck)下的留言我已收到,感谢大家的支持,后面如果遇到比较难以讲清的部分可能会使用视频的形式。…

jsp+sevlet+mysql图书管理系统

jspsevletmysql图书管理系统 一、系统介绍二、功能展示1.图书查询(学生)2.借阅信息(学生)3.借阅历史(学生)4.借阅历史(管理员)5.读者管理(管理员)6.图书分类(管理员)7.图书借阅信息(管理员)8.图书归还信息(管理员) 四、其它1.其他系统实现 一、系统介绍 系统主要功能&#xff…