This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM67A:边缘 AI 映像随机无法引导

Guru**** 2540720 points
Other Parts Discussed in Thread: AM67A, SYSCONFIG, AM625-Q1

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1541128/am67a-edge-ai-image-randomly-fails-to-boot

器件型号:AM67A
主题: SysConfig 中讨论的其他器件

工具/软件:

您好:

我们构建了一个具有不同 4GB DDR 存储器的定制电路板。 J722SEVM 上不是 8GB DDR。

我 已使用 Linux 和 RTOS SDK 创建边缘 AI 映像、并正确设置存储器地址。

问题在于:
大多数情况下、内核启动、我可以通过 HDMI 访问终端屏幕并使用 Linux。 但很少出现 2 次、完全显示 edge-AI App Gallery 屏幕。 我说过、主要是显示 Linux 终端。

我不明白为什么边缘 AI 应用程序库是随机工作的。 我每次都在使用相同的图像 这是一件奇怪的事情。  我无法解释这种随机性。

当 App Gallery 未出现时、它会显示某些 Qt 元素缺失或无效。SO 文件已存在。  为什么这些文件会被删除或损坏?

它是否可以与 DDR 配置相关?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    它也可能与 DDR 或其他方面有关。 是否存在崩溃或随机挂起?
    如果始终以一致的方式引导到 Linux 并且出现故障  

    我不明白为什么 edge-AI App Gallery 是随机工作的。 我每次都在使用相同的图像 这是一件奇怪的事情。  我无法解释这种随机性。

    这可能是在某些订单未满足的情况下发生的? 我也不确定。 您是否看到随机崩溃或仅缺少图库是问题?

    - Keerthy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它也可能与 DDR 或其他内容有关。 是否存在崩溃或随机挂起?

    Linux 和库问题都存在。 更改 DDR 后、内核始终启动。 这没关系。 但是、

    您是否看到随机崩溃或仅缺少库?

    问题在于 缺少图库 蓝牙节点。 有时画廊根本不打开,有时它打开,但当我从画廊 UI 的菜单中选择任何内容(如图像分类按钮)时,它会卡住和挂起。

    如果此图像与 DDR 配置有关、我们使用该图像尝试了更多测试。

    我们在确切的板上焊接了两个不同的 LPDDR4 4GB 存储器模块。 EDGEAI 完美的作品在一个。 另一个有我上面提到的问题。

    我不确定是否正确配置了 DDR。 根据数据表、一切看起来都是正确的。  是否有任何关于哪些设置至关重要的文档?

     当我尝试点击 gallery 上的任何按钮时,这个日志(从我们有问题的板上):

    root@j722s-evm:/opt/edgeai-gst-apps# watch dmesg | tail
    [   67.427094] kauditd_printk_skb: 5 callbacks suppressed
    [   67.427115] audit: type=1701 audit(1741187672.628:19): auid=4294967295 uid=0 gid=0 ses=4294967295 subj=kernel pid=615 comm="edgeai-gui-app" exe="/usr/bin/edgeai-gui-app" sig=11 res=1
    [   67.467089] audit: type=1334 audit(1741187672.668:20): prog-id=20 op=LOAD
    [   67.473978] audit: type=1334 audit(1741187672.672:21): prog-id=21 op=LOAD
    [   67.480827] audit: type=1334 audit(1741187672.680:22): prog-id=22 op=LOAD
    [   80.386657] audit: type=1334 audit(1741187685.588:23): prog-id=22 op=UNLOAD
    [   80.393675] audit: type=1334 audit(1741187685.588:24): prog-id=21 op=UNLOAD
    [   80.400660] audit: type=1334 audit(1741187685.588:25): prog-id=20 op=UNLOAD

    之后、按钮消失、仅显示背景图像、应用程序冻结、但仍然可以从 UART 引脚访问终端。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我邀请 DDR 专家来确保一切正常。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你。

    对于 DDR 专家来说、这是   我们遇到问题的 DDR 数据表RS1G32LX4D4BNR-53BT


    工作板上的 DDR: B3221PM3BDGUI-U

    这些 DDR 在某种程度上是否相同?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以下是我单击“图像分类“按钮时获得的额外日志。  日志的第一部分由于连接了 USB 集线器而出现。

    root@j722s-evm:/opt/edgeai-gst-apps# watch dmesg | tail
    [   73.038480] usb 1-1.3: new high-speed USB device number 4 using xhci-hcd
    [   73.132080] hub 1-1.3:1.0: USB hub found
    [   73.136176] hub 1-1.3:1.0: 4 ports detected
    [   73.148852] kauditd_printk_skb: 5 callbacks suppressed
    [   73.148868] audit: type=1701 audit(1741187678.280:26): auid=4294967295 uid=0 gid=0 ses=4294967295 subj=kernel pid=1227 comm="(udev-worker)" exe="/usr/bin/udevadm" sig=6 res=1
    [   73.177635] audit: type=1334 audit(1741187678.308:27): prog-id=23 op=LOAD
    [   73.184508] audit: type=1334 audit(1741187678.316:28): prog-id=24 op=LOAD
    [   73.191351] audit: type=1334 audit(1741187678.324:29): prog-id=25 op=LOAD
    [   73.418621] usb 1-1.3.1: new full-speed USB device number 5 using xhci-hcd
    [   73.525464] input: Logitech USB Receiver as /devices/platform/bus@f0000/f920000.usb/31200000.usb/xhci-hcd.8.auto/usb1/1-1/1-1.3/1-1.3.1/1-1.3.1:1.0/0003:046D:C52B.0001/input/input1
    [   73.662691] audit: type=1334 audit(1741187678.796:30): prog-id=25 op=UNLOAD
    [   73.669704] audit: type=1334 audit(1741187678.796:31): prog-id=24 op=UNLOAD
    [   73.670860] hid-generic 0003:046D:C52B.0001: input: USB HID v1.11 Keyboard [Logitech USB Receiver] on usb-xhci-hcd.8.auto-1.3.1/input0
    [   73.676734] audit: type=1334 audit(1741187678.796:32): prog-id=23 op=UNLOAD
    [   73.692448] input: Logitech USB Receiver Mouse as /devices/platform/bus@f0000/f920000.usb/31200000.usb/xhci-hcd.8.auto/usb1/1-1/1-1.3/1-1.3.1/1-1.3.1:1.1/0003:046D:C52B.0002/input/input2
    [   73.712938] input: Logitech USB Receiver Consumer Control as /devices/platform/bus@f0000/f920000.usb/31200000.usb/xhci-hcd.8.auto/usb1/1-1/1-1.3/1-1.3.1/1-1.3.1:1.1/0003:046D:C52B.0002/input/input3
    [   73.786843] input: Logitech USB Receiver System Control as /devices/platform/bus@f0000/f920000.usb/31200000.usb/xhci-hcd.8.auto/usb1/1-1/1-1.3/1-1.3.1/1-1.3.1:1.1/0003:046D:C52B.0002/input/input4
    [   73.804491] hid-generic 0003:046D:C52B.0002: input: USB HID v1.11 Mouse [Logitech USB Receiver] on usb-xhci-hcd.8.auto-1.3.1/input1
    [   73.819054] hid-generic 0003:046D:C52B.0003: device has no listeners, quitting
    [   73.898487] usb 1-1.3.3: new low-speed USB device number 6 using xhci-hcd
    [   74.002990] input: Primax Lenovo Traditional USB Keyboard as /devices/platform/bus@f0000/f920000.usb/31200000.usb/xhci-hcd.8.auto/usb1/1-1/1-1.3/1-1.3.3/1-1.3.3:1.0/0003:17EF:6099.0004/input/input6
    [   74.146728] hid-generic 0003:17EF:6099.0004: input: USB HID v1.10 Keyboard [Primax Lenovo Traditional USB Keyboard] on usb-xhci-hcd.8.auto-1.3.3/input0
    [   74.198946] audit: type=1701 audit(1741187679.332:33): auid=4294967295 uid=0 gid=0 ses=4294967295 subj=kernel pid=1230 comm="(udev-worker)" exe="/usr/bin/udevadm" sig=11 res=1
    [   74.227322] audit: type=1334 audit(1741187679.360:34): prog-id=26 op=LOAD
    [   74.234220] audit: type=1334 audit(1741187679.364:35): prog-id=27 op=LOAD
    [   85.330507] ti-sci 44043000.system-controller: Mbox timedout in resp(caller: ti_sci_cmd_get_device_exclusive+0x18/0x24)
    [   85.341341] ti-sci 44043000.system-controller: Mbox send fail -110
    [   86.482485] ti-sci 44043000.system-controller: Mbox timedout in resp(caller: ti_sci_cmd_get_device_exclusive+0x18/0x24)
    [   86.493320] ti-sci 44043000.system-controller: Mbox send fail -110
    [   86.502843] Internal error: synchronous external abort: 0000000096000010 [#1] PREEMPT SMP
    [   86.511028] Modules linked in: overlay bluetooth ecdh_generic ecc cfg80211 rfkill onboard_usb_dev wave5 cdns3 cdns_usb_common videobuf2_dma_contig rpmsg_ctrl v4l2_mem2mem rpmsg_char videobuf2_v4l2 snd_soc_hdmi_codec pci_endpoint_test videobuf2_memops crct10dif_ce videobuf2_common tidss snd_soc_simple_card at24 snd_soc_davinci_mcasp snd_soc_simple_card_utils cdns3_ti videodev tps65219_pwrbutton pwm_fan rti_wdt k3_j72xx_bandgap rtc_ds1307 drm_dma_helper display_connector snd_soc_ti_udma ti_k3_dsp_remoteproc rtc_ti_k3 ti_k3_r5_remoteproc mc drm_display_helper sii902x snd_soc_ti_edma ti_k3_common snd_soc_ti_sdma mcrc64 sa2ul drm_kms_helper pwm_tiehrpwm pwm_tiecap omap_mailbox omap_hwspinlock drm fuse drm_panel_orientation_quirks backlight ipv6
    [   86.576582] CPU: 1 UID: 0 PID: 1326 Comm: multifilesrc0:s Not tainted 6.12.33-g3f6fedd7142e-dirty #2
    [   86.585697] Hardware name: Custom-AI (DT)
    [   86.591167] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [   86.598114] pc : wave5_vdi_read_register+0x8/0x20 [wave5]
    [   86.603519] lr : wave5_vpu_is_init+0x14/0x28 [wave5]
    [   86.608480] sp : ffff8000865b3a90
    [   86.611782] x29: ffff8000865b3a90 x28: ffff000005d3a010 x27: 0000000000000000
    [   86.618907] x26: ffff0008416ec930 x25: ffff0008419b4300 x24: ffff000005d3bcc0
    [   86.626032] x23: ffff0008416ec950 x22: ffff0008416ec880 x21: ffff000005d3a000
    [   86.633156] x20: 0000000000000000 x19: ffff8000865b3ae8 x18: 0000000000000006
    [   86.640281] x17: 3a72656c6c616328 x16: 00000000f0000000 x15: 0000000000000001
    [   86.647406] x14: 0000000000000000 x13: 0000000000000002 x12: 0000000000020be9
    [   86.654530] x11: 0000000000000068 x10: 0000000000000000 x9 : 0000000000000000
    [   86.661654] x8 : ffff8000871b7000 x7 : 0000000000000000 x6 : 000000000000003f
    [   86.668778] x5 : 0000000000000040 x4 : 0000000000000000 x3 : 0000000000000000
    [   86.675902] x2 : 0000000000000000 x1 : 0000000000000004 x0 : ffff800083810004
    [   86.683027] Call trace:
    [   86.685464]  wave5_vdi_read_register+0x8/0x20 [wave5]
    [   86.690511]  wave5_vpu_dec_open+0x88/0x158 [wave5]
    [   86.695299]  wave5_vpu_dec_start_streaming+0x1ac/0x334 [wave5]
    [   86.701126]  vb2_start_streaming+0x68/0x178 [videobuf2_common]
    [   86.706961]  vb2_core_streamon+0x100/0x1c4 [videobuf2_common]
    [   86.712701]  vb2_streamon+0x18/0x64 [videobuf2_v4l2]
    [   86.717669]  v4l2_m2m_ioctl_streamon+0x38/0x98 [v4l2_mem2mem]
    [   86.723419]  v4l_streamon+0x24/0x30 [videodev]
    [   86.727919]  __video_do_ioctl+0x330/0x3fc [videodev]
    [   86.732916]  video_usercopy+0x2e0/0x67c [videodev]
    [   86.737737]  video_ioctl2+0x18/0x28 [videodev]
    [   86.742212]  v4l2_ioctl+0x40/0x60 [videodev]
    [   86.746513]  __arm64_sys_ioctl+0xac/0xf0
    [   86.750431]  invoke_syscall+0x48/0x10c
    [   86.754173]  el0_svc_common.constprop.0+0xc0/0xe0
    [   86.758868]  do_el0_svc+0x1c/0x28
    [   86.762174]  el0_svc+0x28/0x98
    [   86.765223]  el0t_64_sync_handler+0x120/0x12c
    [   86.769569]  el0t_64_sync+0x190/0x194
    [   86.773227] Code: b9000022 d65f03c0 f940b000 8b214000 (b9400000)
    [   86.779305] ---[ end trace 0000000000000000 ]---
    

    root@j722s-evm:/opt/edgeai-gst-apps# watch dmesg | tail
    [  239.987152] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
    [  239.993261] rcu:     1-...0: (4 GPs behind) idle=4964/1/0x4000000000000000 softirq=11347/11347 fqs=14717
    [  240.002467] rcu:     (detected by 3, t=41850 jiffies, g=12601, q=5932 ncpus=4)
    [  240.009415] Sending NMI from CPU 3 to CPUs 1:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     你有没有 从专家那里得到任何回报?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Keerthy J :

    温馨提示。

    此致、

    Daniel Waleniak

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    存在 Linux 和库问题。 更改 DDR 后、内核始终启动。 [/报价]

    您是否表示更换了主板上的物理 DDR 并且系统的行为发生了变化?

    我们在确切的主板上焊接了两个不同的 LPDDR4 4GB 存储器模块。 EDGEAI 完美的作品在一个。 另一个有我上面提到的问题。

    您是说您仅测试了 2 块电路板、但它们具有不同的存储器吗?

    或者、您有 2 组不同的电路板、所有具有 1 个 DDR 供应商的电路板都出现故障、所有具有另一个内存供应商的电路板都通过了?

    [引述 userid=“623520" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1541128/am67a-edge-ai-image-randomly-fails-to-boot/5970758

    对于 DDR 专家来说、这是   我们遇到问题的 DDR 数据表RS1G32LX4D4BNR-53BT


    工作板上的 DDR: B3221PM3BDGUI-U

    这些 DDR 在某种程度上是否相同?

    [/报价]

    我不知道你的意思是相同的,但因为他们来自两个不同的内存供应商,我不会称他们相同,即使他们有相同的总线宽度,数字或排名/裸片,相同的密度等   

    但是,如果你看金士顿内存数据表的第 6 页和 Rayson 内存数据表的第 5 页,这些内存  似乎甚至没有相同的体系结构。 金士顿内存是单通道,通道密度为 16GB,而瑞森内存是双通道,通道密度为 8Gb。

    是否对这两个器件使用相同的 DDR 寄存器配置? 如果是这样、对于任何配置不正确的存储器来说、这肯定是个问题。

    此致、
    Kevin

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的答复。

    您是否表示更换了主板上的物理 DDR 并且系统的行为发生了变化?

    是的、情况就是这样。  除了 Edge AI、我们在 Linux 上没有发现任何其他问题。  我认为、如果 DDR-configs 错误、它会在 u-boot 或内核启动时卡住。  

    [报价 userid=“51195" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1541128/am67a-edge-ai-image-randomly-fails-to-boot/5986564

    您是说您仅测试了 2 块电路板、但它们具有不同的存储器吗?

    或者、您有 2 组不同的电路板、所有具有 1 个 DDR 供应商的电路板都出现故障、所有具有另一个内存供应商的电路板都通过了?

    [/报价]

    很抱歉混淆。 我们生产了两个 定制 AM67A 板。 但是、在实验中、我们在板上安装了不同的 DDR。 (因此,除 DDR 之外,电路板相同。)
    第一块电路板采用 4GB Rayson DDR。
    第二块电路板采用 4GB 金士顿 DDR。

    您是否对两者使用相同的 DDR 寄存器配置? 如果是、这肯定是任何内存配置不正确的问题。

    你是对的。 我不会伤害你的。“ 我们已经对这两个 DDR 使用了两种不同的配置:

    雷森:

    LPDDR4 引导频率 (MHz): 50
    LPDDR4 工作频率 (MHz):1866
    DDR 数据总线宽度(位数):32
    DDR 密度(每 x16 位通道,每列)(千兆位):8.
    芯片选择/等级:2.
    最高工作温度:<= 85C

    金士顿:

    LPDDR4 引导频率 (MHz): 50
    LPDDR4 工作频率 (MHz):1866
    DDR 数据总线宽度(位数):32
    DDR 密度(每 x16 位通道,每列)(千兆位):16
    芯片选择/等级:1.
    最高工作温度:>85C

    我不知道如何向您发送包含所有配置的 SysConfig 文件。 以下是屏幕截图:

    对于 Rayson:
      

    对于金士顿:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    很抱歉。 我们生产了两个 定制 AM67A 板。 但是、在实验中、我们在板上安装了不同的 DDR。 (因此,除 DDR 之外,电路板相同。)
    第一块电路板采用 4GB Rayson DDR。
    第二块板具有 4GB 金士顿 DDR。

    因此,您只构建了 2 块物理板,两者都是相同的主板设计,除了 1x 目前具有金士顿内存和 1x 具有 Rayson 内存之外?

    如果是、我建议构建更多电路板、以深入了解这可能是系统问题、还是单个故障电路板特有的问题。

    您也可以用金士顿内存替换 Rayson 内存、查看是否可以解决问题、然后将 Rayson 内存放回主板上、以确认原始问题仍然存在。 这也可以让人了解问题是否是 Rayson 记忆所独有的。 但是、我建议先构建额外的电路板、因为移除/更换内存可能会开始磨损 PCB 焊盘。

    此致、
    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我理解您的方法。 感谢您的建议。 现在已经生产了许多新电路板。

    但是、是否有方法(工具,脚本?) 我们可以在新电路板到达之前测试 DDR 存储器? 我们使用 memtest 工具进行了测试、但我不确定是否测试了所有 DDR 地址。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果能够进入 Linux 提示符、则应运行 memtester 来测试 DDR 接口的完整性。

    如果您无法进入 Linux 提示符、您可以添加此处所述的补丁: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1358039/faq-board-bring-up-tips-for-sitara-devices-am64x-am243x-am62x-am62l-am62ax-am62d-q1-am62px#:~:text=Running%20memtester%20(DDR%20memory%20test)%20from%20R5

    这会将 memtester 添加到 R5 代码中并将在 DDR 初始化后立即运行。

    最初、您可以在室温下通宵运行它、看看是否出现任何错误。  理想情况下、您最终应该在整个工作温度范围内运行该测试、以确保设计和 DDR 配置的稳健性。  如果没有出现任何错误、您可以非常确信自己没有处理任何 DDR 错误、并且可以专注于可能的软件问题。

    此致、

    James

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     这是我需要的 tooi。 非常感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 JJJD、

     使用 memtester 时通常是否需要排除保留的存储器地址? 因为我通常 在 u-boot 终端上运行 memtest 、以避免保留存储器地址。  

    该补丁是否访问所有 DDR 地址、包括保留的存储器?  

    我问道、因为我不知道是否应删除 u-boot dts 中的保留存储器字段。

    该补丁是否适用于 4GB DDR?
    因为上部和下部 2GB 在 AM67A 处不连续。 可以看到 AM625-Q1 具有 2GB DDR。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Memtester 不用于测试存储器单元或测试全部 DDR 容量。  旨在对接口执行应力测试、以帮助识别可能的信号完整性问题。  因此、无需更改有关器件存储器映射的任何内容。  Memtester 修补程序将分配 32MB 的数据来运行测试。

    此致、

    James