另一种方式编译ZYNQ镜像

文章目录

  • 1.创建Petalinux工程,生成BOOT.BIN
    • 创建Petalinux工程
    • 配置Petalinux工程
    • 生成BOOT.BIN
  • 2.生成设备树文件
  • 3.编译kernel
    • 添加设备树文件
    • defconfig配置
    • menuconfig 配置
    • 编译内核源码
    • 编译设备树
  • 4.编译rootfs
  • 5.启动开发板
    • 制作SD启动卡
    • 拷贝镜像到FAT分区
    • 将根文件系统解压到 EXT4 分区
    • 启动开发板
  • 6.tcl脚本

1.创建Petalinux工程,生成BOOT.BIN

编写 linux 驱动的时候,经常改动的要素有设备树文件、linux 内核、根文件系统、bit文件,将这些要素独立出来会方便修改。下面步骤是将 bit 文件从原先的 BOOT.BIN 文件独立出来,将 image.ub 文件分开为内核 zImage 和设备树 dtb,并将根文件系统放到 SD 卡的 EXT4 分区

创建Petalinux工程

source /opt/pkg/petalinux/2018.3/settings.sh //设置 petalinux 工作环境
petalinux-create -t project --template zynq -n project //创建 Petalinux 工程
cd project //进入到 petalinux 工程目录下
petalinux-config --get-hw-description ../hdf/xx.sdk/ //导入 hdf 文件

配置Petalinux工程

  1. 进入“Subsystem AUTO Hardware Settings”菜单下,配置调试串口为ps7_uart_0。

在这里插入图片描述

  1. 进入“Advanced bootable images storage Settings”菜单中,进入“dtb image settings”选项并将 image storage media 设置为 primary sd,然后返回最初的配置界面。
  2. 进入到“Image Packaging Configuration”菜单下的“Root filesystem type (INITRAMFS)”子菜单下,选择“SD card”,按键盘上的“Enter”键返回,保存并退出。

生成BOOT.BIN

编译 fsbl 和 uboot,生成 BOOT.BIN 文件。此时BOOT.BIN 文件仅包含 zynq_fsbl.elf 和 u-boot.elf 文件,而没有包含bit文件。

petalinux-build -c bootloader
petalinux-build -c u-boot
petalinux-package --boot --fsbl --u-boot --force

2.生成设备树文件

编译uboot后,会在工程的components/plnx_workspace/device-tree/device-tree/目录下生成设备树相关文件,红圈中的是需要用到的设备树文件,skeleton.dtsi一般不用。

在这里插入图片描述

重新生成设备树文件:

如果更改vivado工程,BOOT.BIN文件不需要变动,但需要重新生成设备树文件。

一、1.重新导入hdf:petalinux-config --get-hw-description hdf 文件路径

  1. 编译uboot:petalinux-build -c u-boot

二、1. 输入hsi进入到hsi命令模式

  1. 执行下面命令得到新的Vivado工程的设备树文件(device-tree-xlnx-xilinx-v2018.3是下载的设备树):
open_hw_design /xxx/xxxx/.../hdf/xx.sdk/xx.hdf
set_repo_path  /xxx/xxxx/.../device-tree-xlnx-xilinx-v2018.3
create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0
generate_target -dir 设备树文件存放路径
  1. 执行exit退出hsi。

3.编译kernel

添加设备树文件

  1. 将生成的设备树文件pcw.dtsi、pl.dtsi、system-top.dts 以及 zynq-7000.dtsi直接拷贝到内核源码目录下的 arch/arm/boot/dts 目录中。

  2. 修改system-top.dts文件:主要修改了 bootargs 属性、添加了 model 属性、网口 0 的 MAC 地址以及给 qspi 进行了分区操作。

