问题标签 [petalinux]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
799 浏览

linux - PostgreSQL 服务器的 Yocto 配方

我正在使用 Petalinux 工具生成 Linux 映像。我已经为 PostgreSQL 添加了一个现有的配方。

如何更改配方以使数据位置不在 /var/lib/postgresql 中,而是在 /var/lib/persist/postgresql 中?

'/var/lib' 在配方中包含的 4 个脚本中被引用。

0 投票
1 回答
101 浏览

opencv - 对预编译的 opencv 2.4 的未定义引用

我正在尝试构建一个使用我自己编译的 opencv 库的 cpp 应用程序。

这是我的 Makefile:

lib文件示例:

在我的头文件中,我包括:

当我运行petalinux-build -c appnamemake appname我得到:

知道为什么吗?

我目前正在从 Petalinux 2015 迁移到 2018,它在 2015 年运行良好。

0 投票
0 回答
120 浏览

c - 在 Petalinux 2017.4 上使用 libsodium

我无法弄清楚如何在嵌入式 Petalinux 设备(特别是 Arty-Z7-10)上使用 libsodium。

我按照此网页中“使用 PetaLinux 工具从元示例构建配方”下的说明将“libsodium”添加到相关构建文件中。当我构建项目时,我看到了包含“libsodium”的编译消息(似乎使用了 的配方/opt/pkg/petalinux/components/yocto/source/arm/layers/meta-oe/recipes-support/libsodium/libsodium_1.0.11.bb)。我验证了嵌入式设备包含一个 libsodium 库,但它不包含库头文件。

但是,我不确定如何在 Petalinux 中包含和使用该库。#include <sodium.h>由于编译器无法找到头文件,直接写入导致编译错误。构建过程似乎忽略了我创建的任何 libsodium 项目petalinux-create -t apps -n libsodium,因此无法捆绑我自己的版本而不是使用系统配方。如何在 Petalinux 上包含和使用该库?

如果您想在本地环境中进行设置,则代码的基础来自https://github.com/mitre-cyber-academy/2019-ectf-insecure-example,我正在尝试#include <sodium.h>Arty-Z7-10/components/ext_sources/u-boot-ectf/common/mesh.c文件中。

0 投票
1 回答
790 浏览

linux - 如何从 Linux 设备驱动程序强制刷新进程的缓存?

我正在从事一个研究项目,该项目需要我从自定义硬件执行内存捕获。我正在使用 Zedboard SoC(带有 FPGA 结构的双核 ARM Cortex-A9)。我设计了一个设备驱动程序,允许我执行虚拟内存捕获和物理内存捕获(使用控制Xilinx AXI DMA IP的 AXI4-Lite 外设)。

我的目标是捕获所有映射的页面,所以我检查 /proc/pid/maps 的映射区域,然后从 /proc/pid/pagemaps 获取 PFN,将物理地址传递给我的设备驱动程序,然后将它们传递给我的自定义硬件(它调用 Xilinx AXI DMA 从物理内存中获取内容)。

注意:我使用的是 Xilinx 的 PetaLinux 发行版,它基于 Linux 4.14 版构建。

我的设备驱动程序通过一系列 IOCTL 调用实现以下过程:

  1. 停止目标进程。
  2. 执行虚拟内存捕获(使用access_process_vm()函数)。
  3. 刷新缓存(使用flush_user_range()函数)。
  4. 执行物理内存捕获。
  5. 恢复目标进程。

然而,我注意到的是虚拟内存捕获和物理内存捕获在 [heap] 部分(这是延伸超过一页的第一部分)中不同。第一页匹配,但其他页面都没有接近。[stack] 部分根本不匹配。我应该注意,对于前两个内存部分,.text 和 .rodata,捕获完全匹配。现在的结论是,在运行时更改的数据在虚拟和物理捕获之间匹配,而在运行时更改的数据匹配。

所以这让我想知道:我是否使用正确的函数来确保缓存和 RAM 之间的一致性?如果不是,用于强制将缓存刷新到 RAM 的正确功能是什么?RAM 中的数据必须在目标进程停止时是最新的,因为我无法从自定义硬件访问缓存。

编辑1:关于这个问题被标记为这个问题的可能重复我正在使用接受的答案中的一个函数来启动缓存刷新。但是,从我的角度来看,它似乎无法正常工作,因为如果发生缓存刷新,物理内存与虚拟内存不匹配。

0 投票
2 回答
2545 浏览

yocto - 获取包时如何将机器设置为 Yocto 的镜像服务器?

当使用 Petalinux(Yocto 的一种)构建项目时,它需要 Internet 从服务器(git serve 或其他)获取包。

