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:Vision_Apps 位于具有 4GB DDR 的定制 AM67A 电路板上

Guru**** 2893300 points

Other Parts Discussed in Thread: AM67A, AM62A7

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1634073/am67a-vision_apps-on-custom-am67a-board-with-4gb-ddr

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

RTOS (2).zip 
k3-j722s-custom.dts.txt

ti-processor-sdk-linux-edgeai-j722s-evm-11_00_00_08  

ti-processor-sdk-rtos-j722s-evm-11_00_00_06

我在 SDK RTOS 文件夹中附加了我所做的更改、以调整分割点以及我 DTS 文件的相关部分。 我的当前状态未通过 INIT 或 IPC 验证。 前进的最佳方式是什么?  

root@192.168 7.1:/opt/vision_apps #===== remoteproc0 ====
状态:      持续更新
FW_NAME:     j722s-C71_0-FW
virtio_mapping: virtio2.
FW_ENTRY:    /lib/firmware/j722s-c71_0-fw
fw_symlink_to: /usr/lib/firmware/vx_app_rtos_linux_c7x_1.out

==== remoteproc1 ===
状态:      持续更新
FW_NAME:     j722s-c71_1-fw
virtio_mapping: virtio3.
FW_ENTRY:    /lib/firmware/j722s-c71_1-fw
fw_symlink_to: /usr/lib/firmware/vx_app_rtos_linux_c7x_2.out

===== remoteproc2 ====
状态:      持续更新
FW_NAME:     j722s-mcu-R5f0_0-fw
virtio_mapping: virtio0
FW_ENTRY:    /lib/firmware/j722s-mcu-r5f0_0-fw
fw_symlink_to: /usr/lib/firmware/ti-ipc/j722s/ipc_echo_test_mcu2_0_release_strip.xer5f

===== remoteproc3 ====
状态:      随附
FW_NAME:     未知
virtio_mapping: virtio1.

===== remoteproc4 ====
状态:      持续更新
FW_NAME:     j722s-main-R5f0_0-fw
virtio_mapping: virtio4.
FW_ENTRY:    /lib/firmware/j722s-main-r5f0_0-fw
fw_symlink_to: /usr/lib/firmware/vx_app_rtos_linux_mcu2_0.out