/* * CAUTION: This file is automatically generated by Xilinx. * Version: HSI * Today is: Mon Mar 16 02:51:23 2020 */ /dts-v1/; #include "zynq-7000.dtsi" #include "pl.dtsi" #include "pcw.dtsi" / { model = "Alientek ZYNQ Development Board"; chosen { bootargs = "console=ttyPS0,115200 earlyprintk   root=/dev/mmcblk0p2 rw rootwait"; stdout-path = "serial0:115200n8"; }; aliases { ethernet0 = &gem0; i2c0 = &i2c2; i2c1 = &i2c0; i2c2 = &i2c1; serial0 = &uart0; serial1 = &uart1; spi0 = &qspi; }; memory { device_type = "memory"; reg = <0x0 0x20000000>; }; }; &gem0 {local-mac-address = [00 0a 35 00 1e 53]; }; &qspi { #address-cells = <1>; #size-cells = <0>; flash0: flash@0 { compatible = "n25q512a","micron,m25p80"; reg = <0x0>; #address-cells = <1>; #size-cells = <1>; spi-max-frequency = <50000000>; partition@0x00000000 { label = "boot"; reg = <0x00000000 0x00500000>; }; partition@0x00500000 { label = "bootenv"; reg = <0x00500000 0x00020000>; }; partition@0x00520000 { label = "kernel"; reg = <0x00520000 0x00a80000>; }; partition@0x00fa0000 { label = "spare"; reg = <0x00fa0000 0x00000000>; }; }; }; 
  1. 修改 arch/arm/boot/dts 目录下的 Makefile 文件, 将设备树添加上去:

defconfig配置

内核源码目录下执行make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xilinx_zynq_defconfig

不要漏掉空格!

在这里插入图片描述

menuconfig 配置

需要时再配,先默认。

编译内核源码

