petalinux_zynq7 驱动DAC以及ADC模块之二:petalinux

news2024/12/29 11:23:40

petalinux_zynq7 C语言驱动DAC以及ADC模块之一:建立IPicon-default.png?t=N7T8https://blog.csdn.net/qq_27158179/article/details/136234296在上一篇,建立了ADC和DAC两个IP。这里继续。本文在 petalinux默认配置的基础上,添加了python和qt。再编译出sdk可以给x86主机交叉编译。

0. 环境

- ubuntu18
- vivado 2018.3
- mizar z7010 + ada106模块

1. petalinux工程创建

1.1 创建工程

cd /home/dell/work/mizar
source /opt/pkg/petalinux/2018.3/settings.sh
petalinux-create -t project -n linux_sd_adda --template zynq

拷贝 hdf


/home/xxjianvm/work/mizar/linux_sd_hdmi/linux_sd_hdmi.sdk/hdmi_out_wrapper_hw_platform_0/system.hdf
拷贝到
/home/dell/work/mizar7/linux_sd_hdmi/hdf/system.hdf

1.2 用mizar开发板提供的linux内核

准备修改过的linux内核(添加了hdmi)

F:\开发板-FPGA资料、Mizar_Z7010_2018.3\03_Source\03_source.7z
拷贝到
/home/dell/work/mizar/03_source.7z
解压

7z x 03_source.7z
cd 03_source
mkdir -p ../petalinux_kernel/linux-4.14
tar -zvxf linux-4.14.0-v2018.3.tar.gz -C ../petalinux_kernel/linux-4.14

1.3 导入硬件描述配置

配置 Petalinux 工程的硬件信息,硬件信息目录里只能有一个 hdf 文件
cd linux_sd_hdmi导入硬件描述

petalinux-config --get-hw-description hdf/

导入硬件描述后会自动弹出 menuconfig页面。 

检查串口 

Subsystem AUTO Hardware Settings -> Serial Settings -> FSBL Serial stdin/stdout (ps7_uart_1) 
Subsystem AUTO Hardware Settings -> Ethernet Settings -> Primary Ethernet (ps7_ethernet_0)
Subsystem AUTO Hardware Settings -> SD/SDIO Settings -> Primary SD/SDIO (ps7_sd_0)

配置SD卡

Image Packaging Configuration -> Root filesystem type -> SD card
Image Packaging Configuration  -> Device node of SD device -> /dev/mmcblk0p2

启动

Subsystem AUTO Hardware Settings -> Advanced bootable images storage Settings -> boot image settings -> image storage media (primary sd)
Subsystem AUTO Hardware Settings -> Advanced bootable images storage Settings -> u-boot env partition settings -> image storage media (primary sd)
Subsystem AUTO Hardware Settings -> Advanced bootable images storage Settings -> kernel image settings -> image storage media (primary sd)
Subsystem AUTO Hardware Settings -> Advanced bootable images storage Settings -> jffs2 rootfs image settings -> image storage media (manual)
Subsystem AUTO Hardware Settings -> Advanced bootable images storage Settings -> dtb image settings -> image storage media (from boot image)

之后可以临时退出menuconfig页面了。 

1.4 配置petalinux

 第一次配置输入指令

petalinux-config

第二次如果没修改hdf以及相关配置,输入指令

petalinux-config

第二次配置如果修改了hdf

petalinux-build -x mrproper -f
petalinux-config

第二次配置如果修改了配置:

petalinux-build -x distclean
petalinux-build

内核源码

Linux Components Selection -> linux-kernel -> ext-local-src
Linux Components Selection -> linux-kernel -> External linux-kernel local source settings -> /home/dell/work/mizar/petalinux_kernel/linux-4.14

配置 sstate 高速缓存(不是必须的)

petalinux-config -> Yocto Settings -> Local sstate feeds settings -> local sstate feeds url ->
    -> file:///opt/pkg/petalinux/2018.3/sstate-rel-v2018.3/arm
petalinux-config -> Yocto Settings -> Add pre-mirror url ->
    -> file:///opt/pkg/petalinux/2018.3/sstate-rel-v2018.3/downloads
petalinux-config -> Yocto Settings -> 取消 Enable Network sstate feeds
petalinux-config -> Yocto Settings -> 取消 Enable BB NO NETWORK                # python的一个库需要联网

此时保存配置退出。

1.5 配置内核

petalinux2018.3默认不支持远程中断配置内核,需要修改:

gedit project-spec/meta-user/conf/petalinuxbsp.conf

添加:

OE_TERMINAL = "xterm"

配置指令:

petalinux-config -c kernel

配置 hdmi

