大家好,
我们有一个基于 imx8mp 的定制板。
我尝试按照以下文档构建最新的 Yocto(Yocto 版本:Kirkstone,Linux 内核版本:5.15):
我使用以下参数配置了 Yocto:
Distro:
fsl-imx-xwayland
Machine:
imx8mp-lpddr4-evk
Image:
imx-image-full
我能够成功构建图像。
我没有对 SDK 进行任何更改,并为 imx8mp evk 生成了默认图像。
然后我尝试通过运行 gstreamer 来评估 VPU,并且能够毫无问题地播放 1080p 视频。
但系统在播放完成后死机。
请找到以下相同的日志。
root@imx8mp:~# gst-pl ay -1.0 /sample_video.MOV
按“k”查看键盘快捷键列表。
正在播放 /sample_video.MOV
预滚动...
====== AIUR:4.7.1 构建于 2022 年 7 月 19 日 06:15:03。======
核心:MPEG4PARSER_06.20.06 构建于 2022 年 5 月 7 日 07:52:31
文件:/usr/lib/imx-mm/parser/lib_mp4_parser_arm_elinux.so.3.2
---------- --------------
Track 00 [audio_0] Enabled
Dura
tion: 0:00:16.904126000
Language: und
Mime:
audio/mpeg, mpegversion=(int)4, channels=(int)2, rate =(int)44100,比特率=(int)0,stream-format=(string)raw,codec_data=(buffer)1210
---------------------- --
====== BEEP:4.7.1 build on Jul[22.313492] remoteproc remoteproc0:启动 imx-dsp-rproc
19 2022 06:15:03。======
核心:DSP 解码器包装器构建于 2022 年 5 月 19 日 08:49:06
文件:/usr/lib/imx-mm/audio-codec/wrap/lib_dsp_wrap_arm_elinux.so
[22.333189] remoteproc remoteproc0:启动固件映像imx/dsp/hifi4.bin,尺寸804421 [ 22.344940
] remoteproc0#vdev0buffer:分配的保留存储器节点vdev0buffer@94300000
[22.353798 ] remoteproc0#vdev0buffer:已注册 virtio0(类型 7)[22.366735] virtio_rpmsg_bus virtio0:创建通道 rpmsg-raw addr 0x2
[22.372792]remoteproc remoteproc0:远程处理器 imx-dsp-rproc 现已启动
音频设备就绪
----------------------
曲目 01 [video_0] 启用
持续时间: 0:00:16.850000000
语言: 和
Mime:
video/x-h264, parsed=(boolean)true, alignment=(string)au, stream-format=(string)avc, width=(int)1920, height=( int)1080, framerate=(fraction)60/1, codec_data=(buffer)0164002affe100102764002aac56c0780227e59a8080808101000428ee3cb0fdf8f800
----------------------
曲目 02 [字幕]:已禁用
编解码器:0,SubCodec:0
----------------------
轨道 03 [字幕]:已禁用
编解码器:0,SubCodec:0
----- ------------------
曲目 04 [字幕]:已禁用
编解码器:0,子编解码器:0
----------------------
====== V4L2DEC:1.20.0 构建于 2022 年 7 月 28 日 06:57:16。======
重新分配延迟...
===!!!当前 pulsesink 设备是 alsa_output.platform-sound-xcvr.iec958-stereo !!!===
重新分配延迟...
0:00:00.0 / 0:00:16.8
0:00:16.9 / 0:00:16.8
播放列表结束。
总显示帧 (1011),播放 (0:00:16.905064000),fps (59.805)。
[39.566308] remoteproc remoteproc0:停止远程处理器 imx-dsp-rproc
[60.574505] rcu:信息:rcu_preempt 检测到 CPU/任务停顿:
[60.580627] rcu:3-...0:(0 勾选此 GP)空闲 = 0c1 /1/0x4000000000000000 softirq=6730/6732 fqs=2571
[60.589853](由 2 检测到,t=5254 jiffies,g=8953,q=5495)[
60.595514] CPU 3 的任务转储:
[60.598744] 任务:vsdaemon 状态: R 运行任务堆栈:0 pid:836 ppid:2 标志:0x00000202
[60.608666] 调用跟踪:
[60.611109] __switch_to+0x108/0x160
[ 60.614698] genpd_runtime_suspend+0x118/0x2c0
[ 60.619147] __rpm_callback+0x48/0x170
[ 60.622898] rpm_callback+0x6c/0x80
[ 60.626388] rpm_suspend+0x100/0x554
[ 60.629965] rpm_idle+0xf4/0x154
[ 60.633194] __pm_runtime_idle+0x60/0xb0
[ 60.637120 ] hantrodec_release+0x1c8/0x240
[ 60.641221] __fput+0x70/0x234
[ 60.644280] ____fput+0x14/0x20
[ 60.647423] task_work_run+0x84/0x17c
[ 60.651088] do_notify_resume+0x208/0x12ec
[ 60.655186] el0_svc+0x6c/0x80
[ 60.658246] el0t_64_sync_handler +0xa8/0x130
[60.662518] el0t_64_sync+0x1a0/0x1a4
[123.683477] rcu:信息:rcu_preempt 检测到 CPU/任务停顿:
[ 123.689590] rcu: 3-...0: (0 ticks this GP) idle=0c1/1/0x4000000000000000 softirq=6730/6732 fqs=10343 [ 123.698903](由 1 检测到,t=21032 jiffies,g=8953
, q=20683)
[123.704737]CPU 3 的任务转储:
[123.707963]任务:vsidaemon 状态:R 运行任务堆栈:0 pid:836 ppid:2 标志:0x00000202 [123.717884]
调用跟踪:
[123.720329]__switch_to+0x1608/0x1608/0x1608/0x1608
[ 123.723916] genpd_runtime_suspend+0x118/0x2c0
[ 123.728367] __rpm_callback+0x48/0x170
[ 123.732122] rpm_callback+0x6c/0x80
[ 123.735613] rpm_suspend+0x100/0x554
[ 123.739192] rpm_idle+0xf4/0x154
[ 123.742421] __pm_runtime_idle+0x60/0xb0
[ 123.746345 ] hantrodec_release+0x1c8/0x240
[ 123.750445] __fput+0x70/0x234
[ 123.753503] ____fput+0x14/0x20
[ 123.756646] task_work_run+0x84/0x17c
[ 123.760310] do_notify_resume+0x208/0x12ec
[ 123.764410] el0_svc+0x6c/0x80
[ 123.767468] el0t_64_sync_handler+0xa8/0x130
[ 123.771740] el0t_64_sync+0x1a0/0x1a4
[ 166.793653 ] rcu: INFO: rcu_preempt 检测到 CPU/任务加速停顿:{ 3-... } 5581 jiffies s: 157 root: 0x8/。
[166.804366] rcu:阻塞 rcu_node 结构(内部 RCU 调试):
[ 166.810666] CPU 3 的任务转储:
[ 166.813912] 任务:vsidaemon 状态:R 运行任务堆栈:0 pid:836 ppid:2 标志:0x00000202
[166.823894] 调用跟踪:
[ 166.826362] __switch_to+0x108/0x160
[ 166.829968] genpd_runtime_suspend+0x118/0x2c0
[ 166.834435] __rpm_callback+0x48/0x170
[ 166.838205] rpm_callback+0x6c/0x80
[ 166.841738] rpm_suspend+0x100/0x554
[ 166.845318] rpm_idle+0xf4/0x154
[ 166.848599] __pm_runtime_idle+0x60/0xb0
[ 166.852549] hantrodec_release+0x1c8/0x240
[ 166.856676 ] __fput+0x70/0x234
[ 166.859755] ____fput+0x14/0x20
[ 166.862917] task_work_run+0x84/0x17c
[ 166.866630] do_notify_resume+0x208/0x12ec
[ 166.870752] el0_svc+0x6c/0x80
[ 166.873828] el0t_64_sync_handler+0xa8/0x130
[ 166.878119] el0t_64_sync +0x1a0/0x1a4
[186.729335] rcu: INFO: rcu_preempt 检测到 CPU/任务停顿:
[ 186.735454] rcu: 3-...0: (0 ticks this GP) idle=0c1/1/0x4000000000000000 softirq=6730/6732 fqs =18090
[186.744772](由 1 检测到,t=36794 jiffies,g=8953,q=36033)[
186.750608]CPU 3 的任务转储:
[186.753835]任务:vsidaemon 状态:R 运行任务堆栈:0 pid:836 ppid:2 flags:0x00000202
[ 186.763756] Call tr�
��ace: [ 186.766202] __switch_to+0x108
/0x160 [ 186.769789] genpd_runtime_suspend+0x118
/0x2c0 [ 186.774237] __rpm_callback+0x48
/0x170 [ 186.777989] rpm_callback+0x6
c/0x80 [ 186.781478] rpm_suspend+0x100
/0 186.785056] rpm_idle+0xf4/0x154
[ 186.788284] __pm_runtime_idle+0x60/0xb0
[ 186.792208] hantrodec_release+0x1c8/0x240
[ 186.796308] __fput+0x70/0x234
[ 186.799367] ____fput+0x14/0x20
[ 186.802510] task_work_run+0x84/0x17c
[ 186.806174] do_notify_resume+0x208/0x12ec
[ 186.810273] el0_svc+0x6c/0x80
[ 186.813330] el0t_64_sync_handler+0xa8/0x130
[ 186.817602] el0t_64_sync+0x1a0/0x1a4
[ 230.281056] rcu: INFO: rcu_preempt detected expedited stalls on CPUs/tasks: { 3 -... } 21453 jiffies s: 157 root: 0x8/.
[230.291851] rcu:阻塞 rcu_node 结构(内部 RCU 调试):
[230.298149] CPU 3 的任务转储:
[230.301398] 任务:vsidaemon 状态:R 运行任务堆栈:0 pid:836 ppid:2 标志:0x00000202
[230.311338] 调用跟踪:
[ 230.313830] __switch_to+0x108/0x160
[ 230.317447] genpd_runtime_suspend+0x118/0x2c0
[ 230.321916] __rpm_callback+0x48/0x170
[ 230.325688] rpm_callback+0x6c/0x80
[ 230.329195] rpm_suspend+0x100/0x554
[ 230.332776] rpm_idle+0xf4/0x154
[ 230.336022] __pm_runtime_idle+0x60/0xb0
[ 230.339992] hantrodec_release+0x1c8/0x240
[ 230.344122] __fput+0x70/0x234
[ 230.347203] ____fput+0x14/0x20
[ 230.350364 ] task_work_run+0x84/0x17C
[230.354048] do_notify_resume+0x208/0x12ec
[230.358167] EL0_SVC+0x6C/0x6C/0x80 [
230.361241] EL0T_64_64_SSYNC_SSYNC_SSYNC_SSYNCER+030301ANENT/0301ANENT/
030.1ANENT/030.ANBER
日志取自串行控制台,同时包含 gstramer 和内核日志。
播放完成后系统挂起且无法使用。
请确认 gstreamer 已通过最新 SDK 中的视频播放进行验证。