2021-03-13_怎样卸载petalinux-程序员宅基地

技术标签: zynq  

一、使用Petalinux定制Linux系统

1.1 建立petalinux和Vivado工作环境

source /tools/Xilinx/petalinux/settings.sh  //sptl
source /tools/Xilinx/Vivado/2019.2/settings64.sh //svvd
echo $PETALINUX  //验证petalinux工作环境已经设置

1.2 建立新的petalinux工程

petalinux-create --type project --template zynq --name ax_peta

1.3 导入硬件配置

cd ax_peta 
petalinux-config --get-hw-description ../xsa //硬件发生变化时,第一次需要重新导入
或者
petalinux-config  //硬件没有发生变化,重新配置petalinux
在选项 Linux Components Selection 中可以配置 uboot 和 Linux 内核的来源,默认是 github上下载的,需要 Linux 主机连接互联网才能下载。
在选项 Image Packaging Configuration --> Root filesystem type 选项中选择 EXT,把根文件系统放在SD卡中
在选项 Subsystem AUTO Hardware Settings 可以配置外设和启动方式,默认SD卡启动

以上建立petalinux和导入硬件配置信息可以使用附录3脚本文件完成。

1.4 配置u-boot

petalinux-config -c u-boot    //配置u-boot

1.5 配置内核

petalinux-build -c linux-xlnx -x reset  //如果之前配置过内核,可以根据需要清除之前的配置
petalinux-config -c kernel 
petalinux-build -c kernel -x finish -f  //保存内核配置

  在选项Device Drivers --> Graphics support中选择Digilent VGA/HDMI DRM Encode Driver以支持HDMI驱动

  在Networking Support --> Wireless 选择网络驱动

1.6 配置根文件系统

petalinux-config -c rootfs 

1.7 修改设备树

设备树1-设备树文件.DTS文件格式
设备树2-创建小型模板设备树
设备树3-设备树常用OF函数

1.8 编译(构建系统镜像)

petalinux-build   //编译fsbl、uboot、设备树、Linux内核和根文件系统
petalinux-build -c u-boot    //编译u-boot  在./images/linux生成system.bit文件
petalinux-build -c kernel    //编译内核    在./images/linux生成image.ub, uImage, zImage, u-boot.bin, u-boot.elf, zynq_fsbl.elf, system.dtb, rootfs.tar.gz文件
petalinux-build -c rootfs //编译根文件系统

如果再次编译卡死,可以使用下面命令清理编译结果

petalinux-build -x mrproper -f  //清理编译结果

1.9 生成BOOT文件

petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force //生成Zynq-7000器件的镜像
petalinux-package --boot --fsbl ./images/linux/zynqmp_fsbl.elf --fpga --u-boot --force //生成ZU 器件的镜像

1.10 制作根文件系统

sudo rm -rfd /media/mklinux/rootfs/  //清除SD卡rootfs分区的数据
sudo tar -zxvpf debian_rootfs.tar.gz  //解压缩文件系统
sudo rsync -av ./debian_rootfs/ /media/mklinux/rootfs  //将解压后的文件系统数据同步到SD卡的rootfs分区
sync                //防止有些数据没复制过去
sudo umount sdb*          //卸载SD卡各个分区

 二、启动Linux系统

Ubuntu驱动程序开发2-Uboot使用(bootcmd、bootargs、uboot命令)

2.1 在Uboot下手动启动

通过nfs下载zImage、设备树文件

nfs 00000000 192.168.2.120:/home/mklinux/nfs/zImage  //下载zImage到开发板DRAM的0x00000000
nfs 05000000 192.168.2.120:/home/mklinux/nfs/system.dtb  //下载system.dtb到开发板DRAM的0x05000000

通过tftp下载zImage、设备树文件

tftpboot 00000000 zImage  //下载zImage到开发板DRAM的0x00000000
tftpboot 05000000 system.dtb  //下载system.dtb到开发板DRAM的0x05000000

启动

bootz 00000000 - 05000000

2.2 通过网络启动

把zImage和system.dtb文件放到ubuntu主机的/home/mklinux/tftpboot目录下

把文件系统放在ubuntu主机的/home/mklinux/nfs/zynq_rootfs目录下

 

setenv bootcmd 'tftpboot 8000 zImage; tftpboot 103cdda8 system.dtb; bootz 8000 - 103cdda8'  //将zImage文件和设备树文件system.dtb分别加载到内存中,并使用bootz命令启动
或者
setenv bootcmd 'tftpboot 10000000 image.ub;bootm' //image.ub包含了kernel和设备树,将image.ub文件加载到内存,并使用bootm命令启动

