DIY编程器网

标题: 一种车载多芯片间通信协议 [打印本页]

作者: admin    时间: 2015-5-2 11:08
标题: 一种车载多芯片间通信协议
  1 背景
  面对复杂多媒体的需求,传统的单片机(MCU)+CAN 总线的控制模式能力已经不足以应付,必须要引入计算能力更强的嵌入式ARMSOC(片上系统)芯片,因为其内部集成了众多的多媒体、通信、控制单元,成为了目前首选的芯片。
  这样就面临了另一个难题,在高性能的SOC(MPU)芯片和实时信号处理芯片(MCU)之间怎样进行通信呢?必须构建一种协议系统,满足这种新的需求。
  本研究课题的目的就是解决车载领域MCU和MPU之间的多芯片通信问题,设计一种小巧的,同时兼容性和稳定性强的协议来满足产品开发的需要。
  2 研究意义
  MCU运行传统的实时车辆信号处理,MPU负责处理运算量大的音频、视频、3G、WIFI、蓝牙等模块。同时在MPU 上运行Android 系统,保证了用户UI 的人性化,又可以利用Linux内核的兼容性和扩展性。
  本课题的意义就是基于上述框架研发出一种MCU 和MPU 之间的通信协议,这个协议必须具有以下几个要求:(1)兼容性好:为了能在物理连接上更灵活,降低成本,必须兼容多种物理接口,例如UART、USB 等等。
  (2)扩展性好:必须能够在基本的协议元素上扩充不同的消息定义,满足不同厂商不同车型的需求。
  (3)稳定性好:必须具备良好的数据完整性保证,MPU 和MCU 双方的通信的包必须经过CRC 校验,校验失败申请重发。另外通信的波特率设为可调。
  (4)实时性好:通过超时机制,可以设定300ms 的超时,一旦超过时限,MPU 和MCU都可以申请对方重发,而通信双方都必须以高优先级响应对方的请求。
  3 研究内容
  在这个新型车载娱乐系统中,我们引入了两个芯片单片机(MCU),嵌入式SOC 处理器(MPU),它们在整个系统中担负不同的角色。
  (1)单片机的作用主要是在整个体系中起到对传统车辆信号的兼容,实时接收CAN 总线上的信号,分析类型并按协议打包;实时接收仪表和其他诊断模块传来的信息,分类然后按协议打包发送。最后还有需要及时响SOC 对车辆的信号的请求消息。
  (2)SOC 处理器的作用是整个车载娱乐系统的核心,为了充分发挥其强大的处理能力和多媒体、通信模块的支持能力,在其上运行了Android 系统。SOC 处理器在多种娱乐通信任务上是强项,但是对于车辆实时信号的处理,则必须通过单片机来获取和控制。在本协议中它的主要角色是接收MCU 传来的消息,并进行协议解析和完整性校验,校验完成后的值通过不同的协议处理模块上报上层应用,按产品策略进行处理。对于校验不过和超时的消息则请求MCU重发。


  本车载多芯片通信协议架构可分为三层,即物理驱动层、协议接口层和应用接口层。
  最底层为物理驱动层,此层是整个协议传输的物理介质驱动,负责抽象硬件接口。它首先需要完成兼容性性实现,即对不同的硬件介质(如USB,UART)提供驱动并对上层提供统一的tty 接口。同时还得留出传输波特率等设置接口,以方便不同项目的硬件进行调节以保证容错性。
  中间层为协议处理层,该层是整个协议栈的核心内容。首先需要实现协议基础设施,如发送机制、接收机制、CRC 校验机制和超时重发机制,并抽象出API 接口。接着,需要按照厂商和产品的要求,实现不同的协议格式,如上汽的、一汽的协议格式,并对外提供统一的API 实现不同协议格式的兼容。最后通过协议分解数据包得到的功能头信息,来判别收到的数据包输入哪种消息,然后将消息发送到响应类型的处理模块,如CAN 消息处理模块。
  最顶层是应用接口层,主要功能是接收数据整合后发送到上层应用,并和上层应用交互。这层的实现需要用到Linux的几个系统调用机制,如Write、IOCTL,这是上层应用主动请求数据的接口,接口层收到这个命令将向MCU 发送请求消息。还有一种异步机制是netlink 机制,接口层得到MCU 传来消息以后通过netlink 主动上报事件给应用层,不需要应用层请求。综合使用这两类接口可以完整的满足上层对各种车辆消息的需求。__
  
作者: 李小路    时间: 2020-10-1 17:23
谢谢分享!




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2