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.

[参考译文] AM68A:更改 RAM 时调整 rproc/rpmsg

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1498249/am68a-adjustments-for-rproc-rpmsg-if-changing-ram

部件号:AM68A

工具/软件:

尊敬的专家:

我们有一个带有 am68a 的定制电路板、希望使用 tiovx gstreamer 插件。

但插件(和 vision apps 示例)会导致以下错误:

   应用程序:初始化...!!
   1150.573056 s:app_log:错误:无法映射大小为262144字节的内存@ 0xaa000000!!
   应用程序:错误:日志写入器初始化失败!!!
   app_log:错误:无法映射大小为3288576字节的内存@ 0xae000000!!
   应用程序:错误:文件 IO 写入器初始化失败!!!
   应用程序:初始化...完成!!
   应用程序 IPC:完成!!!

内存映射似乎有问题。 我要更改哪些内容(器件树?) RAM 设置是否与评估板不同?

提前感谢、

Frank。

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

    您好 Frank、

    您使用的是什么 HLOS 以及您使用的是哪个 SDK 版本? 您能否回顾一下自己执行的构建步骤并共享导致此失败的命令?  提供更完整的日志将有助于我 更好地理解问题。

    谢谢您、

    法比亚纳

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

    您好 Fabiana、

    我们使用的是 SDK 10.01.00.04中的 Linux。 我们使用 Yocto 之外的另一个构建系统来构建整个 Linux 系统。 Processor SDK RTOS 已在运行合适 Ubuntu 的虚拟机中单独构建。 我们的目标系统只有2GB 内存、目前运行良好。

    我使用 Processor SDK RTOS 构建中的正确器件树设置解决了该问题。 现在、系统会加载 r5f 和 C71内核的固件(vision_apps)、并似乎成功启动。 我可以在vx_app_arm_remote_log.out应用程序中观察到这一点。 顺便说一下:Processor SDK RTOS 构建 vx_app_rtos_linux_mcu2_0.out 和 vx_app_rtos_linux_mcu2_1.out。 这些应该是 MCU2_0和 MCU2_1的固件。 vision_apps 是否仅使用这些内核(当然还有 C71)?

    现在 vision_apps 的固件正在运行、我启动一个简单的 gstreamer 流水线、遗憾的是、这会导致内核崩溃:

    [ 157.749691] Unable to handle kernel paging request at virtual address ffff000880000000
    [ 157.760304] Mem abort info:
    [ 157.763646] ESR = 0x0000000096000145
    [ 157.767501] EC = 0x25: DABT (current EL), IL = 32 bits
    [ 157.772891] SET = 0, FnV = 0
    [ 157.775970] EA = 0, S1PTW = 0
    [ 157.779117] FSC = 0x05: level 1 translation fault
    [ 157.784080] Data abort info:
    [ 157.786962] ISV = 0, ISS = 0x00000145, ISS2 = 0x00000000
    [ 157.792435] CM = 1, WnR = 1, TnD = 0, TagAccess = 0
    [ 157.797517] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    [ 157.802822] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000082017000
    [ 157.809549] [ffff000880000000] pgd=18000000ffff8003, p4d=18000000ffff8003, pud=0000000000000000
    [ 157.818243] Internal error: Oops: 0000000096000145 [#1] PREEMPT SMP
    [ 157.824493] Modules linked in: can_raw can tag_ksz cfg80211 onboard_usb_hub rpmsg_ctrl rpmsg_char ksz_spi ksz_switch dsa_core hsr cdns_csi2rx bridge stp cdns3 llc cdns_usb_common crct10dif_ce panel_adv7393(O) phy_can_transceiver ti_k6
    [ 157.893276] CPU: 0 PID: 407 Comm: videotestsrc0:s Tainted: G O 6.6.44 #1
    [ 157.901346] Hardware name: Rosho DirecsAI (DT)
    [ 157.905773] pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [ 157.912715] pc : dcache_clean_poc+0x20/0x38
    [ 157.916898] lr : arch_sync_dma_for_device+0x24/0x30
    [ 157.921761] sp : ffff80008371bbd0
    [ 157.925061] x29: ffff80008371bbd0 x28: 0000000900000000 x27: 0000000000039000
    [ 157.932180] x26: ffff00000c9976c0 x25: ffff000003b26038 x24: 0000000000000000
    [ 157.939299] x23: fffffc0000000000 x22: ffff800080f97ae0 x21: 0000000000000000
    [ 157.946417] x20: 0000000000000001 x19: 0000000000000000 x18: 0000000000000000
    [ 157.953535] x17: 0000000000000000 x16: 0000000000000000 x15: 0000ffff9283d9d0
    [ 157.960654] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
    [ 157.967773] x11: 0000000000000000 x10: 0000000000000000 x9 : ffff800081451948
    [ 157.974892] x8 : ffff00000c9976e0 x7 : 0000000000000002 x6 : 0000000000000000
    [ 157.982011] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 000000000000003f
    [ 157.989128] x2 : 0000000000000040 x1 : ffff000880039000 x0 : ffff000880000000
    [ 157.996247] Call trace:
    [ 157.998682] dcache_clean_poc+0x20/0x38
    [ 158.002506] dma_direct_map_sg+0x280/0x2e4
    [ 158.006591] __dma_map_sg_attrs+0x28/0x94
    [ 158.010586] dma_map_sg_attrs+0x10/0x24
    [ 158.014408] dma_heap_map_dma_buf+0x40/0x5c
    [ 158.018579] __map_dma_buf+0x2c/0xa0
    [ 158.022141] dma_buf_map_attachment+0x9c/0x108
    [ 158.026568] rproc_attach_dmabuf+0xcc/0x1b4
    [ 158.030739] rproc_device_ioctl+0x11c/0x2ac
    [ 158.034909] __arm64_sys_ioctl+0xac/0xf0
    [ 158.038819] invoke_syscall+0x48/0x114
    [ 158.042556] el0_svc_common.constprop.0+0xc0/0xe0
    [ 158.047246] do_el0_svc+0x1c/0x28
    [ 158.050548] el0_svc+0x2c/0x84
    [ 158.053593] el0t_64_sync_handler+0x120/0x12c
    [ 158.057934] el0t_64_sync+0x190/0x194
    [ 158.061587] Code: d2800082 9ac32042 d1000443 8a230000 (d50b7a20)
    [ 158.067662] ---[ end trace 0000000000000000 ]---

    导致崩溃的流水线为:

    $> /usr/bin/gst-launch-1.0 ! video/x-raw,format=RGB ! tiovxcolorconvert ! video/x-raw,format=NV12 ! fakesink

    APP: Init ... !!!
    6052.747019 s: MEM: Init ... !!!
    6052.747077 s: MEM: Initialized DMA HEAP (fd=5) !!!
    6052.747214 s: MEM: Init ... Done !!!
    6052.747235 s: IPC: Init ... !!!
    6052.798145 s: IPC: Init ... Done !!!
    REMOTE_SERVICE: Init ... !!!
    REMOTE_SERVICE: Init ... Done !!!
    6052.805175 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
    6052.805308 s: VX_ZONE_INFO: Globally Enabled VX_ZONE_ERROR
    6052.805325 s: VX_ZONE_INFO: Globally Enabled VX_ZONE_WARNING
    6052.805331 s: VX_ZONE_INFO: Globally Enabled VX_ZONE_INFO
    6052.806106 s: VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-0
    6052.806276 s: VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-1
    6052.806385 s: VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-2
    6052.806497 s: VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-3
    6052.806510 s: VX_ZONE_INFO: [tivxInitLocal:126] Initialization Done !!!
    6052.806517 s: VX_ZONE_INFO: Globally Disabled VX_ZONE_INFO
    Setting pipeline to PAUSED ...
    Pipeline is PREROLLING ...

    我们可能会错误或缺失的任何想法?

    此致、

    Frank

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

    您好 Frank、

    我目前出差外出。 请预计我的回复会延迟~1-2天。

    谢谢您、

    法比亚纳

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

    好的、我觉得它基本上可以正常工作。

    第1步是将2GB 以上的2个内存区域向下移动到可用的 DDR RAM 中。

    在第2步中、我修改了 c7x_1和 c7x_2 main.c 文件中本地堆和暂存区物理地址的定义。 中的定义了大于2GB 的区域为硬编码。

    现在、固件将加载且不打印错误。 我可以使用 tiovxcolorconvert (我想它会起作用)、但不使用 tiovxmultiscaler 和 tiovxmosaic。 最后两个插件已加载、但流水线未运行!

    Frank

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

    您好 Frank、

    您能否解释一下您希望通过此渠道实现哪些目标? GStreamer 流水线需要定义源、而该源在您共享的源中似乎缺失。

    查看一些使用摄像头作为输入和输出到连接显示器的 GStreamer 流水线示例: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1427869/faq-sk-am69-how-to-stream-from-csi-sensor-and-usb-camera-to-display-using-gstreamer

    谢谢您、

    法比亚纳

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

    我必须纠正我:我们禁用了头文件中的显示内容。

    当我调用tivxAddKernelCsitx CSITX 节点时、似乎可用。 我会检查是否可以使其正常工作。

    此致、

    Frank

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

    您好 Frank、

    如果这样可以解决您的问题、请告诉我!

    谢谢、

    法比亚纳