1 汽车嵌入式开发新技术
嵌入式芯片经历了从单片微型计算机(SCM)、微控制器(MCU)到片上系统(SoC)的发展历程;嵌入式软件开发也由初期的汇编编程模式发展到当前广为流行的嵌入式C编程并向嵌入式C++迈进;由于系统资源配置的提高和嵌入式系统复杂性的增强,现代嵌入式开发广泛采用嵌入式实时操作系统。在上述发展过程中,系统设计理念和技术的发展进步、开发工具的广泛采用都极大地推动了嵌入式系统的高速成长。
将嵌入式开发移到可视化的建模仿真开发平台上,广泛采用自动代码生成技术是当前嵌入式系统发展的新模式和特点。在这种新的模式下,嵌入式系统的设计理念、开发流程、使用的开发工具都发生了巨大的变化
。可视化高层建模仿真开发平台与自动代码生成技术的结合贯通了系统设计、仿真、调试和产品级代码实现的整个过程,使得过去某些由少数人掌握的系统级设计任务可以很方便的由更多的开发人员在高层开发平台上进行原型设计、仿真和调试,大幅度减少了软件Bug,开发周期也大幅缩短。采用这种新的开发模式,可以在早期发现系统级的设计错误、进行设计改进;即使对于在实现的最后阶段发现的错误,由于采用了可视化的建模仿真开发平台和自动代码生成技术,修改设计的过程也比过去快很多。
作为人类文明重大成果的汽车产业在嵌入式开发过程中充分应用了嵌入式开发技术的最新成果。汽车行业广泛采用可视化的建模仿真开发工具MATLAB/Simulink/Stateflow进行嵌入式产品开发。而对自动代码生成工具的使用比比皆是。如汽车芯片供应商Infineon公司提供免费的图形化初始化代码生成工具——DAvE(Digital Application virtual Engineer)对其MCU产品进行I/O模块的初始化;许多OSEK操作系统供应商都提供图形化的操作界面来设置任务的属性,配置系统资源;dSPACE公司提供专业的代码生成工具——Targetlink来支持汽车嵌入式产品级代码的自动生成。
2 可视化的建模仿真开发平台—MATLAB/Simulink/Stateflow
MATLAB/Simulink/Stateflow是一个完整的开发环境。它将高性能的数值计算、可视化的框图设计环境、基于有限状态机的理论的复杂的事件驱动系统设计环境集成在一起。它可以:进行系统定义和实现;开发控制算法和嵌入式软件;支持浮点和定点算法的仿真和代码生成。MATLAB/Simulink/Stateflow对自动代码生成提供全面的支持,包含一下几个部分:Real-time workshop(Simulink)、Stateflow coder(Stateflow)、Real-time workshop embedded coder、Embedded target products(针对具体MCU)。Stateflow 与 Simulink 和 MATLAB 紧密集成,可以将 Stateflow 创建的复杂控制逻辑有效地结合到 Simulink 的模型中。它采用可视化建模仿真有限状态机模型;可以设计开发复杂的动态控制逻辑;自动生成浮点或定点C代码并具有简便的修改设计、评估结果、确认系统的品质。由于其强大的功能结合MATLAB/Simulink平台强大的计算和仿真调试能力在嵌入式软件开发领域获得广泛应用。航空航天和汽车行业是MATLAB/Simulink/Stateflow的2个最大的客户群。
3 SAEJ1939协议
SAE J1939协议是由美国汽车工程师协会——卡车和公共汽车电气电子委员会下的卡车和公共汽车控制和通讯网络分委员会制定的高层CAN网络通讯协议。它主要用于为重型道路车辆上电子部件间的通讯提供标准的体系结构[1]。
3.1 SAEJ1939协议构成文件
SAEJ1939协议包括如下几部分内容:
SAE J1939-11 物理层,250 Kbits/s,屏蔽双绞线
SAE J1939-13 物理层,离线诊断连接器
SAE J1939-15 简化的物理层,250 Kbits/s,非屏蔽双绞线
SAE J1939-21 数据链路层
SAE J1939-31 网络层
SAE J1939-71 车辆应用层
SAE J1939-73 应用层-诊断
SAE J1939-81 J1939网络管理协议
3.2 各层协议的功能
3.2.1 物理层
SAEJ1939的物理层规范包含SAE J1939-11(物理层,250 Kbits/s,屏蔽双绞线)、SAE J1939-15(简化的物理层,250 Kbits/s,非屏蔽双绞线)和SAE J1939-13(物理层,离线诊断连接器)三部分。其中SAE J1939-11和SAE J1939-15给出了物理层为屏蔽双绞线和非屏蔽双绞线时的网络物理描述、功能描述、电气规范、兼容性测试、总线错误讨论。而SAE J1939-13(物理层,离线诊断连接器)则定义了离线诊断连接器的通用需求、性能需求和物理需求。
3.2.2数据链路层
SAEJ1939的数据链路层在物理层之上提供了可靠的数据传输功能。通过数据链路层的组织,发送的CAN数据帧具有必需的同步、顺序控制、错误控制和流控制等功能。其中,流控制是通过一致的信息帧格式完成[2]。
数据链路层的功能通过命令、请求、广播/响应、应答、组功能和传输协议来实现。其中传输协议用于长度大于8个字节的参数组(PGN)的收发。传输协议涉及报文的拆装和重组,通讯方式又分为广播和点对点会话,对传输过程还定义了超时监测和错误处理,是数据链路层最复杂的部分。
3.2.3 网络层
SAE J1939的网络层定义了网络互联ECU的需求和服务,它们负责不同SAEJ1939网络段之间的互联。同时网络层也定义了各种类型的网络互联ECU和它们所提供的功能。
3.2.4 应用层
应用层详细定义SAEJ1939协议应用层所用到的SPN(可疑参数编号)和PGN(参数组)。该层包含管理功能和所采用的支持应用的机制。在应用层技术要求中,对报文格式、ISO拉丁字符集、参数范围、传输重复率、发动机参数的命名规则等方面都有具体的规定和描述[3]。应用层定义的SPN和PGN是最多的。