i.MX7ULP M4于A7在Android下的通信

      双核或多核异构是i.MX系列处理器的一大产品特色,M核在某种情况下承担了外部MCU的角色,从而使使用的情况更加多元。那么在两种不同架构的核之间的通信就成了必须,本文就以i.MX7ULP 为例,介绍A7核与M4的在android下的通讯方法。


1.环境

硬件环境:imx7ulp-evk

Android 版本:Android O8.1.0 for i.MX 7ULP GA

MCUXpresso版本:SDK2.4 for i.MX 7ULP GA

2.构建Cortex-M4 SDK

SDK软件包中至少有两个多核演示,分别是rpmsg_lite_pingpong_rtos和rpmsg_lite_str_echo_rtos。它们位于:

/boards/evkmcimx7ulp/multicore_examples/

根据SDK入门指南,构建rpmsg_lite_str_echo_rtos演示。记住还要遵循文档的第6章,第4步,以生成ram可启动映像(sdk20-app.img)


3.
构建Android BSP

 3.1. RPMsg内核模块

在构建BSP之前,将以下行添加到BoardConfig.mk文件( /device/fsl/evk_7ulp/BoardConfig.mk):

BOARD_VENDOR_KERNEL_MODULES += \ $(KERNEL_OUT)/drivers/net/wireless/qcacld-2.0/wlan.ko \ + $(KERNEL_OUT)/drivers/rpmsg/imx_rpmsg_tty.ko

3.2. Cortex-M4镜像

将SDK镜像文件(sdk20-app.img)复制到Android源代码中的以下目录:

$cp /tools/imgutil/evkmcimx7ulp/sdk20-app.img /vendor/nxp/fsl-proprietary/mcu-sdk/7ulp/sdk20-app.img

相应地更改BoardConfig.mk文件:

# Copy prebuilt M4 demo image: PRODUCT_COPY_FILES += \

-vendor/nxp/fsl-proprietary/mcu-sdk/7ulp/imx7ulp_m4_demo.img:imx7ulp_m4_demo.img

+ vendor/nxp/fsl-proprietary/mcu-sdk/7ulp/sdk20-app.img:imx7ulp_m4_demo.img

完成这些更改后,按照BSP用户指南中的说明构建并刷新Android。


4.启用多核通信

引导时,SoC会自动加载Cortex-M4图像。

完成引导后,安装imx_rpmsg_tty.ko模块以创建多核通信通道:

$ su

$ insmod vendor/lib/modules/imx_rpmsg_tty.ko

要将消息从Cortex-A7发送到Cortex-M4,请使用/ dev / ttyRPMSG *通道:

$ echo "MESSAGE" > /dev/ttyRPMSG*

/ dev / ttyRPMSG *是指在板上创建的RPMsg设备,因此请相应地更改编号Cortex-M4将回显从Cortex-A7收到的所有消息。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★博文作者未开放评论功能