iMX8QXP:使用 RPMSG 唤醒 M4 和 A35
参考代码基于 L4.14.78 GA1.0.0 BSP 和 M4 SDK 2.5.1。它已在 iMX8QXP MEK 板上经过测试,并且也适用于 iMX8QM 板。
在 L4.14.78 GA1.0.0 BSP 中,MU_5 用于 M4 FreeRTOS 和 A35 Linux 之间的 RPMSG,SC_R_MU_5B 是 M4 端,而SC_R_MU_5A 是 A35 端。在 Linux 端,我们使用“ imx_rpmsg_tty.ko”进行测试,该驱动程序已构建为 BSP 中的默认模块。
情况 1:M4 唤醒 A35。
将“ L4.14.78_rpmsg_wakeup.patch”应用于 Linux 内核,该补丁将启用 RPMSG 唤醒功能。
“rpmsg_lite_pingpong_rtos.tar.bz2”是 M4 端的测试代码。在使用 Linux + M4 rpmsg 软件引导板子后,运行以下测试指令:
1. 在 A35 UART 端,运行以下指令:
# echo enabled > /sys/bus/platform/devices/90000000.rpmsg/power/wakeup
# insmod ./imx_rpmsg_tty.ko
# /unit_tests/Remote_Processor_Messaging/mxc_mcc_tty_test.out /dev/
ttyRPMSG30 115200 R 100 1000 &
# echo deadbeaf > /dev/ttyRPMSG30
# echo mem > /sys/power/state
2. M4 UART 端:
在 Linux 端运行“echo deadbeaf> / dev / ttyRPMSG30”之后,它将显示“ Got ping ...”。请
稍候,直到运行 A35 暂停命令“ echo mem> / sys / power / state”,Linux 暂停运行。然
后从 M4 UART 端,按 “c” 键,它会把 RPMSG 发送到 A35 并唤醒 A35 Linux。
情况 2:A35 唤醒 M4。
“power_mode_switch_rpmsg_wakeup.tar.bz2”是M4端的测试代码,在使用Linux + M4 rpmsg
软件引导该板后,M4 UART 将等候 A35 RPMSG 驱动程序准备。测试指令:
1. 在 A35 UART 端,运行以下指令用以配置 RPMSG 驱动程序:
# insmod ./imx_rpmsg_tty.ko
# /unit_tests/Remote_Processor_Messaging/mxc_mcc_tty_test.out
/dev/ttyRPMSG30 115200 R 100 1000 &
# echo deadbeaf > /dev/ttyRPMSG30
2. 现在,M4 UART 显示 ping pong 信息,以确保 RPMSG 准备就绪。现在 M4 位于电源转换菜单,在 M4 UART 中选择 VLLS 电源模式:
按 H 键输入:VLLS
... ...
按 R 键获取 RPMSG。
在 M4 UART 中按“R”键之后,M4 将打印“Send a RPMSG message to wake up”并进入暂停模式。
3. 从 A35 端唤醒 M4,将数据发送到 RPMSG:
# echo deadbeaf > /dev/ttyRPMSG30
M4 重启并再次返回。
用于编译两个 M4 示例代码的 SDK 文件夹:
SDK/boards/mekmimx8qx/multicore_examples/rpmsg_lite_pingpong_rtos
SDK/boards/mekmimx8qx/demo_apps/power_mode_switch
未完>>>
点击查看完整版
|