setenv bootargs 'console=ttyPS0,115200 root=/dev/nfs rw nfsroot=192.168.2.125:/home/mklinux/nfs/zynq_rootfs ip=192.168.2.116: 192.168.2.125:192.168.2.100:255.255.255.0::eth0:off'  //通过网络挂载文件系统

2.3 通过SD卡

mmc list     //列出当前有几个MMC设备,以及MMC设备编号dev
mmc dev [dev]  //切换到要查看的MMC设备
mmc info    //查看当前MMC设备信息
mmc part    //列出当前所有分区
setenv bootcmd 'mmcinfo && fatload mmc 0:1 0x10000000 image.ub; bootm 0x10000000;'     //将image.ub文件从设备号为0的MMC设备的1号分区读取到DRAM的0x1000000
setenv bootargs 'console=ttyPS0,115200 root=/dev/mmcblk0p2 rootwait rw rootfstype=ext4'  //通过SD卡挂载文件系统

三、petalinux源码位置

参考:https://www.cnblogs.com/schips/p/xilinx-petalinux-get-source-code-and-config-from-petalinux-project-built.html

3.1 uboot源码

  • uboot源码

在执行了petalinux-config -c u-boot命令后。

cd build/tmp/work/
find . -type d -name "git" 2> /dev/null | grep "u-boot-xlnx"| grep "git"

得到 

./build/tmp/work/plnx_zynqmp-xilinx-linux/u-boot-xlnx/v2019.01-xilinx-v2019.2+git999-r0/u-boot-xlnx-v2019.01-xilinx-v2019.2+git999/source  //u-boot源码位置
链接到以下位置
./components/plnx_workspace/sources/u-boot-xlnx  //u-boot源码最终位置
  • uboot配置信息

cd build/tmp/work/
find . -type d -name "build" 2> /dev/null | grep "u-boot-xlnx"| grep "build"

得到

./build/tmp/work/plnx_zynqmp-xilinx-linux/u-boot-xlnx/v2019.01-xilinx-v2019.2+git999-r0/u-boot-xlnx-v2019.01-xilinx-v2019.2+git999/.config  //u-boot配置文件位置

注意事项:

从PetaLinux工程里得到的UBoot源代码中自动生成的文件include/configs/platform-auto.h里的宏定义里的连接符后有空格,可能导致编译时编译器会产生大量警告。

使用以下命令去除:

sed 's/ $//' include/configs/platform-auto.h -i

3.2 kernel源码

  • 内核源代码位置

当执行了petalinux-config -c kernel,

find ./ -type d -name "kernel-source"  //查找kernel源码位置
./build/tmp/work-shared/plnx-zynq7/kernel-source  //kernel源码位置

或者

./build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.19-xilinx-v2019.2+git999-r0/linux-xlnx-4.19-xilinx-v2019.2+git999/source

以上连个路径中的kernel-source文件都会链接到以下路径

/components/plnx_workspace/sources/linux-xlnx  //kernel-source最终位置
  • 内核配置文件

当执行了petalinux-config -c kernel,会在以下路径生成一个.config文件,每次修改内核配置并点击了save后,会将配置信息保存到.config文件。

./build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.19-xilinx-v2019.2+git999-r0/linux-xlnx-4.19-xilinx-v2019.2+git999/.config

执行了petalinux-build,会复制一份.config文件到以下路径。

find ./ -type d -name "kernel-build-artifacts"  //查找内核配置文件
得到
build/tmp/work-shared/plnx-zynq7/kernel-build-artifacts/.config

为了方便,可以把该目录下的.config文件复制到linux源码的子目录arch/arm/config/目录下,重命名为xilinux_peta_defconfig.config文件,使用make xilinx_peta_defconfig进行配置。

./build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.19-xilinx-v2019.2+git999-r0/linux-xlnx-4.19-xilinx-v2019.2+git999/    //内核编译后的位置

3.3 rootfs源码

./image/linux
sudo tar -zxvpf ./image/linux/rootfs.tar.gz -C ~/nfs/zynq_rootfs/  //解压到nfs目录下

 3.4 设备树源码

 

./project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
./project-spec/meta-user/recipes-bsp/device-tree/files/pl-custom.dtsi   
  
./components/plnx_workspace/device-tree/device-tree/system-conf.dtsi       
./components/plnx_workspace/device-tree/device-tree/system-top.dts           
./components/plnx_workspace/device-tree/device-tree/pl.dtsi      //是我们在vivado当中添加的pl端外设对应的配置信息           
./components/plnx_workspace/device-tree/device-tree/pcw.dtsi    //是我们在vivado当中已经使能的PS外设    

