如何实现i.MX8MPlus的rpmsg调试

描述

 

我司IAC-IMX8MP-Kit开发板搭载NXP i.MX8MPlus SOC,该芯片采用4颗Arm Cortex-A53核心以及1颗Arm Cortex-M7核心。很多客户需求在M核心运行实时操作系统,而在A核心上运行Linux,实现双核心通信,那么今天就给大家分享一下相关技巧。

 

ARM

 

首先,我们需要在A核心,也就是Linux系统上把M核心打开,并且为M核心提供一定的硬件资源,如运行空间等。同时,如果需要核心间通讯,也需要增加一个节点,让两颗核心在节点间进行信息交互,具体修改如下图所示:

 

ARMARM 

将编译好的设备树重新烧写到开发板中,这样M核心就正常启动了。

接下来需向NXP官方获取一份关于M核心的测试代码,以及相对应的编译器。编译器网址如下:https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads。测试代码的网址如下:https://mcuxpresso.nxp.com/zh,选择对应教育评估版,就可以下载对应SOC的测试代码了,如下图所示:

 

ARM 

ARM 

这里我们获取的源码包名为:SDK_24_12_00_EVK-MIMX8MP.zip。在PC Ubuntu环境中将源码包解压,内容如下:

 

ARM 

进入到

boards/evkmimx8mp/multicore_examples/rpmsg_lite_str_echo_rtos/remote/armgcc/下,并且声明上面提到的编译器,直接运行./build_all.sh即可生成三个bin文件,分别在debug/release、ddr_debug/ddr_release、flash_debug/flash_release文件下。它们对应着不同的加载位置,我们需要的是ddr_release下的bin文件。

 

最后,我们将bin文件更名为m7.bin,在uboot阶段将其加载到指定位置,具体命令如下(注意路径):

setenv loadimage 'fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}; ext4load mmc 2:2 0x80000000 /home/root/m7.bin; dcache flush; bootaux 0x80000000',接下来启动完成后就可以在M核心调试串口上查看到启动信息,如下图所示:

 

ARM 

同时在Linux端需要加载rpmsg的驱动,insmod imx_rpmsg_tty.ko,加载成功后会默认向M核心发送一条消息,如下图所示:

 

ARM 

并且生成用于交互的设备节点/dev/ttyRPMSG30。如果需要与M核心通讯,只需要向节点发送信息,就可以在M核心收到所发来的串口信息了,如下图所示:

 

ARMARM

 

至此,i.MX8MPlus的rpmsg就调试成功了。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分