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

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

将编译好的设备树重新烧写到开发板中,这样M核心就正常启动了。
接下来需向NXP官方获取一份关于M核心的测试代码,以及相对应的编译器。编译器网址如下:https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads。测试代码的网址如下:https://mcuxpresso.nxp.com/zh,选择对应教育评估版,就可以下载对应SOC的测试代码了,如下图所示:
这里我们获取的源码包名为:SDK_24_12_00_EVK-MIMX8MP.zip。在PC Ubuntu环境中将源码包解压,内容如下:
进入到
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核心调试串口上查看到启动信息,如下图所示:
同时在Linux端需要加载rpmsg的驱动,insmod imx_rpmsg_tty.ko,加载成功后会默认向M核心发送一条消息,如下图所示:
并且生成用于交互的设备节点/dev/ttyRPMSG30。如果需要与M核心通讯,只需要向节点发送信息,就可以在M核心收到所发来的串口信息了,如下图所示:


至此,i.MX8MPlus的rpmsg就调试成功了。
-
ARM
+关注
关注
135文章
9611浏览量
394278 -
开发板
+关注
关注
26文章
6506浏览量
121351
发布评论请先 登录
i.mx8mplus 的 JTAG 检测失败的原因?
无法连接到 i.MX8MPLUS EVK如何解决?
使用i.MX8MPlus运行Windows 10 IoT系统,遇到了三星eMMC的兼容性问题如何解决?
i.MX8MM-BSP 5.15.52 linux-imx构建因从imx8mm.dtsi中删除rpmsg节而失败?
请问I.MX8MPlus板在网络中是否可以作为节点或路由器或两者兼而有之?
使用pingpong示例调试rpmsg时遇到的问题求解
如何构建OpenVG程序并在i.MX8MPlus上运行它们?
一文读懂NXP i.MX 8M Plus有多优秀
启扬i.MX8M Plus核心板、开发板编解码性能测试
技术分享 | 启扬i.MX8M Plus开发板适配LVDS屏幕
i.MX 8M Plus加持的AI领域的里程碑开发板长什么样?
技术分享 | i.MX8M Plus开发板支持ov5640
技术分享 | i.MX8M Plus开发板交叉编译qt5.15.2
技术分享 | i.MX8MPlus Journal日志管理系统
【项目实战】基于i.MX8M Plus的人工智能小车(AGV导航、视觉避障、自动跟随、颜色识别、防跌落)有教程代码
如何实现i.MX8MPlus的rpmsg调试
评论