3.5 petalinux配置文件

./project-spec/configs/config

扩展资料:

1.image.ub文件

image.ub = kernel + dtb + rootfs.img

  • kernel:一般就是linux生成的elf文件。
  • dtb:设备树,与驱动有关。
  • rootfs.img:编译完成的文件系统。

2.BOOT.bin文件

BOOT.bin = u-boot.elf + zynq_fsbl.elf + bootgen.bif + system.bit

  • u-boot.elf :就是uboot编译生成的
  • bootgen.bif :可以自己手写。
  • zynq_fsbl.elf :Vivado创建PS以后,在SDK中创建File-New-Application Project-Zynq FSBL以后Build Project生成的。
  • system.bit :FPGA工程师生成的二进制流,用于PL端烧写的(可以没有)

3.脚本文件

 

#!/bin/sh
help () {
    echo "Error : need \$projectname \$hw_bsp"
    echo "  eg :"
    echo "      $0 ax_project ~/hw-vivado-bsp-for-petalinux/some_packakge"
    exit 1
}

if [ -z "$1" ]; then
    help
fi
if [ -z "$2" ]; then
    help
fi

## 删除源目录
rm $1 -rf

## 创建项目
petalinux-create --type project --template zynq --name $1

## 导入硬件信息
cd $1
petalinux-config --get-hw-description $2

## 使PetaLinux不删除源码
echo 'RM_WORK_EXCLUDE += "linux-xlnx"'>> project-spec/meta-user/conf/petalinuxbsp.conf
echo 'RM_WORK_EXCLUDE += "u-boot-xlnx"'>> project-spec/meta-user/conf/petalinuxbsp.conf
echo ''>> project-spec/meta-user/conf/petalinuxbsp.conf

 

 4.petalinux kernel rootfs u-boot常见配置

4.1 petalinux-config

设置uboot环境变量保存在sd卡

 

 

 

 设置将编译结果存至tftpboot文件夹

 

 4.2 petalinux-config -c kernel

4.3 petalinux-config -c rootfs

配置用root账户自动登录

4.4 petalinux-config -c u-boot

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010256887/article/details/114748790

智能推荐

在类Unix平台实现TCP客户端-程序员宅基地

文章浏览阅读1k次,点赞8次,收藏16次。我们这个TCP客户端将从命令行接收两个参数,一个是IP地址或域名,另一个是端口,并尝试连接在这个IP地址的TCP服务端。

彩虹外链网盘界面UI美化版超级简洁好看-程序员宅基地

文章浏览阅读114次。彩虹外链网盘,是一款PHP网盘与外链分享程序,支持所有格式文件的上传,可以生成文件外链、图片外链、音乐视频外链,生成外链同时自动生成相应的UBB代码和HTML代码,还可支持文本、图片、音乐、视频在线预览,这不仅仅是一个网盘,更是一个图床亦或是音乐在线试听网站。适合小文件快速共享,文件可以设置访问密码,doc,图片等文件可以预览,音频可以在线播放,也适合做图床,支持在线下载,美化前台UI,运行天数和友链在后台统计代码修改。访问后台/admin 默认账号密码admin/123456。

vue项目启动不显示Network,及Network无法访问的问题_vue network网址访问不了-程序员宅基地

文章浏览阅读4k次,点赞2次,收藏15次。首先找到build文件夹下webpack.dev.conf.js文件,修改compilationSuccessInfo里边的messages属性。在vue.config.js(或者配置config了的,就在config下的index.js )文件下设置。最后在package.json文件中 scripts 下的 dev 或者 serve 后面加上。以上设置可以显示Network 调试地址,但是无法访问,还需设置一下。回车后会出现一串信息,复制IPV4 地址即可。地址 ,获取IPV4 地址方法,_vue network网址访问不了

C++cin.getline和std::getline的用法和区别-程序员宅基地

文章浏览阅读632次。从文件或控制台读入数据。都可以一次性读入多个字符,即读一串字符。cin.getline 是类函数。是基本输入流的函数。标准输入流,是一个类对象。也可以是。std::getline 是标准函数,使用时需要引入头文件 。cin.getline读入的数据一般放在字符数组中,std::getline读入的数据一般放在string对象中。由于cin.getline函数读入的数据放在字符数组中,所以要给出读入字符的(最大)数量。std::getline函数需要给出读入的文件流对象。 : 指向要存储字符到的字符数组的_std::getline