(默认已经勾上)Device Drivers -> Graphics support -> <*>Xilinx LCD/HDMI drive
(默认已经勾上)Device Drivers -> Graphics support -> <*>Digilent VGA/HDMI DRM Encoder Driver
(默认已经勾上)Device Drivers -> Common Clock Framework -> <*>Digilent axi_dynclk Driver 按 y

配置 usb gadget

Device Drivers -> USB Support -> <*>USB Gadget Support -> <*> RNDIS
Device Drivers -> USB Support -> <*>USB Gadget Support -> <*> Mass storage
Device Drivers -> USB Support -> <*>USB Gadget Support -> <*> Function filesystem

1.6 配置根文件系统

petalinux-config -c rootfs


添加 python3

Filesystem Packages -> misc -> python -> python3 -> <*>python3

添加 python3-pip,python3-flask

gedit project-spec/meta-user/recipes-core/images/petalinux-image-full.bbappend

添加:

IMAGE_INSTALL_append = "python3-pip"
IMAGE_INSTALL_append = "python3-flask"

配置

petalinux-config -c rootfs
user packages -> python3-pip
user packages -> python3-flask

也可以(不过我用的是上面的方法,未确认下面的带不带flask):

Petalinux Package Groups -> packagegroup-petalinux-python-modules -> <*>packagegroup-petalinux-python-modules

添加 qt (编译时候看到版本是5.9.6)

Petalinux Package Groups -> packagegroup-petalinux-qt -> <*> packagegroup-petalinux-qt
Petalinux Package Groups -> packagegroup-petalinux-qt -> <*>populate_sdk

添加 gcc (怀疑 libatomic在这里,尝试搭建nodejs + vue依赖libatomic)

Petalinux Package Groups -> packagegroup-petalinux-self-hosted -> <*>packagegroup-petalinux-self-hosted

1.7 设备树

gedit project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi

但是无法粘贴。修改为:

/include/ "system-conf.dtsi"

/ {  
    model = "Navigator Development Board"; 
    compatible = "microphase,zynq-7020","xlnx,zynq-7000"; 


    usb_phy0:usb_phy@0{
        compatible = "ulpi-phy";
        #phy-cells = <0>;
        reg = <0xe0002000 0x1000>;
        view-port = <0x170>;
        drv-vbus;
    };

    video_timings {
            timing_4x3_480x272: timing0 {
                clock-frequency = <9000000>;
                hactive = <480>;
                vactive = <272>;
    
                hback-porch = <40>;
                hsync-len = <20>;
                hfront-porch = <5>;
                vback-porch = <8>;
                vsync-len = <3>;
                vfront-porch = <8>;
    
                hsync-active = <0>;
                vsync-active = <0>;
                de-active = <1>;
                pixelclk-active = <0>;
            };

            timing_1920x1080: timing1 {
                    clock-frequency = <148500000>;
                    hactive = <1280>;
                    vactive = <720>;

                    hback-porch = <148>;
                    hsync-len = <44>;
                    hfront-porch = <88>;
                    vback-porch = <36>;
                    vsync-len = <5>;
                    vfront-porch = <4>;

                    hsync-active = <0>;
                    vsync-active = <0>;
                    de-active = <1>;
                    pixelclk-active = <1>;
            };
    };       
};

&usb0{
    dr_mode = "host";
    usb-phy = <&usb_phy0>;
};

&axi_dynclk_0 {
    compatible = "digilent,axi-dynclk";
    clocks = <&clkc 15>;
    #clock-cells = <0>;
};

&v_tc_0 {
    compatible = "xlnx,v-tc-5.01.a";
};

&amba_pl {
    xlnx_vdma_hdmi {
        compatible = "xilinx,vdmafb";
        status = "okay";

        xlnx,vtc = <&v_tc_0>;
        clocks = <&axi_dynclk_0>;
        clock-names = "hdmi_pclk";
        dmas = <&axi_vdma_0 0>;
        dma-names = "hdmi_vdma";

        is-hdmi = <0x1>;

        display-timings = <&timing_1920x1080>;
        xlnx,pixel-format = "bgr888";
    };
};

1.7 编译工程

第一次编译

petalinux-build

如修改配置编译:

petalinux-build -x distclean
petalinux-build

1.8 打包boot.bin

petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --u-boot --fpga --force

1.9 编译出sdk

petalinux-build --sdk
#petalinux-package --sysroot        # 这个是安装指令。

失败
| Cloning into '/home/dell/work/mizar/linux_sd_adda/build/tmp/work/x86_64-nativesdk-petalinux-linux/nativesdk-qemu-xilinx/v2.11.0-xilinx-v2018.3+gitAUTOINC+f70bd86859-r0/git/capstone'...
| fatal: unable to connect to git.qemu.org:
| git.qemu.org[0: 20.218.253.93]: errno=Connection timed out

