技术标签: zynq
source /tools/Xilinx/petalinux/settings.sh //sptl
source /tools/Xilinx/Vivado/2019.2/settings64.sh //svvd
echo $PETALINUX //验证petalinux工作环境已经设置
petalinux-create --type project --template zynq --name ax_peta
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脚本文件完成。
petalinux-config -c u-boot //配置u-boot
petalinux-build -c linux-xlnx -x reset //如果之前配置过内核,可以根据需要清除之前的配置
petalinux-config -c kernel
petalinux-build -c kernel -x finish -f //保存内核配置
在Networking Support --> Wireless 选择网络驱动
petalinux-config -c rootfs
设备树1-设备树文件.DTS文件格式
设备树2-创建小型模板设备树
设备树3-设备树常用OF函数
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 //清理编译结果
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 器件的镜像
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卡各个分区
Ubuntu驱动程序开发2-Uboot使用(bootcmd、bootargs、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
把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' //通过网络挂载文件系统
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-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
当执行了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/ //内核编译后的位置
./image/linux
sudo tar -zxvpf ./image/linux/rootfs.tar.gz -C ~/nfs/zynq_rootfs/ //解压到nfs目录下
./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外设
./project-spec/configs/config
image.ub = kernel + dtb + rootfs.img
kernel
:一般就是linux
生成的elf文件。dtb
:设备树,与驱动有关。rootfs.img
:编译完成的文件系统。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端烧写的(可以没有)
#!/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.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
文章浏览阅读1k次,点赞8次,收藏16次。我们这个TCP客户端将从命令行接收两个参数,一个是IP地址或域名,另一个是端口,并尝试连接在这个IP地址的TCP服务端。
文章浏览阅读114次。彩虹外链网盘,是一款PHP网盘与外链分享程序,支持所有格式文件的上传,可以生成文件外链、图片外链、音乐视频外链,生成外链同时自动生成相应的UBB代码和HTML代码,还可支持文本、图片、音乐、视频在线预览,这不仅仅是一个网盘,更是一个图床亦或是音乐在线试听网站。适合小文件快速共享,文件可以设置访问密码,doc,图片等文件可以预览,音频可以在线播放,也适合做图床,支持在线下载,美化前台UI,运行天数和友链在后台统计代码修改。访问后台/admin 默认账号密码admin/123456。
文章浏览阅读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网址访问不了
文章浏览阅读632次。从文件或控制台读入数据。都可以一次性读入多个字符,即读一串字符。cin.getline 是类函数。是基本输入流的函数。标准输入流,是一个类对象。也可以是。std::getline 是标准函数,使用时需要引入头文件 。cin.getline读入的数据一般放在字符数组中,std::getline读入的数据一般放在string对象中。由于cin.getline函数读入的数据放在字符数组中,所以要给出读入字符的(最大)数量。std::getline函数需要给出读入的文件流对象。 : 指向要存储字符到的字符数组的_std::getline
文章浏览阅读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接线图
文章浏览阅读46次。【代码】转载-mac下完全卸载Node.js(亲测可用)_mac 卸载 node.js
文章浏览阅读1.3w次,点赞7次,收藏42次。哈希函数 Hash:众所周知,区块链有着极其优秀的安全性就是因为其充分使用了哈希函数。哈希简单用一句话来讲,就是:将任意长度输入的字串可转换成一个固定长度的字串,通过原始字串可以很容易地算出转换后的字串,通过转换后的字串很难还原出原始字串。哈希函数特征:1. 对于任意m作为输入,得到输出的结果,很难找到另一个输入m' (m'不等于m),使得m'的Hash结果也为同样的输出_变色龙哈希改写区块
文章浏览阅读796次,点赞13次,收藏17次。基于蜣螂算法优化长短时记忆(DBO-LSTM)模型的风电数据预测是一个备受关注的研究领域。风电是一种清洁能源,其预测对于能源规划和市场运营具有重要意义。本文旨在通过对比蜣螂算法优化前后的长短时记忆(DBO-LSTM)模型在风电数据预测中的表现,探讨蜣螂算法在优化风电数据预测模型中的有效性。首先,长短时记忆(LSTM)是一种适用于时间序列数据的深度学习模型,它能够捕捉数据中的长期依赖关系,因此在风电数据预测中具有较好的表现。
文章浏览阅读1.8k次,点赞36次,收藏53次。对于小米便签data包源码的一些解读,可能不是很准确_小米便签开源代码注释
文章浏览阅读2.1k次。1. 前记前段时间遇到一个问题,具有一定的代表性,特此记录,后续遇到类似问题时,可以参考这个方向2. 问题说明此问题为低概率煲机测试类问题,概率较低,需要长时间的运行才可以触发到,排查起来比较困难;2.1 测试方法设置机器为自动化休眠唤醒测试,时间周期为1分钟;usb 口有连接u盘,唤醒后会自动播放u盘内歌曲;无其他特别步骤测试时通过串口打印debug信息,另外打开系统中集成的debug功能,即收集logcat + kernel log信息,在遇到anr\je\ne\ke\hwt时会将现场_photonicmodulat
文章浏览阅读60次。在使用注解开发,SpringMvc配置类的情况下开启@EnableWebMvc,如果在springConfig类中的@Component扫描Bean对象再次扫描到spring和springMvc的配置Bean对象就会出现No Servlet Set错误。_no servletcontext set
文章浏览阅读840次。Cesium ion(假如要用自己的数据则需要上传数据)Cesium依赖:基于HTML5标准,无插件,跨平台;无法单独运行,依赖于浏览器(Cesium Lab基于Electron架构)浏览器基于HTTP协议,所以必须有HTTP ServerCesium功能介绍:定义影像矢量模型:{1使用3d tiles格式模式加载各种不同的3d数据,包含倾斜摄影模型,三位建筑物,CAD和BIM的外..._cesium pbr 3200