倍福--EL2521控制步进_倍福el2521接线图-程序员宅基地

文章浏览阅读944次。使用了EL2521控制步进电机。对于脉冲型步进或伺服驱动器,可使用EL2521模块控制操作流程1.1. EL2521简介1.1.1. 外观和接线EL2521 xxxx输出端子改变二进制信号的频率并输出(与K总线电气隔离)。频率由来自自动化设备的16位值预设。EtherCAT端子的信号状态由发光二极管指示。LED与输出同步,每个LED显示一个活动输出。1.1.2. EL2521信号类型EL2521模块的后缀有-0000,-0024,-0025,-0124几种,各种类型的接线是不同的,这点要稍_倍福el2521接线图

转载-mac下完全卸载Node.js(亲测可用)_mac 卸载 node.js-程序员宅基地

文章浏览阅读46次。【代码】转载-mac下完全卸载Node.js(亲测可用)_mac 卸载 node.js

随便推点

变色龙哈希函数 Chameleon Hash 可变型区块链_变色龙哈希改写区块-程序员宅基地

文章浏览阅读1.3w次,点赞7次,收藏42次。哈希函数 Hash:众所周知,区块链有着极其优秀的安全性就是因为其充分使用了哈希函数。哈希简单用一句话来讲,就是:将任意长度输入的字串可转换成一个固定长度的字串,通过原始字串可以很容易地算出转换后的字串,通过转换后的字串很难还原出原始字串。哈希函数特征:1. 对于任意m作为输入,得到输出的结果,很难找到另一个输入m' (m'不等于m),使得m'的Hash结果也为同样的输出_变色龙哈希改写区块

【LSTM回归预测】基于蜣螂算法优化长短时记忆DBO-LSTM风电数据预测(含前后对比)附Matlab代码-程序员宅基地

文章浏览阅读796次,点赞13次,收藏17次。基于蜣螂算法优化长短时记忆(DBO-LSTM)模型的风电数据预测是一个备受关注的研究领域。风电是一种清洁能源,其预测对于能源规划和市场运营具有重要意义。本文旨在通过对比蜣螂算法优化前后的长短时记忆(DBO-LSTM)模型在风电数据预测中的表现,探讨蜣螂算法在优化风电数据预测模型中的有效性。首先,长短时记忆(LSTM)是一种适用于时间序列数据的深度学习模型,它能够捕捉数据中的长期依赖关系,因此在风电数据预测中具有较好的表现。

小米便签data包源码解读_小米便签开源代码注释-程序员宅基地

文章浏览阅读1.8k次,点赞36次,收藏53次。对于小米便签data包源码的一些解读,可能不是很准确_小米便签开源代码注释

KE分析之slub_debug功能使用记录_photonicmodulat-程序员宅基地

文章浏览阅读2.1k次。1. 前记前段时间遇到一个问题,具有一定的代表性,特此记录,后续遇到类似问题时,可以参考这个方向2. 问题说明此问题为低概率煲机测试类问题,概率较低,需要长时间的运行才可以触发到,排查起来比较困难;2.1 测试方法设置机器为自动化休眠唤醒测试,时间周期为1分钟;usb 口有连接u盘,唤醒后会自动播放u盘内歌曲;无其他特别步骤测试时通过串口打印debug信息,另外打开系统中集成的debug功能,即收集logcat + kernel log信息,在遇到anr\je\ne\ke\hwt时会将现场_photonicmodulat

Spring + spring Mvc No Servlet Set 错误_no servletcontext set-程序员宅基地

文章浏览阅读60次。在使用注解开发,SpringMvc配置类的情况下开启@EnableWebMvc,如果在springConfig类中的@Component扫描Bean对象再次扫描到spring和springMvc的配置Bean对象就会出现No Servlet Set错误。_no servletcontext set

初学cesium时的一些笔记,过于潦草看看就好_cesium pbr 3200-程序员宅基地

文章浏览阅读840次。Cesium ion(假如要用自己的数据则需要上传数据)Cesium依赖:基于HTML5标准,无插件,跨平台;无法单独运行,依赖于浏览器(Cesium Lab基于Electron架构)浏览器基于HTTP协议,所以必须有HTTP ServerCesium功能介绍:定义影像矢量模型:{1使用3d tiles格式模式加载各种不同的3d数据,包含倾斜摄影模型,三位建筑物,CAD和BIM的外..._cesium pbr 3200

推荐文章

热门文章

相关标签