解决办法:
修改文件:
/home/dell/work/mizar/linux_sd_adda/build/tmp/work/x86_64-nativesdk-petalinux-linux/nativesdk-qemu-xilinx/v2.11.0-xilinx-v2018.3+gitAUTOINC+f70bd86859-r0/git/.git/config

url = git://git.qemu.org/capstone.git 
url = git://git.qemu.org/keycodemapdb.git


修改为: 

url = https://gitlab.com/qemu-project/capstone.git
url = https://gitlab.com/qemu-project/keycodemapdb.git

然后命令行模式进入目录

cd /home/dell/work/mizar/linux_sd_adda/build/tmp/work/x86_64-nativesdk-petalinux-linux/nativesdk-qemu-xilinx/v2.11.0-xilinx-v2018.3+gitAUTOINC+f70bd86859-r0/git

执行命令

git submodule update

之后,重新在工程目录下执行petalinux-build --sdk即可

参考:petalinux2019.1编译sdk失败的解决办法,https://blog.csdn.net/b154265423/article/details/131976182

2. 制作SD卡文件系统

2.1 分区

ubuntu18 -> disks -> 给8GB TF卡重新分区
-> + -> 5000MB -> Next
    -> Volume Name:     FAT
    -> type:            FAT
-> + -> 剩余 2858MB -> Next
    -> Volume Name:     EXT
    -> type:            ext4
-> 弹出TF卡 -> 断开连接 再次连接到虚拟机

2.2 EXT分区

sudo  tar  xzvf  rootfs.tar.gz  -C  /media/xxjianvm/EXT
sudo sync

2.3 FAT分区

直接拷贝
BOOT.bin
image.ub
到FAT分区


2.4 启动测试

2.4.1 启动

拨码开关拨到SD模式。
开关都往下拨。

2.4.2 默认登录账号密码

root/root
 

下篇:

petalinux_zynq7 C语言驱动DAC以及ADC模块之三:C语言API的实现-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_27158179/article/details/136238093

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

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

相关文章

Flask——基于python完整实现客户端和服务器后端流式请求及响应

文章目录 本地客户端Flask服务器后端客户端/服务器端流式接收[打字机]效果 看了很多相关博客&#xff0c;但是都没有本地客户端和服务器后端的完整代码示例&#xff0c;有的也只说了如何流式获取后端结果&#xff0c;基本没有讲两端如何同时实现流式输入输出&#xff0c;特此整…

统计图扇形图绘制方法

统计图扇形图绘制方法 常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图。 前几类图比较容易绘制&#xff0c;饼图环形图绘制较难。 还有一种扇形图的绘制也较难&#xff0c;扇形图的各个变类&#xff0c;饼图、环形图、半圆图、玫瑰图等都是统计图扇形的变…

k8s-heml管理 17

Helm是Kubernetes 应用的包管理工具&#xff0c;主要用来管理 Charts&#xff0c;类似Linux系统的 yum。Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata&#xff0c;以便于应用程序的分发。 对于应用…

循环购模式:引领电商新时代,重塑消费者价值

在电子商务的浪潮中&#xff0c;循环购模式以其独特的视角和创新的机制&#xff0c;正引领着电商行业进入一个全新的时代。这种模式不仅重塑了消费者的购物体验&#xff0c;更让消费者在享受购物乐趣的同时&#xff0c;实现了个人财富的增值。 一、循环购模式&#xff1a;重新定…

TT语音×个推:流失预测准确率超90%,撬动存量增长个推GeTui 2024-02-23 09:50 浙江

当移动互联网进入存量时代&#xff0c;如何更高效地进行用户全生命周期管理、提升用户生命周期价值&#xff0c;变得尤为重要。TT语音是国内领先的兴趣社交平台&#xff0c;累计注册用户数高达数亿。为了进一步盘活存量用户价值&#xff0c;TT语音从2019年起便与个推合作&#…

Element Plus 的下拉选择器el-option的字体全部蓝色,全部是选中状态

问题 原因 参考官方&#xff1a; Select 选择器 | Element Plus 解决方案1&#xff1a; 给外层el-select增加一个value-key指定值: value-key"ID" <el-select value-key"ID"ref"productName"v-model"selectedProduct.GOODS_DESC"…

eCharts图表点击事件(柱形、label),获取选择项的下标及值

获取选则项的值的话&#xff0c;打印params就能找到了&#xff0c;故主要说明找到对应下标的情况。 柱形点击事件 简单代码 this.myChart echarts.init(this.$refs.chartbox1); this.myChart.off("click"); this.myChart.on("click", (params) > {c…

4.4 MySQL存储1

1、使用前提 安装MySQL数据库&#xff0c;安装pymysql第三方库。 2、使用连接数据库最初步骤 (1) 声明一个连接对象。使用connect()方法声明一个连接对象conn&#xff0c;参数为数据库的一些信息。依次为主机名、用户名、密码、端口号&#xff1b; (2) 获得游标。使用cursor…

