查看: 1453|回复: 0

[经验] 如何实现异构处理器间相互通讯——米尔带您玩转i.MX 8M Plu...

[复制链接]
  • TA的每日心情

    2019-10-15 10:48
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2022-7-22 12:01:07 | 显示全部楼层 |阅读模式
    分享到:
    本篇测评由电子工程世界的优秀测评者“bloong”提供。
    此次测试的项目,是异构处理器间相互通讯项目。
    MYD-JX8MPQ配备了一颗异构的Cortex-M7协处理器,可以同时运行Linux和RTOS。本文主要介绍协处理器M7使用方法。M7在运行时可能会涉及到和A53核共用资源,这里列举出会冲突资源如下:
    ECSPI0/ECSPI2,FLEXCAN,GPIO1/GPIO5,GPT1,I2C3,I2S3,UART4,PWM4,SDMA1/SDMA2,所以在一起使用时,需要将A53的这些资源关闭,这里就需要用到myd-jx8mp-rpmsg.dtb设备树。这里的M7使用uart4 作为串口。
    下文介绍如何使用M7,以及编译M7程序的方法:
    M7使用方法
    接两个串口:1个是开发板的Debug串口,另一个是M7的UART4串口。
    1、Debug口为J4及TYPE-C Debug;
    2、UART4口为J6,下图中红色箭头指示位置为pin1即UART4_TXD,据此pin2即UART4_RXD,pin3为GND。接这3根线就可以。


    查看分区信息
    启动开发板按任意键进入uboot模式,查看vfat分区中存在的文件。
    • u-boot=> fatls mmc 2
    • 29209088 Image
    • 8208 imx8mp_m7_TCM_hello_world.bin
    • 19040 imx8mp_m7_TCM_rpmsg_lite_pingpong_rtos_linux_remote.bin
    • 18528 imx8mp_m7_TCM_rpmsg_lite_str_echo_rtos.bin
    • 40948 imx8mp_m7_TCM_sai_low_power_audio.bin
    • 62815 myd-jx8mp-atk-10.dtb
    • 61702 myd-jx8mp-base.dtb
    • 62815 myd-jx8mp-hontron-7.dtb
    • 62846 myd-jx8mp-lt8912.dtb
    • 62555 myd-jx8mp-m190etn01-19.dtb
    • 62619 myd-jx8mp-rpmsg.dtb
    • 2113024 tee.bin

    • 12 file(s), 0 dir(s)



    设置M7设备树
    kernel加载的设备树由fdt_file变量决定,这里设置成M7专用设备树。
    • u-boot=> printenv fdt_file
    • fdt_file=myd-jx8mp-base.dtb
    • u-boot=> setenv fdt_file myd-jx8mp-rpmsg.dtb
    • u-boot=> save
    • Saving Environment to MMC... Writing to MMC(2)... OK
    • u-boot=> printenv fdt_file
    • fdt_file=myd-jx8mp-rpmsg.dtb
    • u-boot=>




    设置M7启动参数
    M7启动流程也是加载M7程序到内存,用bootaux命令启动, 正常kernel启动也一样,只是最后用bootm启动。
    • u-boot=> printenv fdt_file
    • fdt_file=myd-jx8mp-base.dtb
    • u-boot=> setenv fdt_file myd-jx8mp-rpmsg.dtb
    • u-boot=> save
    • Saving Environment to MMC... Writing to MMC(2)... OK
    • u-boot=> printenv fdt_file
    • fdt_file=myd-jx8mp-rpmsg.dtb
    • u-boot=> setenv m7_image imx8mp_m7_TCM_rpmsg_lite_str_echo_rtos.bin
    • u-boot=> setenv m7_boot_temp_addr 0x48000000
    • u-boot=> setenv m7_boot_addr 0x7E0000
    • u-boot=> setenv m7_run 'fatload mmc ${mmcdev}{mmcpart} ${m7_boot_tem
    • > p_addr} ${m7_image};cp.b ${m7_boot_temp_addr} ${m7_boot_addr} 0x20000; bo
    • > otaux ${m7_boot_addr}'
    • u-boot=> setenv m7_run 'fatload mmc ${mmcdev}{mmcpart} ${m7_boot_tem p_addr} ${m7_image};cp.b ${m7_boot_temp_addr} ${m7_boot_addr} 0x20000; bootaux ${m7_boot_addr}'
    • u-boot=> setenv mmcboot "run m7_run;${mmcboot}"
    • u-boot=> save
    • Saving Environment to MMC... Writing to MMC(2)... OK
    • u-boot=>



    测试M7程序
    此时已经设置好了M7启动,只需要重启开发板,那么在A53启动kernel同时,也会启动M7中的程序。启动之后A53的串口执行如下2句,既可以看到M7中串口出现对应的打印。
    • myd-jx8mp login: root
    • root@myd-jx8mp:~# modprobe imx_rpmsg_tty
    • root@myd-jx8mp:~# [ 33.759911] can1-stby: disabling
    • [ 33.763151] can2-stby: disabling
    • [ 33.766408] VSD_3V3: disabling
    • [ 33.769489] m2_keyb_pwr: disabling
    • echo "hi m7!" > /dev/ttyRPMSG30
    • root@myd-jx8mp:~# cat /dev/ttyRPMSG30
    • hi m7!



    想要了解优秀测评者“bloong”关于MYD-JX8MPQ开发板测评原文的可以复制下方链接查看:
    http://bbs.eeworld.com.cn/thread-1198858-1-1.html


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-26 11:49 , Processed in 0.161727 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.