工具与软件:
您好!
我将在 TMDS64EVM 上测试 ipc_rpmsg_echo_linux 示例。
当我反复启动和停止 R5内核时、系统挂起或 Linux 经常出现恐慌。
日志1:
root@am64xx-evm:~ head /sys/class/remoteproc/remoteproc [0-2]/name
=>/sys/class/remoteproc/remoteproc0/name <=
78000000.r5f
=>/sys/class/remoteproc/remoteproc1/name <=
5000000.m4fss
=>/sys/class/remoteproc/remoteproc2/name <=
78200000.r5f
root@am64xx-evm:~# echo stop >/sys/class/remoteproc/remoteproc2/state
[ 111.430216] remoteproc remoteproc2:已停止远程处理器78200000.r5f
root@am64xx-evm:~# echo stop >/sys/class/remoteproc/remoteproc0/state
[120.459613] remoteproc remoteproc0:已停止远程处理器78000000.r5f
root@am64xx-evm:~# echo start > /sys/class/remoteproc/remoteproc0/state
[ 142.746147] remoteproc remoteproc0:为78000000.r5f 供电
[ 142.759546] remoteproc remoteproc0:启动固件映像 am64-main-r5f0_0-fw、大小112228
<---- 系统挂起在此处。
在情况2中、我知道在 r5f 内核停止并且 ti_k3_r5_remoteproc 驱动程序正常返回 EPERM 时启动 r5f core1是不正确的。
日志2:
root@am64xx-evm:~ head /sys/class/remoteproc/remoteproc [0-2]/name
=>/sys/class/remoteproc/remoteproc0/name <=
5000000.m4fss
=>/sys/class/remoteproc/remoteproc1/name <=
78000000.r5f
=>/sys/class/remoteproc/remoteproc2/name <=
78200000.r5f
root@am64xx-evm:~# echo stop >/sys/class/remoteproc/remoteproc2/state
[249.336219] remoteproc remoteproc2:已停止远程处理器78200000.r5f
root@am64xx-evm:~# echo stop >/sys/class/remoteproc/remoteproc0/state
[261.480420] remoteproc remoteproc0:已停止远程处理器5000000.m4fss.
root@am64xx-evm:~# echo stop >/sys/class/remoteproc/remoteproc1/state
[ 280.040279] remoteproc remoteproc1:已停止远程处理器78000000.r5f
root@am64xx-evm:~# echo start >/sys/class/remoteproc/remoteproc1/state
[ 340.982495] remoteproc remoteproc1:上电78000000.r5f
[ 340.995358] remoteproc remoteproc1:启动固件映像 am64-main-r5f0_0-fw、大小112228
[ 341.008820] rproc-virtio rproc-virtio.0.auto:分配了保留内存节点 r5f-dma-memory@a0000000
[ 341.020036] virtio_rpmsg_BUS virtio0: rpmsg 主机在线
[ 341.025862] virtio_rpmsg_bus virtio0:正在创建通道 ti.ipc4.ping-pong addr 0xd
[ 341.029699] rproc-virtio rproc-virtio.0.auto: registered virtio0 (type 7)
[ 341.033808] virtio_rpmsg_BUS virtio0:正在创建通道 rpmsg_chrdev addr 0xe
[ 341.042866] remoteproc remoteproc1:远程处理器78000000.r5f 现在已启动
root@am64xx-evm:~# echo stop >/sys/class/remoteproc/remoteproc1/state
[354.799845] remoteproc remoteproc1:已停止远程处理器78000000.r5f
root@am64xx-evm:~# echo start >/sys/class/remoteproc/remoteproc2/state
[369.566433] remoteproc remoteproc2:为782000.r5f 上电
[369.574062] remoteproc remoteproc2:启动固件映像 am64-main-r5f0_1-fw、大小112228
[ 370.035532] CPU0上的 SError 中断、代码0x00000000bf000000 -- SError
[370.0355553] CPU:0 PID:1000 Comm:sh not dample 6.6.32-g6de6e418c80e-dirty #4.
[ 370.035563]硬件名称:Texas Instruments AM642 EVM (DT)
[ 370.035568] pstate:20000005 (nzCv daif -pan -uao -tco -dit -ssbs BTYPE=-)
[370.0355577] PC :_memcpy+0x140/0x240
[370.035604] lr : rproc_elf_load_segments+0x198/0x218
[370.035623] sp : ffffff8000827cbb50.
[370.035626] x29: ffffff8000827cbb80 x28: 0000000000001598 x27: 00000000000000000000
[ 370.035642] x26:0000000000000040 x25:0000000000000000 x24:ffff0000106c9a20
[370.035652] x23:0000000000000020 x22:0000000000000006 x21:00000000000000000001
[370.035662] x20:0000000000001598 x19:ffff800082cf00a4 x18:ffffffffffffffffffffff
[370.035673] X17:0000000000000000 x16:0000000000000000 x15:ff8000827cba00
[ 370.035683] x14:0000000000000000 x13:bf00bf00bf00bf00 x12:bf00bf00bf004770
[370.035693] x11:b003600899014088 x10:200199009000001f x9:f000980290014004.
[370.035703] x8 : f200440870f0f400 x7 : 980268011012f2ca x6 : 6094f6469002b083.
[370.035714] x5 : ffffff800082429598 x4 : ffffff800082cd65d8 x3 : ffffff800082428100
[ 370.035724] x2 : 0000000000001408 x1 : ffffff800082cd5180 x0 : ffff800082428000
[ 370.035738] Kernel panic - not syncing: asynchronous Serror interrupt
[370.035742] CPU:0 PID:1000 Comm:sh not dament 6.6.6.32-g6de6e418c80e-dirty #4.
[ 370.035750]硬件名称:德州仪器(TI) AM642 EVM (DT)
[ 370.035754]呼叫追踪:
[ 370.035758] dump_backtrace+0x90/0xe8
[ 370.035775] show_stack+0x18/0x24
[ 370.035784] dump_stack_lvl+0x48/0x60
[ 370.035791] dump_stack+0x18/0x24
[ 370.035798] panic+0x32c/0x388
[ 370.035809] NMI_panic+0x8c/0x90
[ 370.035819] arm64_serror_panic+0x6c/0x78
[ 370.035830] do_serror+0x3c/0x70
[ 370.035841] el1h_64_error_handler+0x30/0x48
[370.035851] el1h_64_error+0x64/0x68
[ 370.035858]__memcpy+0x140/0x240
[ 370.035868] rproc_start+0x30/0x1b8
[ 370.035879] rproc_boot+0x198/0x57c
[ 370.035889] STATE_STORE+0x40/0x104
[ 370.035900] DEV_ATTR_STORE+0x18/0x2C
[370.035909] sysfs_KF_WRITE+0x44/0x54
[ 370.035919] kernfs_fop_WRITE_ITER+0x120/0x1cc
[ 370.035926] vfs_write+0x1c0/0x300
[ 370.035936] ksys_WRITE+0x74/0x10c
[ 370.035943]__ARM64_sys_WRITE+0x1c/0x28
[ 370.035951] Invoke_syscall+0x48/0x114
[370.035961] el0_Svc_common.constprop.0+0xc0/0xe0
[370.035971] DO_el0_Svc+0x1c/0x28
[370.035979] el0_Svc+0x2C/0x84
[ 370.035987] el0t_64_sync_handler+0x120/0x12c
[ 370.035995] el0t_64_SYNC+0x190/0x194
[370.036005] SMP:正在停止辅助 CPU
[ 370.036040]内核偏移:已禁用
[ 370.036043] CPU 特性:0x000000008,00020000,1000420b</s>008,000 20,000,100
[ 370.036049]内存限制:无
[370.276872]--[结束内核紧急-未同步:异步错误中断]-
软件配置:
适用于 AM64x 10_00_07_04的 Processor SDK Linux
AM64x MCU+ SDK 10.00.00
此致、