(此步骤需要先配置一下环境变量:sptl

输入make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j10

编译完成之后会在 arch/arm/boot/目录下生成一个名为 zImage 的内核镜像文件。

在这里插入图片描述

编译设备树

输入make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- system-top.dtb -j10

编译成功后会在 arch/arm/boot/dts 目录下生成 system-top.dtb 文件。

在这里插入图片描述

4.编译rootfs

进入到petalinux工程目录下

配置根文件系统免密登录:

  1. petalinux-config -c rootfs
  2. 进入“Image Features —>”菜单下,使能“debug-tweaks”

编译根文件系统:petalinux-build -c rootfs

编译完成后产生的根文件系统压缩包rootfs.tar.bz2、rootfs.tar.gz在工程目录下的images/linux 目录下。

5.启动开发板

制作SD启动卡

格式化为两个分区:FAT32和EXT4
参考:petalinux设计流程

拷贝镜像到FAT分区

包括 zImage(内核镜像,内核源码目录 arch/arm/boot/zImage)、system-top.dtb(内核设备树 dtb 文件,内核源码目录 arch/arm/boot/dts/system-top.dtb)、system.bit(pl 端 bitstream 文件,Petalinux 工程目录下的 images/linux/system.bit)。

然后将 BOOT.BIN 文件(petalinux工程目录下的images/linux/BOOT.BIN)拷贝到 FAT 分区

将根文件系统解压到 EXT4 分区

进入到 rootfs.tar.gz 压缩包文件所在目录(工程目录下的images/linux 目录下)

  1. 执行sudo tar -xzf rootfs.tar.gz -C /media/zr/rootfs ,该路径为SD启动卡对应的 EXT4 分区的挂载点。

  2. 执行sync,将数据同步到SD卡中。

  3. 执行umount /dev/sdb*,卸载SD启动卡。

启动开发板

设置ZYNQ的启动模式为SD卡启动:

在这里插入图片描述

  1. 在 U-Boot 启动 2 秒倒计时之前,按回车或者是空格键停止启动,进入到 U-Boot 的命令行模式,设置环境变量。
env default -a 
setenv bitstream_load_address 0x100000 
setenv bitstream_image system.bit 
setenv bitstream_size 0x300000 
setenv kernel_img zImage 
setenv dtbnetstart 0x2000000 
setenv netstart 0x2080000 setenv default_bootcmd 'if mmcinfo; then run uenvboot; echo Copying Linux from SD to RAM... && 
load mmc 0 ${bitstream_load_address} ${bitstream_image} && 
fpga loadb 0 ${bitstream_load_address} ${bitstream_size} && 
run cp_kernel2ram && run cp_dtb2ram && bootz ${netstart} - ${dtbnetstart}; fi' 

U-Boot 启动内核或在命令行下执行 boot 命令时其实就是去执行 bootcmd,bootcmd 的内容其实就是运行 default_bootcmd
在这里插入图片描述

  1. 执行saveenv,保存环境变量到QSPI flash,这样下次就不用再设置了。
  2. 执行boot,启动内核。

6.tcl脚本

把命令添加进去一块执行

  1. 创建一个.tcl文件,将前面提到的命令写入
# tcl script test hsi::open_hw_design /home/zynq/hdf/xx.sdk/xx.hdf 
hsi::set_repo_path /home/device_tree_library/device-tree-xlnx-xilinx-v2018.3 
hsi::create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0 
hsi::generate_target -dir 设备树文件存放路径 
  1. 执行tcl脚本:xsct xx.tcl

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

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

相关文章

Windows 安装docker详细步骤说明

文章目录 1. 检查系统要求2. 启用硬件虚拟化3. 启用Hyper-V和容器功能4. 下载并安装Docker Desktop5. 配置Docker Desktop6. 安装WSL 27. 验证Docker安装8. 常见问题排查9. 重点说明参考资源 在Windows上安装Docker的详细步骤如下&#xff1a; 1. 检查系统要求 确保您的Window…

数据库断言-数据库连接池

原因&#xff1a;现在的代码是单线程&#xff0c;如果遇到大并发的话就会崩溃&#xff0c;数据库查询就查不过来 措施&#xff1a;需要建立数据库连接池&#xff0c;可以设置连接池的数量 什么是大并发&#xff1a;很多客户端在idea写的程序和数据库建立连接 步骤&#xff1…

SAP Build 3-调用SAP BAPI和调用S4HC API

1. 调用SAP BAPI 1.1 前提 项目已创建 SAP环境登录正常 1.2 引入BAPI SDK 商店中下载BAPI SDK Process中导入BAPI SDK 1.3 新建action group 新建action group时&#xff0c;会要求填写SAP登录信息&#xff0c;根据连接类型分为SSO&#xff0c;Basic和Custom 如果选择SS…

SAP配置发布WebService接口并调用(超级详细)

文章目录 前言一、案例介绍/笔者需求二、WebService是什么&#xff1f; a.传输协议 b.数据协议 c.WSDL d.UDDI 三、WebService 和 WebApi 的区别以及优缺点 a.主要区别 b.优缺点 四、SAP如何发布一个webser…

C++编程(六)运算符重载

文章目录 一、概念1. 左值和右值2. 运算符重载3. 可以实现重载的运算符和不可以实现重载的运算符 二、双目运算符&#xff08;一&#xff09;说明&#xff08;二&#xff09;实现1. 注意点2. 算术运算符成员函数版本全局函数版本 3. 关系运算符成员函数版本全局函数版本 三、赋…

技术反诈指南丨央视报了!基于“AI换脸”的新型电信网络诈骗猖獗

目录 利用“AI换脸”技术的诈骗 技术上防范新型电信网络诈骗 内蒙古鄂尔多斯市居民李女士近日遭遇了一起新型电信网络诈骗案。诈骗团伙利用“AI换脸”技术&#xff0c;合成了与李女士老同学相似的视频通话&#xff0c;以此作为诈骗的关键手段&#xff0c;成功骗取李女士信任。 …

【linux】使用vnc连接远程桌面,需要安装tigervnc,并在服务端期待,然后在客户端使用tigervnc-viewer进行连接即可

vnc 远程设置方法 需要服务端安装软件&#xff1a; sudo apt install -y tigervnc-standalone-server# 先配置密码使用&#xff1a; tightvncpasswd启动服务&#xff0c;禁用本机 vncserver -localhost no -geometry 1924x1080 :1客户端安装软件&#xff1a; sudo apt insta…

1974. 使用特殊打字机键入单词的最少时间

关键点&#xff1a; 无论数组的开头第一位是什么&#xff0c;总是从a开始的&#xff0c;从第一个字母向后走的时候有顺时针和逆时针&#xff0c;取最小值当从第一个字母开始走的时候&#xff0c;用当前位置替换a的作用 class Solution:def minTimeToType(self, word: str) -&g…

实现资产优化管理:智慧校园资产分类功能解析

在构建智慧校园的过程中&#xff0c;细致入微的资产管理是确保教育资源高效运作的关键一环&#xff0c;而资产分类功能则扮演着举足轻重的角色。系统通过精心设计的分类体系&#xff0c;将校园内的各类资产&#xff0c;从昂贵的教学设备到日常使用的办公物资&#xff0c;乃至无…

嵌入式linux系统中动态链接库实现详解

大家好,linux系统中动态库是如何实现相互链接的?今天简单聊聊动态链接库的实现原理。 假设有这样两段代码,第一段代码定义了一个全量变量a以及函数foo,函数foo中引用了下一段代码中定义的全局变量b。 第二段代码定义了全局变量b以及main函数,同时在main函数中调用了第一个…

​Chrome插件:React Developer Tools为React开发调试而生

React Developer Tools 是什么? 它是允许在Chrome和Firefox开发者工具中检查React组件层次结构的扩展插件。 插件源码下载 源码下载地址:GitHub - facebook/react-devtools at v3 下载完成以后执行红框中的代码,下载react-devtools 源码,源码如下图所示: 插件打包 当前n…

表单外链,支持查看方式设置

06/19 主要更新模块概览 外链设置 跳转缩放 打印调整 数据校验 01 表单管理 1.1 【表单外链】-填写外链新增查看方式设置 说明&#xff1a; 原表单填写外链&#xff0c;填写字段权限和查看权限统一字段设置&#xff0c;用户在填写时看到数据与查看数据一致…

Qt 使用代码布局,而不使用UI布局

一、工程的建立&#xff1a; 1、打开Qt Creator&#xff0c;文件&#xff0c;新建文件或项目 2、选择Application&#xff0c;Qt Widgets Application 3、写入名称&#xff0c;选择qmake 4、选择基类Base class&#xff0c;去除Generate form 务必选择QWidget&#xff0c;若…

交友系统定制版源码| 相亲交友小程序源码全开源可二开_打造独特的社交交友系统

交友系统源码的实现涉及到多个方面&#xff0c;包括前端页面设计、后端逻辑处理、数据库设计以及用户交互等。以下是一个简单的交友系统源码实现的基本框架和关键步骤: 1.数据库设计:用户表:存储用户基本信息&#xff0c;如用户ID、用户名、密码、头像、性别、年龄、地理位置等…

『手撕Vue-CLI』 添加自定义指令

添加 create 指令 在 vue-cli 中&#xff0c;create 指令是用来创建一个新的项目的&#xff0c;我实现的 nue --help 的帮助信息中只有 --version&#xff0c;--help 这两个指令&#xff0c;所以当用户使用我的 nue-cli 时&#xff0c;并不知道有 create 这个指令&#xff0c;所…

【MySQL】事务实现原理

事务 事务是将一组SQL语句打包成一个整体&#xff0c;在这组SQL的执行过程中&#xff0c;要么全部成功&#xff0c;要么全部失败。这组SQL语句可以是一条也可以是多条。 如果转账成功&#xff0c;应该满足以下要求&#xff1a; 张三的账户余额减少100&#xff0c;变成900&…

Vatee万腾平台:引领行业变革,创新未来

在当今这个快速变化的时代&#xff0c;科技的力量正在以前所未有的速度推动着行业的变革。Vatee万腾平台&#xff0c;以其独特的视角和前瞻性的布局&#xff0c;正引领着行业变革的浪潮&#xff0c;创新着未来的发展方向。 Vatee万腾平台是一家专注于科技研发和创新应用的领军企…

安装PyTorch详细过程(个人过程仅供参考)

1.安装anaconda 2.创建一个虚拟环境 以上步骤默认已经完毕&#xff0c;毕竟只是记录pytorch的安装过程 3.查看个人电脑CUDA版本 winr 输入cmd 回车 输入指令 nvidia-smi 右上角为该电脑所支持的最高CUDA版本 输入命令 nvcc -V 图中即为该电脑所安装的CUDA版本 记住该版…

动捕系统如何解决“超出捕捉范围”的挑战

惯性运动捕捉系统改变了我们捕捉运动的方式&#xff0c;使艺术家、创作者和独立工作室能够摆脱动捕实验室和复杂设置的限制。通过身体上的传感器和无线连接&#xff0c;动捕演员可以自由移动和并作出各种高难度动作。然而具有高自由度的惯性动捕系统&#xff0c;经常面临着超出…

筛斗数据全面解析数据提取与清洗的重要性

筛斗数据全面解析数据提取与清洗的重要性 在数字化时代&#xff0c;数据是企业决策的重要依据。然而&#xff0c;数据并非总是以我们期望的形式出现&#xff0c;它们可能分散、冗余、错误甚至不完整。因此&#xff0c;数据提取与清洗成为数据处理流程中不可或缺的两个环节。筛…