IMX7的双核通信例子问题(rpmsg)

首先在主机Ubuntu上完成对colibri imx7的rpmsg例子的编译,并下载到SD卡中,在硬件连接为UART_A和UART_B的开发板上,通过Xshell连接连个COM口,然后在控制端口的U-BOOT环境下,输入:

\# fatload mmc 0:1 0x7F8000 rpmsg_pingpong\_example.bin
\# dcache flush
\# bootaux

完成对rpmsg_pingpong_example.bin程序的加载,使得M4内核开始执行remote的工作,之后在U-BOOT环境下,输入:
\# boot
进入A7内核的linux环境下,然后输入:
\# modporbe imx_rpmsg_pingpong
使得A7内核开始执行master端的工作,正常情况下,应该出现如下情况:

实际出现的情况如下:

错误提示是MU超时,但在检查了”xSemaphoreTake(app_sema, portMAX_DELAY)“函数之后,发现不会是这个问题,因为时间设置的是无限。在编译运行另一个程序rpmsg_str_echo_example.bin仍没得出正确输出之后,确定了不是超时的问题,根据输出的错误提示跟usb设备有关,在参考“FreeRTOS BSP i.MX 7Dual Demo Application User’s Guide”手册之后,发现可能是UART_A的连接问题,原指导步骤如下:

1. Connect a USB cable between the PC host and the Debug UART port on the board.
2. Open two serial terminals with these settings for each of the virtual serial instances:115200 baud rate
• 8 data bits
• No parity
• One stop bit
• No flow control
3. Load the demo binary to target board using U-Boot.
4. Boot auxiliary ARM Cortex-M4 Core to begin running the demo.
5. Boot the Linux kernel, and run the pingpong master side demo.

但现在仍没找到正确的解决方法,后续补之。。。

问题解决方案

通过查阅相关社区论坛后,发现其他人也有此类问题,解决方案是给IMX7的板子重新刷一遍系统(Colibri IMX7 PingPong example issue),帖子中的解决方法刷的是
Colibri_iMX7_LinuxImageV2.6Alpha1_20160315.tar.bz2
系统,我是用的系统是
Colibri_iMX7_LinuxImageV2.6Beta2_20160630.tar.bz2
系统,不过20160630版的系统,必须使用the master-1.0.1 branch的FreeRTOS压缩包,不然会出现UART_B端口不能正常显示输出信息的错误,相关问题和解决方案(HelloWorld demo doesn’t work with FreeRTOS on Colibri i.MX7),最后附上刷新系统的方法:
Flashing Embedded Linux to iMX7 Modules
(注意,帖子中的format_sd.sh文件在VF系列的内核压缩包中可以找到,在IM7系列的内核压缩包中是没有的,并且需要进行相关修改才能使用)
至此,关于IMX7的双核通信例子问题得以解决。

IMX7的双核通信例子问题(rpmsg)相关推荐

  1. Davinci DM6446 Codec Engine双核通信环境的搭建

    根据前几篇文章,一个DM6446的系统已经架构完成.但是有很多人都喜欢TI的机制,毕竟双核软件开发对很多工程师来说是非常麻烦的事情,既然TI提供开发套件和开发包,那么直接做OEM就可以了,底层的东西不 ...

  2. air android 通信,Android超声波通信例子

    [实例简介] Android超声波通信例子,手机之间,手机与超声波设备间的超声波通信 [实例截图] [核心代码] ComAir5Demo_V1.0.3 └── ComAir5Demo_V1.0.3 ├ ...

  3. OMAP的双核通信机制Codec Engine

    OMAP的双核通信主要是架构在Codec Engine,它是介于应用程序和具体算法之间的软件模块,其中的VISA API通过Stub和Skeleton访问Engine SPI最终调用具体的算法.Cod ...

  4. C#上位机,信捷XD系列modbus485通信例子

    C#上位机,信捷XD系列modbus485通信例子 例子简单易看懂.

  5. NCS初探--基于nRF5340的双核通信

    接上一章:NCS初探--基于nrf5340的双核测试 此次使用NCS自带的samples:entropy_nrf53,这个例子分为两部分,一部分是应用核代码,一部分是网络核代码,两部分代码完全分开,打 ...

  6. C#Winform窗体实现服务端和客户端通信例子(TCP/IP)

    Winform窗体实现服务端和客户端通信的例子,是参考这个地址 http://www.cnblogs.com/longwu/archive/2011/08/25/2153636.html 进行了一些异 ...

  7. lpc43xx双核处理器之双核通信

    从去年10月份开始学习lpc4357双核开发板,双核最主要的难点就是如何实现M4与M0的通信.nxp提供了3种通信机制,结合自己的理解整理如下: 1.Interrupt M4与M0各自有自己的NVIC ...

  8. 微信小程序| Ngork内网传统+后台API通信例子

    小程序和后台API通信   一.概述 小程序不可以直接访问后台接口,只能访问在线并且通过域名的接口:如果一定要访问后台,则需要通过内网穿透实现暴露到公网,工具为:ngrok,网址为:https://n ...

  9. Android Bluetooth蓝牙开发\蓝牙协议\蓝牙通信例子_Android支持蓝牙4.0版本_BLE开发

    一.Android Bluetooth现状 在android官网可以了解到android4.2新增了部分新功能,但是对于BT熟悉的人或许开始头疼了,那就是Android4.2引入了一个新的蓝牙协议栈针 ...

最新文章

  1. 为什么edge AI是一个无需大脑的人
  2. heroku_了解如何使用Heroku部署全栈Web应用程序
  3. xadmin引入样式无效
  4. c语言readline库6,readline-6.3 之arm平台交叉编译
  5. mysql如果数据不存在,则插入新数据,否则更新
  6. P1357 花园 (矩阵快速幂+ DP)
  7. leetcode 26 --- removeDuplicates
  8. LeetCode刷题(31)
  9. Uva 10817 校长的烦恼
  10. 不错的Nginx详解
  11. DSP28335学习笔记1
  12. 什么是低代码(LowCode)/无代码(NoCode)平台?
  13. SQL语法INSERT INTO_大数据培训
  14. SW练习_POJ1912_CCW_点线关系_未AC
  15. 黑盒测试技术(Decision Tables 决策表法,又称判定表法)——软件质量保证与测试
  16. 北京外企 外服控股:人服国企借道资产重组上市
  17. 课时23 递归:这帮小兔崽子
  18. .net篇(1)--js写日历
  19. TCP和UDP的详细内容
  20. html中row位置居中,如何快速找到html和row text对应的位置?

热门文章

  1. js前端 base64图片下载保存
  2. IS-IS路由器——Level-1-2路由器
  3. 洛谷 [P3480] KAM-Pebbles
  4. Simulink覆盖度详解-模型覆盖度
  5. nserror 自定义错误_NSError错误code对照表
  6. 迎己亥春节 故宫博物院首次复原“天灯”“万寿灯”
  7. 根据身份证号码来提取人员的信息【身份证号码的前六位所代表的省,市,区, 以及地区编码】的网上地址
  8. 如何才能躲过考验,fastapi+jinjia2
  9. 如何让Toast消息在应用退出后不再显示
  10. 网络设备怎么升级?(交换机、路由器等升级步骤)