工具/软件:Linux
早上好、
我在板上使用 DRA7xx、4个视频摄像头输入、在 Android JB 系统 Linux 内核3.14上使用 VIP 和 VPE;VPDMA 加载了 FW "vpdma-1b8.fw"。
每个(平均) 3-4000 (3-4万)摄像头打开/关闭时、系统意外崩溃。
(开/关序列可能小于100或大于7-8、000、但平均值与上述相同。
崩溃似乎在关闭时发生、在这里我使用具有 以下参数的3个 vidioc_streamoff 序列:
v4l2_buf_type_video_capture、 v4l2_buf_type_video_captive_mplane、 v4l2_buf_type_video_output_mplane 。
出现问题时 ,可以验证 video_core.c 中的 vb2_ioctl_streamon 不起作用;因此,在 v4l2_dev.c 中的 v4l2_release 在 VIP_U1仍在运行时调用 VPE_release;然后,IRQ 发送信号停止 CPU0。
我在 SMP 中工作。
相关的日志崩溃如下所示:
[1138.042083]内部错误:Oops:805 [#1]抢占 SMP ARM
[ 1138.047882]链接到的模块:G_Android libcomposite stv0987 SPI_CAN CAN_DEV SPI_CAN_TX SPI_CAN_Rx MTA_cpsw CAN_BCM Davinci_cpdma CAN_RAW CAN DaVinci_MDIO cyttsp4_i2c cyttsp4[1138.063873]
[1138.063873]正在释放...
ip6table_mangle ip6table_raw ip6table_filter ip6_tables iptable_nat nf_nf_conntrack_IPv4 nfrag_IPv4 nf_nf_nf_nf_conntrack iptable_mangle iptable_raw iptable_filter iptables_tables IPv6 tw2964 VIP mt
[1138.127197] CPU:0污染:P O (3.8.13-00160-gb478bfd-m脏#9)
[1138.134857] PC 位于 VIP_IRQ+0x344/0x458 [VIP]
[1138.139526] LR 位于_TIMER_DELAY+0x50/0x64
[1138.144042] PC:[<7f1fabfc>] LR:[<801b58c0>] PSR:60000193
[1138.144042] sp:805cde90 IP:00000000 FP:e666cb8.
[1138.156158] R10:7f1ff590 R9:00000001 R8:e786c6a8
[1138.1682] r7:e6657000 R6:e666ca00 R5:00000001 R4:00000000
[1138.168548] r3:00200200 r2:00100100 r1:cc17cc16 r0:60000193
[1138.175445]标志:nZCv 在模式 SVC_32 ISA ARM 段内核上关闭 FIQ 的 IRQ
[1138.183258]控制:10c5387d 表:e67ac06a DAC:00000015
三、会议的报告
[1138.828918][<7f1fabfc>](VIP_IRQ+0x344/0x458 [VIP])来自[<800928cc>](handle_IRQ_event_perpu + 0x50/0x198)
[1138.839202][<800928cc>](handle_irq_event_perpu+0x50/0x198)来自[<80092a50>](handle_irq_event+0x3c/0x5c)
[1138.849578][<80092a50>](handle_irq_event+0x3c/0x5c)从[<80095774>](handle_fasteoi_irq+0x98/0x158)
[1138.859497][<80095774>](handle_faesteoi_IRQ+0x98/0x158)从[<8009229c>](generic_handle_IRQ+0x20/0x30)
[1138.869598][<8009229c>](generic_handle_IRQ+0x20/0x30)、从[<80014eac>](handle_IRQ+0x4c/b0)
[1138.878875][<80014eac>](handle_IRQ+0x4c/b0)来自[<80008500>](GIC_handle_IRQ+0x28/0x5c)
[1138.887786][<80008500>](GIC_Handle_IRQ+0x28/0x5c)从[<80013aa4>](_IRQ_Svc+0x44/0x7c)
[1138.896606]异常堆栈(0x805cdf58至0x805cdfa0)
[1138.901947] df40:800150fc 002b607c
[1138.910583] df60:00000000 8002eacc 805cc000 805cc000 80674bc8 803dabf0 805cc000 00000000
[1138.919219] df80:805d8c50 00000000 806524c0 805cdfa0 800150fc 80015100 60000013 ffffff
[1138.927856][<80013aa4>](_IRQ_Svc+0x44/0x7c)、从[<80015100>](DEFAULT_IDLE_+0x20/0x3c)
[1138.936492][<80015100>](DEFAULT_IDEL+0x20/0x3c)从[<8001540c>](CPU_IDEL+0x54/0x110)
[1138.945129][<8001540c>](CPU_IDLE_+0x54/0x110)、从[<805887b8>](START_kernel+0x2a4/0x2f4)
[1138.953948]代码:e28bbf6e e1a0000b eb47649b e898000c (e5823004)
[1138.960418]--[结束线迹4911f9840315e154 ]--
[1138.965270]内核严重错误-未同步:中断中出现致命异常
[1138.971984]
[1138.971984] CPU1:IPI 消息0x5
[1138.977050] CPU1:停止
[1138.979919][<8001b4b4>](DELOG_BREBOART+0x0/0xf0)从[<8001948c>](handle_ipi+0x1b0/0x1ec)
[1138.989074][<8001948c>](handle_ipi+0x1b0/0x1ec)从[<8000852c>](GIC_handle_IRQ+0x54/0x5c)
[1138.998168][<8000852c>](GIC_Handle_IRQ+0x54/0x5c)从[<80013aa4>](_IRQ_Svc+0x44/0x7c)
[1139.006988]异常堆栈(0xda5e9eb8至0xda5e9f00)
[1139.012329] 9ea0:a06a1bc6 0000000a
[1139.020935] 9ec0:b850c540 80674eb8 80bb2528 0000007a a06a1b89 00000000 dec813c0 dec813c8
[1139.029571] 9ee0:00000000 64fdccc5 da47d000 da5e9f00 801b58c0 801b58b8 a0000013 ffff
[1139.038177][<80013aa4>](__IRQ_Svc+0x44/0x7c),从[<801b58b8>](__TIMER_DELAY+0x48/0x64)
[1139.046936][<801b58b8>](_timer_delay+0x48/0x64)从[<7f1ea664>](VPE_RELEASE_0x48/0x1b8 [MTA_VPE])
[1139.056854][<7f1ea664>](VPE_RELE+0x48/0x1b8 [MTA_VPE])、从[<7f19b3c0>](v4l2_RELE+0x48/0xa4 [videoDE])
[1139.067718][<7f19b3c0>](v4l2_release+0x48/0xa4 [videodev])从[<800d46d0>](_flout+0x88/0x1fc)
[1139.077178][<800d46d0>](__fput +0x88/0x1fc)来自[<8005b830>](task_work _ run+0xac/0xe4)
[1139.085723][<8005b830>](task_work 运行+0xac/0xe4)来自[<80017824>](do_work 挂起+bbc/0xc0)
[1139.095001][<80017824>](do_work 挂起+bbc/0xc0)来自[<80013fcc>](work 挂起+0xc/0x20)
[1139.104095]在1秒内重新启动..
[1140.108093]重新启动 Linux 版本3.8.13-00160-gb478bfd-di
有什么建议吗?
提前感谢您的帮助、
Lorenzo