root@192.168 7.1:~# dmesg | grep virtio
[  3.901128] rproc-virtio rproc-virtio.0.auto:分配了保留的内存节点 vision-apps-r5f-dma-memory@a1000000
[  3.915232] rproc-virtio rproc-virtio.1.auto:分配了保留的内存节点 r5f-dma-memory@a0000000
[3.925375]  virtio_rpmsg_bus virtio0: rpmsg host 已联机
[  3.925461] rproc-virtio rproc-virtio.0.auto: registered virtio0 (type 7)
[  3.925734] virtio_rpmsg_bus virtio0:创建通道 ti.ipc4.ping-pong 地址 0xd
[  3.925955] virtio_rpmsg_bus virtio0:创建通道 rpmsg_chrdev 地址 0xe
[  3.927541] virtio_rpmsg_bus virtio1:创建通道 ti.ipc4.ping-pong 地址 0xd
[  3.927703] virtio_rpmsg_bus virtio1:创建通道 rpmsg_chrdev 地址 0xe
[3.928047]  virtio_rpmsg_bus virtio1:rpmsg 主机已联机
[3.930101]  rproc-virtio rproc-virtio.1.auto: registered virtio1 (type 7)
[  3.948609] rproc-virtio rproc-virtio.2.auto:分配了保留的存储器节点 vision-apps-C71-dma-memory@ad000000
[  3.953003] virtio_rpmsg_bus virtio2:rpmsg 主机已联机
[3.953093]  rproc-virtio rproc-virtio.2.auto: registered virtio2 (type 7)
[  3.9586] rproc-virtio rproc-virtio.3.auto:分配了保留的存储器节点 vision-apps-C71_dma-memory@b1000000
[  3.959439] virtio_rpmsg_bus virtio2:创建通道 rpmsg_chrdev 地址 0xd
[  3.959943] virtio_rpmsg_bus virtio3:rpmsg 主机已联机
[3.960012]  rproc-virtio rproc-virtio.3.auto: registered virtio3 (type 7)
[  3.967918] virtio_rpmsg_bus virtio3:创建通道 rpmsg_chrdev 地址 0xd
[  4.018382] rproc-virtio rproc-virtio.4.auto:分配了保留的内存节点 vision-apps-r5f-dma-memory@a2000000
[4.039828]  virtio_rpmsg_bus virtio4: rpmsg 主机已联机
[4.039887]  rproc-virtio rproc-virtio.4.auto: registered virtio4 (type 7)
root@192.168 7.1:~# cd /opt/vision_apps
root@192.168 7.1:/opt/vision_apps # source ./vision_apps_init.sh
root@192.168 7.1:/opt/vision_apps #[C7x_1 ]   4.125669 s:cio:init ...完成!!
[C7x_1 ]   4.125688s:CPU 正在运行 FreeRTOS
[C7x_1 ]   4.125700 s:应用:init ...!!
[C7x_1 ]   4.125710 s:SCICLIENT:init ...!!
[C7x_1 ]   4.125774 s:SCICLIENT:DMSC FW 版本[11.1.9--v11.01.09 (Fancy Rat)]
[C7x_1 ]   4.125792 s:SCICLIENT:DMSC 固件修订版 0xb
[C7x_1 ]   4.125806 s:SCICLIENT:DMSC FW ABI 修订版 4.0
[C7x_1]   4.125822 s:SCICLIENT:init ...完成!!
[C7x_1 ]   4.125834 s:UDMA:init ...!!
[C7x_1 ]   4.125864 s:UDMA:初始化...完成!!
[C7x_1 ]   4.125877 s:MEM:init ...!!
[C7x_1 ]   4.125889 s:MEM:创建的堆 (DDR_LOCAL_MEM、id=0、flags=0x00000004)@ 108000000、大小为 67108864 字节!!
[C7x_1]   4.125916 s:MEM:init ...完成!!
[C7x_1 ]   4.125928 s:ipc:init ...!!
[C7x_1]   4.125938 s:IPC:4 个 CPU 参与 IPC!!
[C7x_1]   4.126334 s:IPC:等待 HLOS 准备就绪...!!
[C7x_1]   4.126469 s:IPC:HLOS 已准备就绪!!!
[C7x_1 ]   4.126549 s:ipc:init ...完成!!
[C7x_1 ]   4.126565 s:应用:与 3 个 CPU 同步...!!
[C7x_2 ]   4.134178 s:CIO:初始化...完成!!
[C7x_2 ]   4.134197 s:CPU 正在运行 FreeRTOS
[C7x_2 ]   4.134208 s:应用:init ...!!
[C7x_2 ]   4.134220 s:SCICLIENT:init ...!!
[C7x_2 ]   4.134281 s:SCICLIENT:DMSC FW 版本[11.1.9--v11.01.09 (Fancy Rat)]
[C7x_2 ]   4.134300 s:SCICLIENT:DMSC FW 修订版 0xb
[C7x_2 ]   4.134315 s:SCICLIENT:DMSC FW ABI 修订版 4.0
[C7x_2 ]   4.134330 s:SCICLIENT:init ...完成!!
[C7x_2 ]   4.134344 s:UDMA:init ...!!
[C7x_2 ]   4.134371 s:UDMA:初始化...完成!!
[C7x_2 ]   4.134385 s:MEM:init ...!!
[C7x_2 ]   4.134397 s:MEM:创建的堆 (DDR_LOCAL_MEM、id=0、flags=0x00000004)@ 118000000、大小为 67108864 字节!!!
[C7x_2 ]   4.134424 s:内存:初始化...完成!!
[C7x_2 ]   4.134435 s:ipc:init ...!!
[C7x_2 ]   4.134446 s:IPC:4 个 CPU 参与 IPC!!
[C7x_2 ]   4.134798 s:IPC:等待 HLOS 准备就绪...!!
[C7x_2 ]   4.134923 s:IPC:HLOS 已准备就绪!!!
[C7x_2 ]   4.134997 s:ipc:init ...完成!!
[C7x_2 ]   4.135013 s:应用:与 3 个 CPU 同步...!!

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

    您好:

    现在、该主题已分配给正确的组织。 让我重新分配给正确的工程师来支持。 请稍后进行回复。

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

    尊敬的 Allison:

    您可能受益于此常见问题解答[1]--它名义上是 AM67A 的相同信息、但还有另外一个方面:您有 2 个 C7x 和额外的 R5、以及扩展到较低 2GB 以下的堆(前两个的 0x8000 0000 - FFFF 0xFFFF、以上任何内容从 0x8 8000 0000 进入高内存)

    您是如何更新目标文件系统的? 重新编译固件后、sdk_buidler 中会有 make 目标、以将所有适当的文件复制到 SD 卡或暂存区域中。 它们包括复制 R5 固件、C7 固件、libtivision_apps.so。 大家都知道、器件树文件是单独的、但必须进行更新。  

    从您发布的日志中可以看出、我没有看到明显的问题、但我确实看到 R5F 内核没有推送任何消息(例如[MCU_1]日志)。 也许您还运行了其他一些应用测试。

    大多数情况下、问题会打印到 STDOUT 或通过/opt/vision_apps/vx_app_arm_remote_log.out.打印 能否详细谈谈您看到的问题?

    每个远程处理的状态是什么? 它们是“正在运行“还是“已连接“?

    我还建议尝试使用 `rpmsg_char_simple-r $ID -n 10` 的 IPC 示例[2]、对应于文档[2]中指向的.H 文件中的$ID。  

    BR、
    Reese

    [1]  【常见问题解答】AM62A7:如何更新 AM62A 存储器映射?  

    [2] https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__AY5rKzWo3mfkbE3fnQ5q9Q__AM67-ACADEMY__XufTZAH__LATEST 

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

    您请求的远程处理运行状态信息已在前一篇文章中共享(如果有用)-它只是附加了一点以包含加载的固件文件以及 IPC 调试的其他尝试。 `s是在` source ./vision_apps_init.sh 命令运行时挂起。 其他示例应用(例如建议的日志)的运行方式类似。  

    阅读建议的内容后、我认为不必修改存储器布局、至少可以启动并运行某些内容。 在使用基准测试后、我可能需要缩小尺寸。 我们定制板上的 4GB DDR 应该足以实现预编译:ti-processor-sdk-linux-edgeai-j722s-evm-11_00_00_08、正确吗?  

    运行时、请找到包含所需信息的此文件。  

    e2e.ti.com/.../debug_2D00_vision_5F00_apps.txt


    我还介绍了共享的 IPC 示例链接、并通过交换回声固件和符合固件预期的存储器对齐方式成功实现了回声。 (需要移动 C7 核心)。 日志

    e2e.ti.com/.../successful_5F00_ipc_5F00_echo.txt

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

    您是如何更新目标文件系统的?  
    在 sdk_builder 中运行 make 目标以创建 SD 卡内容后、我会使用 scp 将它们移到我的电路板上。  

    /opt 和/usr 目录、以包括固件和任何重建的库、如 libtivision_apps.so

    在 AM62A7 的链接常见问题解答中 — 一个问题。 如果主 R5F 内核的存储器映射未更改、tiboot3.bin 是否仍需要更新? 这不在我在 这里关注的指南中

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

    尊敬的 Allison:

    感谢您在此处提供信息。

    1. 我看到内核都在运行或连接。
    2. 该测试应用程序的基本 IPC 在各个内核上不能始终如一地工作--我在两个日志转储中看到、一个显示 IPC 消息传递、另一个显示未找到 RPMsg 端点。 听起来您有这个功能吗?
    3. vision_apps_init.sh 打印输出(来自/opt/vx_app_arm_remote_log.out 记录程序应用程序)看起来很普通 MCU1_0 预计不会发挥重要作用
    4. 从 DTS 更新后的区域、TIOVX 转储中显示了起始地址和大小正确的区域


    请注意、AM62A 和 AM67A 之间有一些不同的点适用。 主要的一个是某些区域(特别是 vision_apps_shared_region/DDR_shared_MEM 区域和 C7x 堆)驻留在上部存储器中。  

    • 由于 DDR 仅为 4GB、这意味着前 2GB 的 FFFF 为 0x8000 0000 - 0xFFFF、 后 2GB 的 FFFF 为 0x08 8000 0000 - 0x8 FFFF FFFF。 默认情况下、DDR_SHARED 区域位于 0x9 0000 0000 到 0x9 1FFFF 的范围内。  
    • MCU 内核使用区域地址转换 (RAT) 将 DDR_SHARED_MEM 从上部 DDR(在 32 位内核中无法寻址)映射到下部 2GB DDR 中的空间

    我建议更新目标文件系统的 make 目标是 sdk_builder/makerules/makefile_linux_arm.mak 中的 make 目标。 我建议使用目标`linux_fs_stage`、`linux_fs_install`和`linux_fs_install_sd` targets。 它们会将文件分别放置在/tmp 暂存区域、firmware-builder/targetfs 或打开的 SD 卡中。  

    只有 AM62A 需要更新 tiboot3.bin(通常是引导加载程序)。


    [引用 userid=“693606“ url=“~/support/processors-group/processors/f/processors-forum/1634073/am67a-vision_apps-on-custom-am67a-board-with-4gb-ddr/6306513 ]在 AM62A7 的链接常见问题解答中 — 一个问题。 如果主 R5F 内核的存储器映射未更改、tiboot3.bin 是否仍需要更新?

    问得很好。 编号 AM67A/J722S 在更新存储器映射时无需修改 tiboot3.bin。 运行 VPAC 的 R5F 驱动程序(这是此工具更新的固件之一)在 MAIN 域中的 MCU2_0 上运行、而不是在 AM62A 上的 Device-manager R5 (MCU1_0) 上运行、后者也处理引导加载程序或整个 SOC。  


    因此、  您的系统最初似乎将每个远程内核都挂接到类似的线路上  

    [C7x_2 ]   4.135013 s: APP: Syncing with 3 CPUs ... !!!

    但在最新的转储中,我看到它达到了最后一个阶段,像  

    [C7x_2 ] 13722.735776 s: IPC: Echo status: a530-0[.] main-r5f0-0[P] c75ss0[P] c75ss1[s]

    应用程序级问题是否仍然存在? 您仍然面临哪些问题?

    您可以不出错地运行如下应用程序吗?

    /opt/vision_apps/vx_app_arm_ipc.out
    /opt/vision_apps/vx_app_arm_mem.out 
    /opt/vision_apps/vx_app_heap_stats.out

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

    尊敬的 Reese:

    在 进行更多调试后、 最终会更改存储器映射。

    # DEFAULT LOCATION
    # Shared memory for DMA Buf FD carveout (located in high mem)
    ddr_shared_mem_addr_phys  = 0x900000000;
    
    # DESIRED LOCATION
    # Shared memory for DMA Buf FD carveout (located in high mem)
    ddr_shared_mem_addr_phys  = 0x8A0000000;


    最后一个缺失部分是突出显示的 ti_DPL_config.c 文件、该文件是根据每个内核的 example.syscfg 发现的。 在此处固定地址后、vision_apps_init.sh 和此对话中的其他调试工具将正常运行。

    vision_apps/platform/j722s/rtos/c7x_1/generated /ti_DPL_config.c
    vision_apps/platform/j722s/rtos/c7x_1/example.syscfg
    vision_apps/platform/j722s/rtos/MCU2_0/generated /ti_DPL_config.c
    vision_apps/platform/j722s/rtos/MCU2_0/example.syscfg
    vision_apps/platform/j722s/rtos/c7x_2/generated /ti_DPL_config.c
    vision_apps/platform/j722s/rtos/c7x_2/example.syscfg
    vision_apps/platform/j722s/rtos/app_mem_map.h
    vision_apps/platform/j722s/rtos/gen_linker_mem_map.py

    还有另一项工作是引入所有正确的库(移动整个 targetFS 与我们的自定义硬件的某些需求相冲突)、但这些库在 PSDK edgeai 和 PSDK RTOS 文件夹之间都是可解决的。

    是否可以将其添加到您共享的文档中? (大概是在某个时候使用了 python 脚本)

    谢谢您、

    Allison