intellij idea创建spring项目时没有java 8

一、 引入 当我们用file–》new–》project创建一个项目时&#xff0c;会遇到下面的情况(如图二所示&#xff09;&#xff0c; 图一 图二 java版本仅有21和17可选&#xff0c;而国内大部分还在用java 8 版本&#xff0c;会导致项目无法启动。 二、解决办法 点击serverUrl进…

mysql-多表查询-外连接

一、外连接查询语法 &#xff08;1&#xff09;左外连接 select 所要查询的内容 from 左表 left outer join 右表 on 条件; &#xff08;2&#xff09;右外连接 select 所要查询的内容 from 左表 right outer join 右表 on 条件; 二、示例 用以下两张表示例 左外连接 右外…

3.测试教程 - 基础篇

文章目录 软件测试的生命周期软件测试&软件开发生命周期如何描述一个bug如何定义bug的级别bug的生命周期如何开始第一次测试测试的执行和BUG管理产生争执怎么办&#xff08;处理人际关系&#xff09; 大家好&#xff0c;我是晓星航。今天为大家带来的是 测试基础 相关的讲解…

戏曲文化苑|戏曲文化苑小程序|基于微信小程序的戏曲文化苑系统设计与实现(源码+数据库+文档)

戏曲文化苑小程序目录 目录 基于微信小程序的戏曲文化苑系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、微信小程序前台 2、管理员后台 &#xff08;1&#xff09;戏曲管理 &#xff08;2&#xff09;公告信息管理 &#xff08;3&#xff09;公告类型管理…

开源免费大模型框架自己训练可根据关键词提示绘图的软件

开源免费大模型框架自己训练可根据关键词提示绘图的软件!大家都知道&#xff0c;市面上那些可以支持这种业务的大模型都是收费的&#xff0c;如果你是一个资深的大模型爱好者&#xff0c;并且有自己的打算和预算&#xff0c;想自己训练一套属于自己的大模型软件来完成日常的绘图…

什么是MapReduce

1.1 MapReduce到底是什么 Hadoop MapReduce是一个软件框架&#xff0c;基于该框架能够容易地编写应用程序&#xff0c;这些应用程序能够运行在由上千个商用机器组成的大集群上&#xff0c;并以一种可靠的&#xff0c;具有容错能力的方式并行地处理上TB级别的海量数据集。这个定…

编程学习线上提问现场解答流程,零基础学编程从入门到精通

编程学习线上提问现场解答流程 一、前言 之前给大家分享的一款中文编程工具&#xff0c;越来越多的学员使用这个工具学习编程。 在学习中有疑难问题寻求解答流程 1、可以在本平台留言或发私信联系老师 2、可以在群提问及时解答问题 3、通过线上会议的方式&#xff0c;电脑…

2024年必备原型设计工具盘点,助你成为设计大神

原型设计是 UI/UX 设计中至关重要的一步&#xff0c;就像用户体验中的其他环节一样&#xff0c;有无数的原型工具可以帮助你完成原型设计。 如果市场上有太多的原型设计工具让你不知所措&#xff0c;不知道选择哪一个&#xff0c;恭喜你&#xff0c;这个原型设计工具的集合是为…

go-zero微服务入门教程

go-zero微服务入门教程 本教程主要模拟实现用户注册和用户信息查询两个接口。 准备工作 安装基础环境 安装etcd&#xff0c; mysql&#xff0c;redis&#xff0c;建议采用docker安装。 MySQL安装好之后&#xff0c;新建数据库dsms_admin&#xff0c;并新建表sys_user&#…

openEuler安装MySQL客户端、openEuler安装MySQL-client、openEuler部署MySQL-client

MySQL客户端下载链接&#xff1a;https://downloads.mysql.com/archives/community/ mysql-community-client-5.7.30-1.el7.x86_64.rpm mysql-community-common-5.7.30-1.el7.x86_64.rpm mysql-community-libs-5.7.30-1.el7.x86_64.rpm 3个必选 8.0.22以上的版本是4个&…

个人博客系列-项目部署-nginx(3)

使用Nginx uwsgi进行部署django项目 一. 检查项目是否可以运行 启动项目 python manage.py runserver 0.0.0.0:8099输入ip:8099 查看启动页面 出现上述页面表示运行成功 二. 安装uwsgi并配置 2.1 下载uwsgi pip install uwsgi新建文件test.py写入内容&#xff0c;测试一…

Python算法题集_图论(课程表)

Python算法题集_课程表 题207&#xff1a;课程表1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【循环递归全算】2) 改进版一【循环递归缓存】3) 改进版二【循环递归缓存反向计算】4) 改进版三【迭代剥离计数器检测】 4. 最优算法5. 相关资源 本…