【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        学编程的时候,大家一般都比较重视第一个项目的创建和执行。第一个fpga程序一般是led闪烁,第一个c程序一般就是hello world程序。今天就介绍下,zynq下面的hello world应该怎么编写。和其他soc程序不一样,zynq编写c代码之前,需要先创建一个block design,这就是最大的不同。整个流程稍微多了一点,不过熟能生巧就好。

1、创建zynq工程

        第一步还是创建zynq工程。这一步和之前fpga没有什么区别,唯一需要注意的地方就是对zynq芯片的选择。我们习惯于直接用020clg400-1搜索,搜到的最后一个结果就是我们需要的芯片。

2、创建block design,添加cpu

        fpga开发是添加verilog代码和约束文件。而zynq的软件,则是需要先添加block design,这是一个顶层设计的框架,这个框架里面有cpu、有总线、有复位,还有可能有各种各样的外设。当然目前为止,作为入门,我们一开始不弄那么复杂。添加block design之后,直接添加cpu即可。

3、去除不必要的ps连接线

        因为没有ps之外的其他外设,所以可以去除下面三部分内容,

        1)FCLK_RESET0_N;

        2)M_AXI_GP0 interface;

        3)FCLK_CLK0。

        去除之后,就是这样的形式,即只有ddr和54个fixed io,这些接口是不需要添加端口约束的。

4、添加打印串口,配置ddr参数

        既然是hello world程序,那么串口肯定是少不了的。这里我们选择了uart0串口,作为输出的接口。但是uart0本身可以放在很多其它的位置,所以我们首先需要通过电路图,来确认最终的位置。

        这里,我们把uart0放在了pin14、15引脚上面,即MIO14、MIO15。

        除了uart之外,ddr也是少不了的。因此哪怕用zynq做纯mcu开发,ddr也是很大的优势。一般来说,这里配置的是ddr3控制器。通常只要选择好ddr芯片型号即可,最多设置一下数据位。我们这里选用的是最后一个选项,即MT41J256M16 RE-125,数据宽度是16。大家可以根据自己的开发板,灵活做出选择。

5、保存block design,开始生成文件

        block design保存好之后,最好利用validate 按钮确认下、保存下。接下来生成的文件有两个,一个是右击,选择“Generate Output Products”生成文件。结束之后,继续右击,选择“Create HDL Wrapper”生成文件。两个都ok之后,代表block designer就创建结束了。

6、导出硬件环境,打开sdk软件

        这里导出硬件环境比较简单,直接单击“File”-》“Export”-》"Export Hardware"即可,不用包含bitstream文件,因为没涉及到pl开发。完毕之后,继续单击“File”-》“Launch SDK”,即可打开sdk软件。

7、创建hello world软件

        打开sdk之后,一般已经有一个design_1_wrapper_hw_platform_0工程了。我们只需要继续创建hello world工程即可。创建的过程中,系统会帮我们自动匹配一个bsp工程。而且工程创建以后,sdk会自动编译好,帮助生成elf文件。如果我们需要用jtag运行程序,只需要单击这个elf,右击选择“”Run as”-》“Launch on hardware(System Debug)”即可,这样程序就可以跑起来,用mobaxterm看到串口打印了。

        当然在此之前,需要连接好两根type c线,一根是jtag,一根是usb转串口。

8、可能会出现的问题

        假设ddr没有初始化好的话,可能会出现write memory 0x100000 error这样的错误。出现错误之后,有两种解决办法,一种是继续去寻找ddr配置失败的原因。还有一种就是修改link file,删掉原来的ps7_ddr_0,把现在的ps7_ram_1修改成ps7_ddr_0,这样程序也是可以跑起来的。

        大家不知道的是,zynq内部也有一段ram空间,同样可以跑代码、执行程序,不一定非得运行在ddr上面。改了之后,不需要初始化ddr,重新run一下jtag,自然就可以跑起来了。

9、jtag做了哪些工作

        我们发现程序启动的时候,本身是运行在ddr上面的,那么ddr是谁初始化的? 答案就是jtag。jtag不仅可以初始化ddr,还可以初始化其他外设,甚至可以帮助debug程序。但是如果程序需要发布给客户的话,就不能依赖jtag了,这个时候就需要准备fsbl程序了。当然,这就是后面的话题了。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EJS(Embedded JavaScript)(一个基于JavaScript的模板引擎,用于在HTML中嵌入动态内容)