我的工作机器没有访问Internet的权限(只有局域网),所以我打算在这个局域网中设置一台可以访问Internet的机器,成为Yocto的镜像服务器。

有没有人有任何想法设置这样的服务器?请帮忙。

0 投票
1 回答
898 浏览

c++ - 如何使用 Valgrind 确定“仍然可用”内存泄漏的来源?

我有一个我写的程序,它的内存占用随着时间的推移而增长。它最终会消耗所有可用的系统内存,然后使系统崩溃。

我试图确定似乎是内存泄漏的来源。我已经在代码上运行了 Valgrind。它报告没有明确或间接丢失的记忆。它确实列出了可能丢失的记忆,但没有很清楚。我可以就如何追踪这个问题提出一些建议。

Valgrind 被称为:

valgrind --child-silent-after-fork=yes --smc-check=stack --tool=memcheck --gen-suppressions=all --track-origins=yes --leak-check=full --num-callers=500 --leak-check=full --show-leak-kinds=all -v --show-reachable=yes /opt/fsoapp/bin/fsoapp

0 投票
2 回答
612 浏览

c - 读取写入内存空间

我正在尝试将有符号双数写入内存并回读相同的数字,回读是多余的,因为它只是在触发 PL(可编程逻辑)FPGA Fabric 访问此数据之前验证内存中是否存在正确的数据并执行一项任务。

我将文件读入双精度(联合的一部分),然后通过无符号长整数(联合的一部分)写入内存。但是写入内存之前和我读出之后的数据是错误的,它只是最后一个字节。(详见代码和注释)

我在写入内存或从内存读取时犯了什么错误,我希望将这个完整的 64 位写入内存。或者我应该手动将每个字节写入一个内存字节,内存字(32位)不是可寻址的吗?或者如果不是,我可以让它成为一个可寻址的词吗?

此外,这是在 Zynq 和 Petalinux 上完成的

请帮忙 :)

0 投票
1 回答
3428 浏览

linux-kernel - Linux设备树:如何解析包含单元列表的属性

我正在为嵌入式 Linux (PetaLinux) 中的数据采集开发 Linux 设备驱动程序。

为了避免在内核模块中硬编码硬件细节,设备树中的一个条目有一个单元列表,描述了通过 SPI 访问的不同 ADC 芯片的继电器映射,如下所示:

实例化设备时,我想从属性“继电器”中读取值并将它们保存在内核模块的表中。

但是,我找不到合适的功能来做到这一点。

据我所见of_property_read_*_array,可以读取包含单个单元格的属性的数组。of_for_each*宏可以迭代一个属性的多个值,只要它们是 phandles、u32 或字符串。

如果可能的话,有人可以建议阅读上面显示的单元格列表的正确方法是什么吗?

感谢您的帮助。

0 投票
0 回答
230 浏览

boot - 在 ULTRA 96 上的 zynq ultrascale+ mpsoc zu3eg 上启动失败

我按照本教程启动 ULTRA 96 :

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841783/Building+Xen+Hypervisor+with+Petalinux+2018.1

我正在使用 petalinux-v2018.2-final 和 xilinx-ultra96-reva-v2018.2-final.bsp

我自己构建了项目,然后将必要的文件复制到 SD 卡 (BOOT.bin,xen.ub.system.dtb,image,rootfs.cpio.gz.u-boot) 中的引导分区和 rootfs 文件(从 rootfs 中提取.cpio) 到 SD 卡的根分区。我什至尝试从项目中的预构建图像中复制相同的文件,但是当我进入 sudo 屏幕时,卡根本没有响应......甚至当我尝试使用 trace32 时。

请帮助我被困在这里,谢谢你的时间!

更新:当我复制预建图像并通过显示端口将板连接到屏幕时,系统启动并打开基于 Linux 内核的系统,但是当我搜索它是否是 xen 的 Dom 0 时,我没有找到任何东西(当我输入 dmesg | grep xen 它什么也没显示)。我的问题是这个系统是 xen 的 Dom 0 还是它只是我板上的一个 linux 映像,谢谢 :)

0 投票
0 回答
1034 浏览

c - Kernel Oops 96000021 [#1] SMP

I'm writing a driver for petalinux, but I've some problems with an v4l2 ioctl function, in particolar with ioctl(fd, VIDIOC_STREAMON, &type). When I call streamon it sometimes goes correctly other times I get this error:

I tried to call VIDIOC_STREAMON four times:

  • first: error
  • second: ok
  • third: ok
  • fourth: error

If I test again I get a different result. Is the error related to something in my driver or to the kernel ?

This is my streamon function, but I get the error also when all the code inside vidioc_streamon is commented

During the loading of the module I get this warning