i.MX 8M Mini rpmsg_lite_str_echo_rtos

A53与M4核通过共享内存方式通信,使用rpmsg机制传递数据,做到系统间的通信;

驱动

drivers/rpmsg/imx_rpmsg_tty.c
	static struct rpmsg_device_id rpmsg_driver_tty_id_table[] = {
		{ .name = "rpmsg-virtual-tty-channel-1" },
		{ .name = "rpmsg-virtual-tty-channel" },
		{ .name = "rpmsg-openamp-demo-channel" },
		{ },
	};
	MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_tty_id_table);
imx_rpmsg_tty.ko
imx_rpmsg_pingpong.ko

/lib64/modules/4.14.98/

配置

fsl-imx8mm-evk-m4.dts
	包含image-fsl-imx8mm-ubox-evk.dts
	只开rpmsg,开其他的sail和i2s会导致内核启动报错
	#include "fsl-imx8mm-ubox-evk.dts"

	/ {
		reserved-memory {
			#address-cells = <2>;
			#size-cells = <2>;
			ranges;

			m4_reserved: m4@0x80000000 {
				no-map;
				reg = <0 0x80000000 0 0x1000000>;
			};

		};
		
	&rpmsg{
		/*
		 * 64K for one rpmsg instance:
		 * --0xb8000000~0xb800ffff: pingpong
		 */
		vdev-nums = <1>;
		reg = <0x0 0xb8000000 0x0 0x10000>;
		status = "okay";
	};

uboot加载M4内核

    0x7e0000 imx8mm_m4_TCM_rpmsg_lite_str_echo_rtos.bin
    M4打印:RPMSG String Echo FreeRTOS RTOS API Demo...
    加载Image和fsl-imx8mm-evk-m4.dtb
        内核启动马上M4打印:Nameservice sent, ready for incoming messages...

Linux下加载驱动

root@OpenWrt:/# modprobe imx_rpmsg_tty
[   42.182949] imx_rpmsg_tty virtio0.rpmsg-virtual-tty-channel-1.-1.30: new channel: 0x400 -> 0x1e!
[   42.191966] Install rpmsg tty driver!
M4打印:Get Message From Master Side : "hello world!" [len : 12]

root@OpenWrt:/# ls /dev/ttyRPMSG30 -l
crw-rw----    1 root     dialout   243,   0 Oct 22 23:34 /dev/ttyRPMSG30

root@OpenWrt:/# echo 1111 > /dev/ttyRPMSG30	
M4打印:	
Get Message From Master Side : "1111" [len : 4]
Get New Line From Master Side
Get Message From Master Side : "test" [len : 4]
Get New Line From Master Side

rpmsg pingpong测试

    imx8mm_m4_TCM_rpmsg_lite_pingpong_rtos_linux_remote.bin

    加载打印
    RPMSG Ping-Pong FreeRTOS RTOS API Demo...
    RPMSG Share Base Addr is 0xb8000000

    内核启动打印
    Link is up!
    Nameservice announce sent.
    详细打印如下:

Linux下打印:

root@OpenWrt:/# modprobe imx_rpmsg_pingpong
[  150.747722] imx_rpmsg_pingpong virtio0.rpmsg-openamp-demo-channel.-1.30: new channel: 0x400 -> 0x1e!
root@OpenWrt:/# [  150.760174] get 1 (src: 0x1e)
[  150.764588] get 3 (src: 0x1e)
[  150.769001] get 5 (src: 0x1e)
[  150.773422] get 7 (src: 0x1e)
[  150.777828] get 9 (src: 0x1e)
[  150.782241] get 11 (src: 0x1e)
................................
[  150.973936] get 95 (src: 0x1e)
[  150.978437] get 97 (src: 0x1e)
[  150.982932] get 99 (src: 0x1e)
[  150.987699] get 101 (src: 0x1e)
[  150.990846] imx_rpmsg_pingpong virtio0.rpmsg-openamp-demo-channel.-1.30: goodbye!

M4核打印: 

RPMSG Ping-Pong FreeRTOS RTOS API Demo...
RPMSG Share Base Addr is 0xb8000000
Link is up!
Nameservice announce sent.
Waiting for ping...
Sending pong...
Waiting for ping...
Sending pong...
.....................
Sending pong...
Waiting for ping...
Sending pong...
Waiting for ping...
Sending pong...
Ping pong done, deinitializing...
Looping forever...

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值