文章目录**1. 什么是 EJS?****2. 核心特点**- **接近原生 HTML**- **动态渲染**- **轻量高效**- **与 Express 深度集成****3. EJS 的基本语法****4. 示例代码****HTML 模板(views/user.ejs)****Express 中渲染模板****5. 使用场景**1. **服务…

Linux:基于阻塞队列的生产者消费模型

文章目录一、生产者消费者模型的基本原则💕💕生产者-消费者模型的 321 原则💕💕二、为何要使用生产者消费者模型1. 解耦2. 支持并发 (提高效率)3. 忙闲不均的支持三、基于 BlockingQueue 的生产者消费者模型…

ensp启动路由器报错40

1. 先关闭 eNSP 模拟器、关闭 Virtualbox2. 在everything里面搜索 .VirtualBox文件夹,然后删掉3. 再打开 eNSP,不添加任何模拟设备,单击“菜单-工具-注册设备”,将 AR_Base 重新注册。4. 关闭 eNSP 模拟器

代码随想录二刷之“图论”~GO

A.深搜与广搜(重点掌握!!!!) 深搜类似于回溯法 搜索方向,是认准一个方向搜,直到碰壁之后再换方向换方向是撤销原路径,改为节点链接的下一个路径,回溯的过程…

基于Echarts+HTML5可视化数据大屏展示-白茶大数据溯源平台V2

效果展示&#xff1a;代码结构&#xff1a;主要代码实现 index.html布局 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta n…

Linux 系统网络配置及 IP 地址相关知识汇总

Linux 系统网络配置及 IP 地址相关知识汇总 一、IP地址基础 IP地址&#xff1a;在计算机网络中用来唯一标识一台设备的一组数字。 二、IPv4相关知识 1. IPv4的表示方法 采用点分十进制表示&#xff0c;即由4个0-255的十进制数通过点分隔组成&#xff08;如192.168.1.1&#xff…

百度股价突破120美元创年内新高,AI云成为增长新引擎

美东时间9月16日&#xff0c;百度&#xff08;NASDAQ: BIDU&#xff09;美股大涨近8%&#xff0c;收盘价突破120美元&#xff0c;站上124美元高位&#xff0c;创2023年10月以来新高。北京时间9月17日港股开盘&#xff0c;百度&#xff08;09888.HK&#xff09;港股再次暴涨&…

《彩虹六号:围攻》“Siege X”发布会3月14日举行!

使用jQuery的常用方法与返回值分析 jQuery是一个轻量级的JavaScript库&#xff0c;旨在简化HTML文档遍历和操作、事件处理以及动画效果的创建。本文将介绍一些常用的jQuery方法及其返回值&#xff0c;帮助开发者更好地理解和运用这一强大的库。 1. 选择器方法 jQuery提供了多种…

[从青铜到王者] Spring Boot+Redis+Kafka电商场景面试全解析

互联网大厂Java开发岗技术面试实录&#xff1a;严肃面试官VS搞笑程序员谢飞机 文章内容 第一轮&#xff1a;基础框架与并发控制&#xff08;电商系统基础能力&#xff09; 面试官&#xff08;严肃&#xff09;&#xff1a;欢迎进入面试环节&#xff0c;首先请用3句话总结Spring…

【DMA】DMA架构解析

目录 1 DMA架构 1. 芯片架构图一览 2. AHB总线矩阵挂载 3. AHB1/APB1的桥和AHB1/APB2的桥 4. DMA1 和 DMA2 的区别 2 AHB总线矩阵 1 DMA架构 1. 芯片架构图一览 2. AHB总线矩阵挂载 stm32F411 芯片的 AHB 总线矩阵上共挂载了 6 主 5 从 六主&#xff1a; Icode-bus、D…

GPS 定位器:精准追踪的“隐形守护者”

