Petalinux 基本工程的构建
Petalinux 基本工程的构建
在上一节,我们安装好linux了,这一节,我们搭建一个简单的工程测试一下,并通过TF卡启动
电脑环境
vivado版本:2019.2
petalinux版本:2019.2
windows:Win11
ubuntu版本:18.04
1. Vivado 工程搭建
1.1新建vivado工程
(1)打开Vivado 新建一个项目, 新建一个VIVADO 工程,打开软件 选中Create Project, 如下图所示
(2)点击NEXT ,在出现的第二个对话框“Project name”中输入工程名;在“Project location”中选择保存路径;勾选“Create project subdirectory”(默认),最后点击“Next” 备注,所有的路径均不能出现中文名称
(3)点击 RTL PROJECT 选项,点击NEXT
(4)选择芯片信号,笔者的是xc7z010,点击NEXT然后点击Finish
之后 工程就新建好了, vivado 进入到开发界面
1.2Block Design 部分创建
此处需要创建一个ZYNQ CORE ,并在ZYNQ CORE中设置DDR 以及UART等参数
- (1)创建一个BLOCK设计
- (2)搜索并添加ZYNQ7 Processing System,添加ZYNQ7 PROCESSING SYSTEM模块
- (3)软件自动生成了一个 zynq的block 如下图所示,接下来要做一些相应的设置,双击下图中的ZYNQ核
- (4)在zynq中设置DDR功能:
依次在弹窗里找到DDR Configuration→DDR Controller Configuration→DDR3,在Memory Part下拉菜单中根据自己板子上的DDR来选择相应的DDR3,本实验所用到型号:MT41K128M16JT 125,数据位宽选择16bit 最后点击“OK”,如下图所示。
- (5)添加 uart功能,因为板子的UART功能是连接在PL端的,所以这里选EMIO方式,再添加SD功能,选择MIO方式
- (6)随后点OK 保存修改, 点击“Run Block Automation”如下图所示。在弹出的选项中保持默认,点击“OK”,即可完成对ZYNQ7 Processing System的配置
- (7)用鼠标连接FCLK_CLK和 M_AXI_GP0_ACLK,得到下图
- (8)右键UART_0选择Make External,并且可在左下角修改名字
- (9)source→Design Source ,右键我们创建的BLOCK工程,点击Generate Output Products,生成文件(这个看个人电脑速度,反正我的慢的一批QAQ)
- (10)source→Design Source ,右键我们创建的BLOCK工程,点击create HDL wrapper,打包BLOCK文件并生成.v代码
- (11)点击左下角 Run Synthesis对工程进行编译,这也看电脑速度:D
- (12)编译完成之后,根据以下几个步骤,打开分配引脚界面
将 UART 部分的 TX RX 分别设置成 U13,T12 电压属性设置成 LVCMOS33, 之后保存(保存的时候会让你给约束文件命名,自行定义就好)
- (13)生成bit文件 :按下Generate Bitstream 完成综合以及生成bit文件,等待弹出综合完成的窗口
- (14)File→Export→Export hardware…,弹出的对话框
- (15)在弹出的对话框中,先点击NEXT,然后到如下界面,选择Include bitstream,然后NEXT
- (16)然后在如下界面选择保存路径的名称和路径,也就是.xsa文件,这个就是后面构建petalinux要用的硬件文件了
- (17) 保存的目录中有这个文件
2.PetaLinux 工程创建
- 打开虚拟机下的 Ubuntu系统,打开命令行
输入 source /home/qm1412/petalinux2019.2/settings.sh 对Petalinux 的环境进行加载
source /home/qm1412/petalinux2019.2/settings.sh
- 在Ubuntu下创建工程目录
mkdir ./petalinux_project
cd ./petalinux_project
- 创建Petalinux 工程,然后cd进入新建的petalinux工程文件
petalinux-create --type project --template zynq --name petalinux_uart_demo
- 复制.xsa文件到刚才创建的工程文件夹中
- 设置路径并启动Petalinux 配置页
petalinux-config --get-hw-description=.
- 对Petalinux 进行配置
( a ) 修改启动项
用键盘上的上下左右键移动光标,选择Subsystem AUTO Hardware Settings 按下回车(按两下ESC可以退回上一层)
选择Advanced bootable images storage Settings ,按下回车
选择 boot image settings选项 回车
选择 primary sd并按回车(如果你在vivado 里设置了nand flash 等,这里就有多个选项可选了)
之后连按两次ESC 可以返回上一级, 一直返回,直到回到最初的初始界面
( b )同理 对kernel image settings 也进行设置 ,ubsystem AUTO Hardware Settings 按下回车*
选择Advanced bootable images storage Settings ,按下回车
( c )root 文件系统 类型选择
选择Image Packaging Configuration
选择 Root filesystem type
选择 INITRAMFS
之后按多次ESC回到根菜单
( d )设置加载位置,因为板子上的DDR是256MB 的,而默认的加载位置已经超过256M的边界了,所以这里需要调整加载位置
选择u-boot Configuration
选择 netboot offset 选项 按回车
修改为 0x08000000 按OK 确认 (0x08000000可以修改为其他值,它影响uboot中kernel的加载位置,以不会超区同时不会覆盖其他文件数据为准)
( e )保存设置 选择save 并点选ok 对设置进行保存
( f )最后配置完成的界面
- 获取文件夹的权限
在完成上一步的操作之后,sudo chmod 777 /home/qm1412获取文件夹的权限(工程文件夹和petalinux的安装文件夹),否则编译的时候会报错(有的是又不用,可能又是魔法问题:D)
3.配置“三件套”还有编译
3.1 配置u-boot
petalinux-config -c u-boot
执行一段时间会出现这个窗口,这个破窗口不会自己弹出来,得自己手点
本次只是测试一下,不做任何配置,就直接保存,名字随便取就好
然后退出,让它完成后续的执行
3.2 配置kernel
petalinux-config -c kernel
这里也是一样的,执行一段时间会出现这个窗口,这个破窗口也不会自己弹出来,得自己手点(痴呆)
同样,我们不用配置,只需保存退出即可
然后就让它跑完
3.3 配置rootfs
petalinux-config -c rootfs
特别是配置这个文件系统,一天到晚给我报错(后面build的时候),笔者总结了一篇报错的文章给大家参考以下《petalinux 报错总结》
3.4编译整个工程
petalinux-build
之后系统就开始编译了 ,需要等很久 视机器性能而定
直接到出现提示 successfully built project 代表编译完成了
3.5打包boot.bin
编译完成后,项目工程文件夹下会有image文件夹,执行petalinux -package 命令 将zynq_fsbl.elf, system_wrapper.bit,u-boot.elf,image.ub 四个文件打包生成BOOT.bin 文件
cd ./images/linux
petalinux-package --boot --fsbl zynq_fsbl.elf --u-boot --fpga --kernel --force
如下图所示,代表打包完成(有警告,直接忽略)
4.TF启动测试
在Ubuntu 系统内 打开 工程文件夹内 编译生成的image文件夹
再打开linux 文件夹
这里面会有我们要烧录到TF卡里面的文件
这里我们插入TF卡,注意:TF卡必须格式化成FAT32的格式,不然不会成功!!!!!!!
然后将上面提到的两个文件复制到TF卡里面就好了
然后拔出TF卡,插入zynq板卡中,一般都会有启动模式的,只需将拨码开关选择SD卡模式启动就可以了
5.上板测试
这里我使用的是“MobaXterm”来查看板子是否成功运行
双击进入进入这个软件里面
然后我们点击左上角的Session,然后点击Serial,做如下配置(记得先把开发板跟电脑已经连接好串口了)
然后点击OK之后就会发现一些乱码,只需要reset一下板子就可以了
到这里我们就启动成功了,然后默认的用户名和密码都是 root,我们登录
这样我们就登录成功了,这个流程我尝试了很多次,按照这个教程还是比较轻松可以搭建成功的
Petalinux 基本工程的构建的更多相关文章
- 使用Flashbuilder/Flashbuilder-plugins搭建Flex工程每日构建(自动化构建)的方法
前段时间研究flex工程自动编译的时候,遇到了阻碍,就放下了,直到今天每日构建的问题又一次给项目组带来了麻烦,于是我彻底愤怒了. 最后,我的怒火没有白费,写出来以发泄情绪. [基本原理]: adobe ...
- Ant简单工程的构建
1.在Ant的官方网站http://ant.apache.org/bindownload.cgi下载Ant最新版本(我下载的是apache-ant-1.8.2-bin.zip),Ant无需安装,直接解 ...
- 第2章 构建springboot工程 2-1 构建SpringBoot第一个demo
以后的趋势肯定是以一个微服务为主导的, Spring-Boot的指导 Maven整个环境构建之前的整个项目其实是一个很普通的J2SE项目,它构建完之后会进行重构,重构为Maven的一个项目路径.可以看 ...
- 前端工程的构建工具对比 Gulp vs Grunt
1. Grunt -> Gulp 早些年提到构建工具,难免会让人联想到历史比较悠久的Make,Ant,以及后来为了更方便的构建结构类似的Java项目而出现的Maven.Node催生了一批自动化工 ...
- msbuild 编译指定工程时构建脚本的配置
有时候 ,我们编译windows的exe时,我们不需要编译所以的工程,我们只需要指定某个工程就好了,此时我们使用/t:工程名:Rebuild(如果要编译全部工程就把工程名去掉,即/t:Rebuild) ...
- 有关android工程的构建脚本(build.xml)的学习
学习[android-sdk-linux根目录]/tools/ant/build.xml,觉得如下几点很有用,记录之 1)ant脚本中属性值是于前置定义优化的原则,即属性发生重复定义时,前面定义的值不 ...
- 构建Maven聚合工程
最近,准备构建一个Maven的项目,基于模块化的结构思想,决定使用Maven的聚合工程进行构建. 环境准备: (1)eclipse 这里推荐使用spring封装的eclipse(即STS) ,STS中 ...
- Aooms_微服务基础开发平台实战_002_工程构建
一.关于框架更名的一点说明 最近在做年终总结.明年规划.还有几个项目需要了结.出解决方案,事情还比较多,死了不少脑细胞,距离上一篇文章发出已经过了3天,是不是有些人会认为我放弃了又不搞了,NONO,一 ...
- 使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程(十五)
在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也 ...
- 使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程
在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也 ...
随机推荐
- 记录--uniapp 应用APP跳转微信小程序
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 最近APP项目开发完成,在评审会上老板提了一个需求,想在开发的APP上添加一个链接,可以跳转公司的小程序商城. 原以为会很复杂,结果只有短 ...
- WC-Write Combining 合并写技术
WC-Write Combining 合并写技术 为了提高写效率: CPU在写入L1时,同时用WC写入L2 实验代码: public class WriteCombining { private st ...
- DARTS:基于梯度下降的经典网络搜索方法,开启端到端的网络搜索 | ICLR 2019
DARTS是很经典的NAS方法,它的出现打破了以往的离散的网络搜索模式,能够进行end-to-end的网络搜索.由于DARTS是基于梯度进行网络更新的,所以更新的方向比较准确,搜索时间相当于之前的方法 ...
- 福州大学MEM 备考总结
自己的基本情况 2022年8月2日,当天觉得休息的差不多了,思来想去,觉得考研是个不错的选择,和女朋友聊了一下,得到她的支持,于是乎定下目标.接着就是开始在网络上查找相关的材料,先把要报考高校和专业的 ...
- JDK10的新特性:var泛型和多个接口实现
目录 简介 实现多个接口 使用多个接口 使用var 总结 简介 在JDK10的新特性:本地变量类型var中我们讲到了为什么使用var和怎么使用var. 今天我们来深入的考虑一下var和泛型,多个接口实 ...
- OpenHarmony使用ArkUI Inspector分析布局
本文转载自<#2023 盲盒+码 # OpenHarmony使用ArkUI Inspector分析布局>,作者:zhushangyuan_ OpenHarmony使用ArkUI Ins ...
- 新手真的别再用过时的jenkins freestyle了,10分钟教你搞定快速编写jenksinfile,快速离线调试
Pipeline是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化.它通过Domain Specific Langua ...
- Java面试题总结:基础及语法篇169道
下载链接:https://gitee.com/ItBoShao/wechat_applet/blob/master/Java面试题总结:基础及语法篇169道.pdf
- DevEco Studio 3.1 Beta1版本发布——新增六大关键特性,开发更高效
智能代码编辑.端云一体化开发.低代码开发个性化-- 六大新增关键特性,开发更高效,体验更觉妙! 立即点击链接下载,做DevEco Studio 3.1 Beta1版本尝鲜者! 下载链接:HUAWE ...
- 重新点亮linux 命令树————内存与文件系统的查看[二十七]
前言 简单介绍一下内存的查看. 正文 常用命令. free top 查看磁盘使用率: fdisk df du du和ls的区别 free -h 查看内存使用率: free -g 显示按G来显示,-m用 ...