我正在使用通过 LVDS 连接到 i.MX6 Quad 的 CSI 接口的 Aptina MT9V024 传感器。我在快照模式下运行传感器,即使用外部信号触发/开始图像捕获。
在软件方面,我正在运行 Yocto Linux 和一个用 C 编写的应用程序,它应该检索捕获的图像数据。
它是这样工作的(部分代码,循环运行):
// wait until camers is triggered
ret = select(video_fd + 1, &fds, NULL, NULL, &tv);
// dq buffer / read image data and save to disk
ret = xioctl(video_fd, VIDIOC_DQBUF, &v4l2buf);
img->imageData = buffers[v4l2buf.index].start;
cvSaveImage(filename, img, 0);
// enqueue another buffer to capture next frame
ret = xioctl(video_fd, VIDIOC_QBUF, &v4l2buf);
Run Code Online (Sandbox Code Playgroud)
调用select(...)
阻塞直到新帧可用,即相机被触发。
我的问题:检索到的图像是上一次捕获的图像。在 init 期间,我请求两个缓冲区,因为传感器不会从更少开始。但是在 select(...) 返回后,我不能 DQBUF …
目标:模仿Qemu特别支持的"sabrelite:飞思卡尔i.MX6 Quad SABRE Lite Board(Cortex A9)"(做'qemu-system-arm -M?'它出现).
Qemu ver:2.10.1(主持人:fedora-27).
我已成功交叉编译并构建了一个4.1.46 Linux内核(使用了imx_v6_v7_defconfig配置文件)以及一个简单的"骨架"根文件系统(基于busybox).(仅供参考,我对ARM Cortex-A9 Versatile Express平台有类似的工作设置 - 我使用自己的家用旋转嵌入式Linux系统SEALS进行此操作.
看看类似主板使用的U-Boot配置文件,我想用'root =/dev/mmcblk0p0'作为内核的root = param.所以,为了尝试一下,我按如下方式运行qemu(pl水平滚动以查看):
qemu-system-arm -m 512 -M sabrelite -kernel zImage -drive file=rfs.img,format=raw -append "console=ttymxc0 rootfstype=ext4 root=/dev/mmcblk0p0 rw rootwait init=/sbin/init " -nographic -dtb imx6dl-sabresd.dtb
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.1.46 (kai@klaptop) (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29) ) #2 SMP Mon Nov 27 17:16:22 IST 2017
[ 0.000000] …
Run Code Online (Sandbox Code Playgroud) 我有一个定制的i.MX6板,它有WM8985音频编解码器.我在sound/soc/codecs文件夹中有编解码器驱动程序wm8985.我正在开发机器级驱动程序声音/ soc/fsl/imx-wm8985.c
我将wm8962代码作为参考.我无法理解linux音频子系统中的音频路由概念.
我已将设备树修改为以下wm8962设备树.
sound {
compatible = "fsl,imx6q-sabresd-wm8985",
"fsl,imx-audio-wm8985";
model = "wm8985-audio";
cpu-dai = <&ssi2>;
audio-codec = <&codec>;
audio-routing =
"Headphone Jack", "HPL",
"Headphone Jack", "HPR",
"Ext Spk", "SPKL",
"Ext Spk", "SPKR",
"Mic Bias", "AMIC",
"RIN", "Mic Bias",
"DMIC", "Mic Bias",
"DMICDAT", "DMIC";
mux-int-port = <2>;
mux-ext-port = <3>;
hp-det-gpios = <&gpio7 8 1>; /* same as sabre */
/*mic-det-gpios = <&gpio1 23 1>;*/ /* move to enet_ref_clk */
};
Run Code Online (Sandbox Code Playgroud)
它是否正确.能帮助我理解源和接收器的含义吗?如何制作路线..
运行aplay,我收到由于错误的路由而发生的读/写错误.
我正在使用 yocto 为 NXP 板构建图像。我可以看到不同的发行版说“x11、wayland、fb、directfb”等。
在这些发行版的 conf 文件中,我可以看到其他发行版的“DISTRO_FEATURES_remove”。在 x11 发行版 conf 文件中说“DISTRO_FEATURES_remove="wayland"”在那里。
我需要检查每个发行版提供的功能。假设我需要检查 Wayland 和 x11 发行版提供的功能。
您能否指导在 yocto 源文件夹中检查这些发行版提供的功能。
我正在使用 yocto Rocko / Linux 4.14.24 开发 IMX6QP,并且我正在尝试使用 GPU。
我的 yocto 配置文件:
MACHINE ??= 'imx6qp-tx6-emmc'
DL_DIR ?= "${BSPDIR}/downloads"
SSTATE_DIR ?= "${BSPDIR}/sstate-cache"
DISTRO ?= 'karo-minimal'
PACKAGE_CLASSES ?= "package_deb"
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
VIRTUAL-RUNTIME_init_manager = "sysvinit"
USER_CLASSES ?= "buildstats image-mklibs image-prelink"
PATCHRESOLVE = "noop"
BB_DISKMON_DIRS ??= "\
STOPTASKS,${TMPDIR},1G,100K \
STOPTASKS,${DL_DIR},1G,100K \
STOPTASKS,${SSTATE_DIR},1G,100K \
STOPTASKS,/tmp,100M,100K \
ABORT,${TMPDIR},100M,1K \
ABORT,${DL_DIR},100M,1K \
ABORT,${SSTATE_DIR},100M,1K \
ABORT,/tmp,10M,1K"
PACKAGECONFIG_append_pn-qemu-native = " sdl"
PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
CONF_VERSION = "1"
# EXTRA_IMAGE_FEATURES += "read-only-rootfs"
CORE_IMAGE_EXTRA_INSTALL += "openssh \
openssh-sftp-server iproute2 …
Run Code Online (Sandbox Code Playgroud) 我正在为特定的硬件构建yocto(来自nxp的imx6 saber-sdb).我想从构建过程中删除特定的(铬)包.因此铬包不会被下载,编译,也不会成为目标图像的一部分.
有人可以建议我怎么做吗?
谢谢和问候,吉里
使用基于 Qt 5.7.0 的 Qt Creator 4.0.2,我的应用程序名称是test
主板:带有 buildroot 的 i.M6Q (Qt 5.9)
EGL library doesn't support Emulator extensions
Aborted
Application finished with exit code 134.
Run Code Online (Sandbox Code Playgroud)
但我可以使用 ./test 在板上运行 qt 应用程序,并且它显示正常
The GDB process terminated unexpectedly (exit code 1)
Run Code Online (Sandbox Code Playgroud)
如何修复这些错误?
test.pro
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = test
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
target.path = /root/test
INSTALLS …
Run Code Online (Sandbox Code Playgroud)我需要在Yocto构建的目标操作系统上运行脚本.
此脚本需要作为安装的一部分运行,因此必须只运行一次(在整个OS安装之后或首次启动时).它不能在主机系统上运行,因为它取决于仅存在于目标上的硬件IO.
另一个小的约束是rootfs是以只读方式挂载的,但我想这可以通过将脚本重新挂载为rw并在执行后再次重新安装为r或沿着这些行的某些内容来避免.
任何帮助表示赞赏.
我有一个基于https://github.com/jumpnow/meta-wandboard的自定义机器层.
我已将内核升级到4.8.6,并希望将X11添加到图像中.我正在修改图像配方(console-image.bb
).由于wandboard基于i.MX6,我想要包含xf86-video-imxfb-vivante
来自的包meta-fsl-arm
.然而,它无法抱怨无法建立kernel-module-imx-gpu-viv
.我相信这是因为xf86-video-imxfb-vivante
DEPENDS imx-gpu-viv
反过来RDEPENDS kernel-module-imx-gpu-viv
.
我意识到这些依赖关系是使用meta-fsl-arm BSP和vanilla Poky发行版创建的.但是这些东西对于wandboard来说已经过时了,因此我使用了具有现代内核的自定义机器层.内核配置为包含Vivante DRM模块,我真的不希望kernel-module-imx-gpu-viv
构建包.
有没有办法将其从RDEPENDS中排除?我可以以某种方式向构建系统发誓,我会自己处理这种特定的运行时依赖吗?
我PNBLACKLIST[kernel-module-imx-gpu-viv]
在local.conf中尝试将'kernel-module-imx-gpu-viv'设置列入黑名单,但这只是解决方案的一部分.它有助于避免构建失败,但打包过程仍然失败.
OV5640 相机的Linux 驱动程序提供了有限的功能。
static struct i2c_driver ov5640_i2c_driver = {
.driver = {
.name = "ov5640",
.of_match_table = ov5640_dt_ids,
},
.id_table = ov5640_id,
.probe = ov5640_probe,
.remove = ov5640_remove,
};
Run Code Online (Sandbox Code Playgroud)
这些功能是name
、probe
和remove
。
我对驱动程序不是很熟悉,但我找不到渲染像素的驱动程序的任何部分,因此我可以将它们存储到数组中。我也找不到任何用于读取像素的虚拟内存地址。
捕获的图像数据传输发生在代码的哪一部分?我正在寻找两个位置:一个在驱动程序中,一个在调用驱动程序的更高级别。
我正在尝试使用 Qemu模拟reMarkable 平板电脑,以便为其创建合适的开发环境,而不是交叉编译并发送到硬件设备。
该固件闪光回购包含了根文件系统,内核,DTB和u-boot的文件。我已经.img
从 rootfs创建了一个文件,以便使用以下命令在 Qemu 中启动它:
qemu-system-arm \
-M sabrelite \
-bios "files/u-boot.imx" \
-kernel "zImage" \
-append "console=ttymxc0 rootfstype=ext4 root=/dev/mmcblk1p2 rw rootwait init=/bin/bash loglevel=8 bootmem-debug earlyprintk" \
-dtb "zero-gravitas.dtb" \
-drive file="floppy.img",format=raw,id=mmcblk1p2 \
-device sd-card,drive=mmcblk1p2
Run Code Online (Sandbox Code Playgroud)
但是内核似乎没有启动,因为无论是否提供floppy.img
文件(驱动器+设备),我都有相同的日志。启动循环出现此错误:
[ 0.713093] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 19, base_baud = 5000000) is a IMX
[ 0.732268] console [ttymxc0] enabled
[ 0.736333] phy index low: 1, phy index high: 2
[ …
Run Code Online (Sandbox Code Playgroud) 内核模块名称 galcore.ko 使我的 imx6slevk 板在启动时挂起。该文件的路径是: /lib/modules/4.9.88-imx_4.9.88_2.0.0_ga+g5e23f9d61147/extra/galcore.ko 手动删除此 .ko 文件并刷新 rootfs 板可以正常启动。我想修改 yyocto 源以防止自动加载此 .ko 文件。
我尝试过添加
PACKAGE_EXCLUDE = "imx-gpu-viv"
Run Code Online (Sandbox Code Playgroud)
并且
IMAGE_INSTALL_remove = "imx-gpu-viv"
Run Code Online (Sandbox Code Playgroud)
进入我的 fsl-image-validation-qt5.bb 文件,但它们都没有任何效果。
这是用于自动加载 galcore 的 bb 文件
inherit module
require recipes-kernel/linux/linux-imx-src.inc
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
EXTRA_OEMAKE += "CONFIG_MXC_GPU_VIV=m"
KERNEL_MODULE_AUTOLOAD = ""
Run Code Online (Sandbox Code Playgroud)
如果我在上面的 OEMAKE 路径中给出“n”,我会收到一条错误消息:
ERROR: kernel-module-imx-gpu-viv-6.2.4.p1.2-r0 do_package: QA Issue: kernel-module-imx-gpu-viv: Files/directories were installed but not shipped in any package:
/lib
/lib/modules
/lib/modules/4.9.88-imx_4.9.88_2.0.0_ga+g5e23f9d61147
/lib/modules/4.9.88-imx_4.9.88_2.0.0_ga+g5e23f9d61147/extra
Please set FILES such that these items are packaged. Alternatively if they are unneeded, …
Run Code Online (Sandbox Code Playgroud)