GPS 定位器&#xff1a;精准追踪的“隐形守护者” 一、什么是 GPS 定位器&#xff1f; GPS 定位器是一种基于 全球定位系统&#xff08;Global Positioning System, GPS&#xff09; 的智能追踪设备。 通过接收卫星信号并结合通信模块&#xff08;如 4G、NB-IoT&#xff09;&am…

前端拖拽排序实现

1. 使用 HTML5 事件 触发时机 核心任务 dragstart 开始拖拽时 准备数据&#xff0c;贴上标签 dragover 经过目标上方时 必须 preventDefault()&#xff0c;发出“允许放置”的信号 dragleave 离开目标上方时 清理高亮等临时视觉效果 drop 在目标上松手时 接收数据…

arm coresight

这是一个arm设计的调试基础架构&#xff0c;我们常用的debug基本都包含在内。比如ETM、PTM、ITM、HTM、ETB等。 注意ETM、PTM、ITM、HTM、ETB是coresight的子集。这些工具相比普通debug的断点调试&#xff0c;需要更高的专业水平&#xff0c;因此也用于复杂软件故障定位、性能…

《华为基本法》 —— 企业发展的导航仪

当一家企业从 “小作坊” 向 “规模化组织” 跨越时&#xff0c;最需要的是什么&#xff1f;华为的答案&#xff0c;藏在 1998 年出台的《华为基本法》里。1998 年&#xff0c;《华为基本法》正式颁布&#xff0c;这部凝结华为早期经营智慧的纲领性文件&#xff0c;不仅为华为从…

【完整源码+数据集+部署教程】传统韩文化元素分割系统: yolov8-seg-GFPN

背景意义 研究背景与意义 随着全球化的加速&#xff0c;传统文化的保护与传承面临着前所未有的挑战。尤其是韩国的传统文化&#xff0c;作为东亚文化的重要组成部分&#xff0c;蕴含着丰富的历史、艺术和哲学内涵。然而&#xff0c;随着现代化进程的推进&#xff0c;许多传统文…

构建AI智能体:三十五、决策树的核心机制(一):刨根问底鸢尾花分类中的参数推理计算

一、初识决策树想象一个生活中的场景&#xff0c;我们去水果店买一个西瓜&#xff0c;该怎么判断一个西瓜是不是又甜又好的呢&#xff1f;我们可能会问自己一系列问题&#xff1a;首先看看它的纹路清晰吗&#xff1f;如果“是”&#xff0c;那么它可能是个好瓜。如果“否“&…

c语言中实现线程同步的操作

线程 常见问题 同步权限 在多线程 / 多进程并发时&#xff0c;为避免共享资源&#xff08;如内存变量、硬件设备、文件&#xff09;被同时修改导致的数据不一致&#xff0c;需要通过 “同步机制” 控制谁能访问资源 ——“获取同步权限” 就是线程 / 进程申请这种访问资格的过程…

一台设备管理多个 GitHub 账号:从配置到切换的完整指南

一台设备管理多个 GitHub 账号&#xff1a;从配置到切换的完整指南 在日常开发中&#xff0c;我们经常需要在同一台电脑上使用多个 GitHub 账号&#xff08;比如个人账号和工作账号&#xff09;。但默认情况下&#xff0c;Git 会优先使用全局配置的账号&#xff0c;导致推送代…

即插即用,秒入虚拟:TouchDIVER Pro 触觉手套 赋能 AR/VR 高效交互

一、即插即用&#xff0c;零门槛开启沉浸之旅 在XR&#xff08;扩展现实&#xff09;技术高速发展的今天&#xff0c;用户对“真实感”的追求愈发迫切。Weart公司旗下旗舰产品TouchDIVER Pro触觉手套&#xff0c;凭借无需适配器、无需复杂设置的极简设计&#xff0c;打破传统触…

GitHub热榜项目 - 日榜之应用场景与未来发展趋势

一、引言GitHub热榜项目 - 日榜呈现出丰富多样的技术成果&#xff0c;这些项目蕴含着巨大的应用潜力&#xff0c;并且对未来数智化技术的发展有着重要的指示作用。深入探究其应用场景以及未来发展趋势&#xff0c;能让我们更好地把握技术发展方向&#xff0c;将这些前沿技术应用…