IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> Zynq笔记(二)——PS端(ARM)的设计流程 -> 正文阅读

[嵌入式]Zynq笔记(二)——PS端(ARM)的设计流程

前言

  1. 在Zynq笔记(一)中,我们已经了解了PL端的设计流程,且最终生成了比特流文件,并进行了上板验证与调试。

  2. 接下来就用一个简单的例子来介绍PS端的设计流程。(使用GPIO来点亮LED)

  3. PS端的设计主要包括两个部分:

    • 基于ARM的裸机程序设计与开发
    • 用SDK创建和编写裸机应用程序

1 基于ARM的裸机程序设计与开发

1.1 用Vivado创建工程

  • 和普通的工程创建相同,这里的重点在于PS端设计开发,因此主要进行器件的选择,不进行v文件的编写,创建完成后即可。
    在这里插入图片描述

1.2 Zynq IP核的设置

  • 首先用IP 集成环境来进行块设计
    在这里插入图片描述

  • 为设计设置名称——ok——自动跳转生成界面
    在这里插入图片描述

  • 点击界面加号即可跳转到搜索框,我们就可以在里面输入Zynq,即可添加该IP核
    在这里插入图片描述
    在这里插入图片描述

  • 双击添加之后的IP核,就能看到Zynq的接口界面,从而能对齐进行参数的设置
    在这里插入图片描述
    在这里插入图片描述

  • 由于我们采用GPIO点亮LED,因此我们需要进行IO的配置。

  • 点击接口界面中的ENET1,并下滑找到GPIO,进行相应的勾选
    在这里插入图片描述
    在这里插入图片描述

  • 进行DDR的参数配置(主要进行型号的选择,根据开发板上DDR的型号来找)
    在这里插入图片描述

  • 目前所需要的配置已经完成,点击run Block,ok后相应的IO被导出
    在这里插入图片描述
    在这里插入图片描述

  • 因为我们这里没有用到时钟引脚,如果直接生成配置文件会出错,因此可以直接进行如下的连线,或者将时钟接口取消掉
    在这里插入图片描述
    在这里插入图片描述
    修改完成后进行校验,成功即可。
    在这里插入图片描述

  • 块创建完成后,都是以符号的形式呈现的,因此我们将其生成输出的配置文件
    在这里插入图片描述

  • 创建HDL Wrapper,且能在资源处看到创建好的wrapper文件,因此配置文件也ok了
    在这里插入图片描述
    在这里插入图片描述

  • 比特流文件的生成(等待)在这里插入图片描述

  • 将我们创建的PS系统导出(秒完)【这里导出的时候包含我们的比特流文件】
    在这里插入图片描述
    在这里插入图片描述
    以上就是创建包含zynq PS硬核的系统 的流程,接下来我们就可以进行C程序的编写来实现控制。


2 用SDK创建和编写裸机应用程序

  • 打开Launch SDK
    在这里插入图片描述

  • ok后,软件就会自动打开elipse,出现如下界面,我们可以看到自动生成了system_wrapper_hw_platform_0
    在这里插入图片描述

创建应用工程

在这里插入图片描述

  • 命名和之前工程名称相同即可,Next,后空工程创建完成
    在这里插入图片描述
    在这里插入图片描述
    能看到 除了空工程,也可建立hello word 等

  • 创建source file(创建c文件),注意加 .c —— finish

在这里插入图片描述
在这里插入图片描述

编写C代码

#include "xparameters.h"
#include "xil_io.h"
#include "xgpiops.h"
#include "sleep.h"
int main (void)
{
u32 reg_val = 0;
u32 Data = 0;
//设置IO方向,bit7的方向为输出
reg_val = Xil_In32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DIRM_OFFSET);
Data = reg_val | (1<<7);
Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DIRM_OFFSET,Data);
//设置输出使能,bit7输出使能
reg_val = Xil_In32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_OUTEN_OFFSET);
Data = reg_val | (1<<7);
Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_OUTEN_OFFSET,Data);

while(1)
 {//设置bit7输出1
	Data =((~(1<<7))<<16)|(1<<7);
	Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DATA_LSW_OFFSET,Data);
	usleep(1000000);
	//设置bit7输出0
	Data =((~(1<<7))<<16)& (~(1<<7));
	Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DATA_LSW_OFFSET,Data);
	usleep(1000000);

 }
}
  1. ctrl+B(或者project——Build All)对已有工程进行编译即可。编译完后,要想在开发板上点亮LED,首先必须保证开发板正确连接,然后运行,点击run——run configurations,出现如下界面,双击GDB即可进入运行的调试界面(主要添加比特流文件和tcl脚本),另外勾选0核,相当于对于双核里面的0核进行调试
    在这里插入图片描述
    在这里插入图片描述
    进行Run,所连接的开发板就能看到LED的点亮效果。如果对C程序又进行了修改,那么同样的修改后保存,Ctrl+B进行编译,然后Run查看效果。

3 zynq SOC开发的总结(PL+PS)

1、创建Vivado工程
2、创建包含PS硬核的系统
3、导出包含包含PS系统的hdf文件(包含比特流文件)
4、在SDK中基于hdf文件创建板级信息文件
5、创建应用工程,然后创建c文件
6、编写c程序,编译运行

参考:
小梅哥Zynq SOC 嵌入式设计课程
https://www.cnblogs.com/xianyufpga/p/11181816.html
https://article.itxueyuan.com/PgEAvk

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章           查看所有文章
加:2022-03-10 22:45:28  更:2022-03-10 22:47:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:30:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码