汽车FlexRay总线静态段调度方法及其实现研究车辆工程专业毕业论文pdf.docx
- 文档编号:12719157
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:55
- 大小:48.22KB
汽车FlexRay总线静态段调度方法及其实现研究车辆工程专业毕业论文pdf.docx
《汽车FlexRay总线静态段调度方法及其实现研究车辆工程专业毕业论文pdf.docx》由会员分享,可在线阅读,更多相关《汽车FlexRay总线静态段调度方法及其实现研究车辆工程专业毕业论文pdf.docx(55页珍藏版)》请在冰豆网上搜索。
汽车FlexRay总线静态段调度方法及其实现研究车辆工程专业毕业论文pdf
汽车FlexRay总线静态段调度方法及其实现研究-车辆工程专业毕业论文.pdf
万方数据
万方数据
合肥工业大学
本论文经答辩委员会全体委员审查,确认符合合肥工业大学学历硕士学位论文质量要求。
主席:
答辩委员会签名(工作单位、职称、姓名)
告\Þ业大号
伽-z-ø多
念)马
J云之z每〉税后)
吾版j友
及,)和格
万方数据
导师:
动肝号仰在
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
zhikuquan20150807
万方数据
zhikuquan20150807
万方数据
zhikuquan20150807
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
万方数据
合肥工业大学学历硕士研究生学位论文
第四章FlexRay网络节点设计
在汽车Flexihy网络通信系统中,普遍采用基于‘‘v”模式的开发流程,如图4.1所示。
该开发流程能够极大地减少重复开发过程,降低开发周期,从而达到节约成本的目的。
目前,汽车工业主要采用的是“零部件供应商+整车制造商”的研发分工
模式,对于FlexRay系统来说则分为两级:
网络级和节点级[461。
(1)网络级:
整车制造商或总体设计单位首先完成FlexRay总线的网络协议
规范以及通信调度表的设计。
将仿真验证的结果以FIBEX文件形式分发给零部件供应商或分系统设计单位,然后由零部件供应商或分系统设计单位完成对单个ECU软、硬件开发和功能验证,最后整车制造商或总体设计单位完成整个网络的
集成、通信系协议规范的制定以及物理层测试等相关工作。
(2)节点级:
零部件供应商或分系统设计单位负责根据通信调度机制实现带
FlexRay接口的ECU软、硬件设计,其中,ECU软件设计涵盖了调度算法设计以及通信协议栈代码等内容,在ECU开发完成后,进一步对开发出来的ECU进行测试。
本章将着重介绍FlexRay节点级的开发流程。
网络规划,
网络设计测试
0EMdation
//Verification
Supplier、、
\/
、/
\/
\/
\,
、,
ECU开发,实现
图4.1FlexRayV模式开发流程
Fig.4.1FlexRaydevelopmentprocessofVmodel4.1FlexRay网络节点硬件设计
市场上FlexRay的半导体厂商和产品类型十分丰富,可供的选择性很多,结合市场份额中产品应用情况以及实验室条件,本文选用飞思卡尔公司的
MC9S12XF512作为主控芯片,同时为T/g.-J能降低其他系统模块对FlexRay节点的干扰并简化开发流程,选用NXP公司的TJAl080型收发器搭建FlexRay硬件平台,并以该平台为基础完成总线系统的开发以及相关功能的测试。
万方数据
第四章FlexRay网络节点设计
4.1.1节点硬件架构FlexRay网络节点必须具备两个基本功能。
一是通过使用独立总线通信完成对
节点各功能模块控制管理和信息采集,二是通过总线将本节点信息上传信息处理单元进行处理或分享。
目前,比较成熟的FlexRay节点结构主要有两大类:
一是各模块均为独立的控制单元,分别为微控制单元、通信控制器、总线控制器,该方式集成度较低,得益于市场上各产品供应商多、选择面广且易于实现;二是在主控芯
片中集成通信控制器,则节点结构由主控芯片和总线控制器构成鲫,该方式集成
度高,同时在节点布置过程中可将各部分分离,避免干扰,从某种意义上说提高了汽车网络的可靠性,本文将采用第二类设计思路。
前文已经对整个网络采用的产品进行了选型,节点主要包括微控制单元(MCU)和收发器两部分,共由四个组件构成:
S12X内核、FlexRay通信控制器、总线监视模块及总线驱动模块1481。
本文采用的MC9S12XF512型MCU内集成了S12X内核和FlexRay通信控制器,在总线收发器内集成总线监视和驱动模块,如图4.2所示为本文设计的FlexRay节点结构的各功能框架图。
通道A
通道B
图4.2FlexRay节点结构
Fig.4.2FlexRaynodestructure
MC9S12XF512芯片是飞思卡尔HCSl2系列芯片的增强型产品,增加了能够进行独立编程的协处理器XGATE实现对外围电路和RAM直接操作,能够执行32位运算,支持FlexRay/CAN/LIN等总线1491。
在支持FlexRay网络通信方面,该芯
片支持以下功能:
支持FlexRayV2.1协议规范,可实现双通道冗余通信,总线带
宽可选2.5/5/8/10Mbps四种;外接时钟在4MHz和40MHz之间进行分频:
可配置消息缓存达32个,可自由将该缓冲配置为接收缓存,发送缓存,并可以将32个缓存配置到两个不同的缓存段;6个独立的中断通道可用于接收缓存,发送缓存,通
27
万方数据
合肥工业大学学历硕士研究生学位论文道A接收队列,通道B接收队列,错误处理,唤醒处理,还具有以下功能。
(1)S12X内核为50MHz,CISC架构以16位元为基础;
(2)FLASH采用512KB保存程序和原始数据;(3)EEPROM为4KB用来保存一些半永久的数据;RAM为32KB用来做堆
栈及保存动态数据;目前,占据着FlexRay总线收发器市场中不俗份额的是恩智浦公司的TJAl080,
经过多年的工程应用,TJAl080已经显示了其在实现FlexRay通信方面特有的巨大优势。
TJAl080内部主要包含6个模块,具体功能框图如图4.3所示,发送器和接收器模块完成信号的收发,信号路由模块负责对信号转发,状态机实现按照信号类型给信号路由指导信号转发的对象,总线监测模块、总线失效检测模块负责对总线的运行状态进行监控[491。
在正常工作模式下,主机是通过收发器的BP和BM引脚来完成数据的收发,之后将接收到的数据按照帧的形式放到接收滤波器中进行滤波,剔除掉不在地址范围内的数据放入FIFO端口中。
总线型模式下共有五种工作状态:
正常模式、只收模式、待用模式、进入休眠模式和休眠模式,而在星型模式下则有六种工作状态:
星型空闲、星型发送、星型接收、星型休眠、星星待用和星型锁定。
总线型模式和星型模式是在上电阶段通过端口接法的不同进行配置的。
:
麓鍪i爹}.}j圈;翟I
RMX/-;N141≤≥藜添雾《曩I霸Iv≈稿瓣嚣目i*捆圈■_螺曩■翻暖墨圈
詈昌詈置暑量日
i蘩《蠢§§l攀。
;
屯彝9啦接d
图4.3TJAl080结构图
Fig.4.3TJAl080structurediagram
4.1.2系统原理框图
本文搭建的FlexRay实物节点硬件系统结构如图4.4所示,中央的主控芯片MC9S12XF512负责协调和调用相关模块实现各自功能,附属模块中包括收发器TJAl080、PCI芯片、指示灯组、看门狗、时钟、键盘等部分。
在收发器中总线消息被MC9S12XF512芯片接收后即刻触发中断响应,同时调用中断程序对接收到的数据进行处理,接收到的数据存放在MC9S12XF512缓冲区中,中断服务程序能
万方数据
第四章FlcxRay网络节点设计
够从该缓冲区中提取FlexRay总线上其他节点发出的消息和数据。
当主机需要发送数据时,是接收消息的逆过程,首先主机将待发送的数据存放到MC9S12XF512发送缓冲区,之后通信控制器将对该数据自动处理完成编码等相关操作,最后该数据以数据帧的形式通过收发器模块在总线上完成发送。
FI麒Ray
ABUS
FlexRayBBUS
CANBUS
图4.4节点硬件结构
Fig.4.4nodehaniwares协lchlIe
4.1.3节点硬件电路设计
1.硬件电路原理图
本文设计的FlexRay网络节点的硬件板完整电路原理图如图4.5所示,其中接口x1是BDM接口,芯片通过该接口可进行接口调试或者连接FlexRayA/B总线实现数据之间的通信:
接口B则是输出电源信号同时对内部总线进行串联完成内
部总线的架构设计;硬件板的核心模块是最中间部分的MC9S12XF512主控芯片.它负责实现FlexRay总线通信的核心控制过程,通过内部总线对各模块进行协调控制,保证整个系统的正常运行;在主控芯片外围连接的电路包括通过外接SPI的进行数据永久记录的电路、进行复位的看门狗电路、进行模拟信号数字信号转换的AD接口电路以及对全局时钟信号处理的电路等;POATA/B/T等端口能够实现独立总线信号的驱动、端口复用以及信号匹配等功能。
2.收发器TJAl080T电路设计
TJAl080T收发器通过JPl2与主芯片相连接,如图4.6所示,连接的端口包括以下几种:
TXD、TXEN是用来向总线上发送数据的:
RXD、RXEN是用来从总线上接收数据的;ERRN是用来指明收发器检测出的总线错误,同时从这个引脚读取该错误代码;WAKE是用来唤醒收发器的作用。
此外,在总线网络拓扑结构配置的时候要使用到TRXDI和TRXD0引脚,如果需要将总线配置成主动星型结构,则将这两个引脚同时接VBUF弓l脚,如果需要将总线配置成节点结构,则将这两个引脚接GND即可,为使两种结构之间转换方便,在这两个引脚设计了两个转换
开关306、J307可任意选择总线模式。
万方数据
合肥工业大学学历硕士研究生学位论文
图4.5节点电路原理图
Fig.4.5nodeofthecircuitprinciplediagram
(369
JJAltlgO-I
图4.6TJAl080电路图
Fig.4.6TJAl080circuitdiagram
FlexRay总线在传输信号时和CAN一样采用的是差分信号,本文为避免在总线传输过程中的电磁干扰同时增强电磁兼容性,在总线输出端采用的滤波模块是共模电感,同时采用分裂终端的连接方式严格按照FlexRay协议要求进行阻抗匹配,根据以往设计经验以及FlexRay总线协议中推荐的阻抗标准为80【卜110Q,在
本文中可以看到是有两个47Q电阻串联而成,即为941)。
万方数据
第四章FlexRay网络节点设计
4.2FlexRay网络节点软件设计
4.2.1节点软件整体框架静态段时隙动态分配机制软件设计整体框架如图4.7所示,主要包括初始化配
置模块、数据收发模块和SDAS模块三大部分,其中SDAS模块是由消息缓冲区
模块和SDAS调度器模块构成。
每个模块都有各自的分工任务,具体所担任的角色如下:
初始化配置模块主要起到两点作用:
一是对FlexRay节点在启动之前进行的初始化及配置函数,包括相关寄存器初始化配置、中断函数初始化配置、总线波特率配置、唤醒启动媒体访问检测信号及模式改变函数配置等:
二是对SDAS模块中SDAS调度器以及缓冲区模块的参数配置,包括待发送和接收消息缓存区阈值
的设置、整个网络中FlexRay节点数目更新、调度器工作模式下消息优先级配置
等。
图4.7节点软件整体框架
Fig.4.7Theoverallframeworkofthenodesottware
数据收发模块主要起到的作用是在SDAS机制下实现各个节点之间消息数据的发送和接收,确保SDAS模块的正常运行,进一步验证SDAS机制的有效性。
SDAS模块主要起到的作用是实现汽车FlexRay总线静态段时隙动态分配调度机制。
它是由消息缓冲区模块和SDAS调度器模块构成,能够实现节点待发送的消息有序排列,在新消息达到时,能够按照调度策略加入到缓冲区消息队列的准确位置,同时在总线通信期间,能够按照FlexRay通信协议将消息队列最前端的消
息配置成相应的ID,消息即可在通信周期的相对应的时隙完成发送。
4.2.2初始化配置模块
初始化配置模块的主要任务就是在总线启动时对相关参数进行初始化配置,包括按照适当的FlexRay时序和定时对FlexRay模块配置、FlexRay总线带宽波特
31
万方数据
合肥工业大学学历硕士研究生学位论文
率配置以及相关协议引擎参数配置、CRC计算配置、消息缓存中断使能配置以及
绝对时钟和相对时钟中断使能配置等。
初始化配置的过程如图4.8所示,首先要使能FlexRay控制器芯片,之后将对FlexRay控制器进行复位操作,为了能够让消息按照FlexRay时序和定时进行通信,将进一步配置FlexRay全局参数,包括通用参数、静态段参数以及动态段参数,其中通用参数包括FlexRay总线带宽波特率、同步节点最大数目、最大时问节拍长度、周期长度、静态段和动态段长度、符号窗口长度、偏移修正起始以及TSS发送次数等,静态段参数主要包括静态段数目、静态时隙长度、动作点偏移量和静态段负载长度等,动态段参数主要包括最小时隙的最大数量、最小时隙长度、最小时隙动作点偏移量和动态段最大负载长度等;全局参数配置完成后将初始化中断方式和通信控制器的工作状态,完成后即可进入工作模式,最后再根据各节点是否能够满足实际功能需求确定是否进入应用程序。
F1exR甜控制器硬件使能
上Fl饮R掣控制器复位J
配置FIc)汛町全局参数
初始化中断方式
J
初始化通信控制器
J
初始化工作模式
J
<竺竺二)
士是
图4.8初始化流程
Fig4.8InitializationProcess
此外,初始化配置模块的作用还包括对SDAS模块中SDAS调度器以及缓冲区模块的参数配置,包括待发送和接收消息缓存区阂值的设置以及与之关联的定时器初始值的设定、整个网络中FlexRay节点数目更新、轮询模式下消息优先级的
万方数据
第四章FlexRay网络节点设计
配置等。
4.2.3数据收发模块
SDAS模块中各节点数据在SDAS机制下的通信有效性是以消息帧的准确发送和接收为前提的,而消息缓冲区模块和SDAS调度器模块则为数据收发模块的精确性提供了可靠的保障。
数据收发模块的作用就是在SDAS机制下实现各个节点之间消息数据的发送和接收,确保SDAS模块的正常运行,为进一步验证SDAS机制的有效性提供基础。
进入发送函数
检查数据长度
妻掌慧豢萎喜岁延辈箩/
±N
忑矗磊]
总线时钟卸、=>—』
+N
蘸≥一器
土二
将要发送的内容写到
发送缓冲区
启动发送命令
返回成功)【返回失败
图4.9消息发送与接收流程
Fig4.9Processofmessagesendingandreceiving
消息发送和接收的过程如图4.9所示,其中在消息发送模式时,首先检查通信控制器中缓冲区是否存在空闲空间,只有当发送缓冲区中存在空闲空问时,待发送的消息方可写入发送缓冲区,在写入发送缓冲区前,需要根据待发送消息的优先级
33
万方数据
合肥工业大学学历硕士研究生学位论文
判断该消息应写入的缓冲区队列所处位置,写入完成后即可等待发送;在消息接收模式时,在消息到来后将会触发接收中断函数,之后将根据帧m和消息ID对接收的消息帧进行过滤,通过过滤的消息帧将被通信控制器读取,完成一次完整的消息帧接收,该中断接收消息帧的策略能够有效保证消息的实时性,从而提高系统的安全可靠性。
数据收发模块与SDAS模块密切相关,作为通信时的保障系统需严格按照核心机制的要求实施,如在消息发送模式下,消息优先级的设定以及消息帧发送时消息ID与帧ID的分配等,在消息接收模式下,在收到消息帧后要首先写入接收缓冲区等待处理。
需要特别说明的是,在消息接收过程中,由于FlexRay通信控制器在出错情况下存在修改相关指示位的可能,进而导致帧头CRC与接收节点无法匹配,数据不能被准确及时接收,本文在接收到帧头后接收节点会在其通信控制器中遵照统一算法计算帧头CRC,如果计算结果与发送节点发送的头部CRC一致,则表明该帧的帧头部分正确,也表明数据部分未作修改。
4.3SDAS模块设计
4.3.1SDAS调度器模块设计
本文SDAS调度器模块将软件设计的过程化分为三个层次:
应用层中主要有对应新消息到达的消息事件(MessageEvent)和对应调度时刻到达的调度事件(ScheduleEvent);在策略层中调度器针对事件的类型做出相应的动作,当消息事件发生时将按照规定的优先级算法完成消息入队的任务,当调度事件发生时依次完成消息出队和为消息分配时隙的任务,被分配时隙的消息将进入相应的缓冲区等待发送;在执行层中通信控制器会在当前通信周期内各时刻根据总线协议将待发送的消息发送到总线上完成通信,整个调度器设计的框架原理如图4.10所示。
应用层MessageEven!
ScheduleEvent
一一._J_一一一
●●
策略层消息入队消息fI{队
J
SDAS调度器
为消息分配时隙
————————————————l『
执行层消息进入缓冲区等待通
信控制器发送
图4.10调度器框架原理
Fig4.10Theschedulerframeworkprinciple
万方数据
第四章FlexRay网络节点设计
SDAS调度器的运行过程如图4.11所示,程序接收到事件中断后,将对事件类型进行判断。
如果发生的是消息事件,则判断消息队列是否为空,如果队列为空就将该消息放入队头,等待新事件发生,如果队列不为空就根据RM算法将待该消息与消息队列中消息进行优先级比较,完成消息入队的工作,消息入队完成后等待新事件发生;如果发生的是调度事件,同样判断消息队列是否为空,如果消息队列为空就不操作,等待新事件发生,如果消息队列不为空就判断队列中消息数目是否大于该节点所分配到的时隙数目,如果消息数目不大于时隙数目就出队消息队列中所有消息,依次为出队的消息分配静态时隙Ⅲ,进而进入相对应的缓冲区等待发送,如果消息数目大于时隙数目就从队头依次取出等时隙数目的消息,依次为出队的消息分配静态时隙D,进而进入相对应的缓冲区等待发送;如果消息事件和调度事件同时发生,将按照调度事件的流程进行。
图4.11SDAS调度器工作流程F逅4.11TheSDASschedulerworkflow
4.3.2关键技术设计
1.消息队列设计
本文设计的消息队列是由四个队列共同实现的:
消息列表、RM队列、发送周期队列和周期索引队列,其中发送周期队列和周期索引队列一一对应,发送周期队列中存放的是节点中周期性消息的发送周期,周期索引队列指向发送周期队列中
35
万方数据
合肥工业大学学历硕士研究生学位论文
对应消息在消息队列中的序号,RM队列中存放的是消息列表中等待发送的消息按照RM算法排列后的位置序号,消息列表中存放的是消息的相关属性内容。
消息队列的结构如图4.12所示,Message5是还未产生的消息,其余消息均是等待就绪准备处理的。
U
4Message2l·●—一-’5
游2
lMessage66●1·8
●卜'5
碴
3
O●■
4
Message4●卜一■
5-Message8·5·
p6
6Message5●■
7i一7-l
8
8●卜_-o
9
9
图4.12消思队列结构
Fig4.12Themessagequeueslrueture
消息队列中单个消息的数据结构定义如下:
structMSG
{
charmsg——state;INT8USourceNode;INT8UDestNode;INT32UBuffer[n];
}Message[msg_buffermax];
其中,msg—state表示消息的状态,是指示消息是否已被核心模块处理的指示位,如果消息己被处理则置O,并释放该单元,如果没被处理则置1,等待处理;SoureeNode和DestNode分别表示消息的源节点和目标节点;Buffer[n]定义了n个消息存放单元,该存放单元为静态字节数组,用来存放通信模块中接收到的消息。
消息队列的设计是为了解决本文调度器中消息入队、消息出队和为消息分配时隙的关键问题。
下面以消息入队为例进行着重介绍,消息封装完成产生后会以轮询【50】的方式在消息列表中查找空闲项并准备放入,放入后对应的msg_state位置1,同时将该消息发送周期值和在消息队列索引值分别赋到发送周期队列和周期索引队列中,消息状态位置l后将在RM队列中从队列第一项依次根据发送周期和周期索引队列中信息进行优先级比较,直到下一元素比该消息优先级小为止,此时,
万方数据
第四章FlexRay网络节点设计
将该消息在消息列表的索引值插入RM列表中恰比其优先级小的位置等待总线调度,消息入队完成,具体流程如图4.13所示。
周期消息产生
N
消息列表是否空闲
、、T_/
放入消息列表
置msg_statvffiI
填充发送周期队列和周期索引队列
N
消息优先级是否比RMep下一元素高
\、f/
消息列表索引值放入RM列表等待调度
入队完成
图4.13消息队列工作流程
Fig4.13Themessagequeueworkflow
2.定时器设计
系统各模块在具体实现过程中都有定时器的参与,例如各节点周期发送通信消息、调度时刻定时中断发送数据等,然而单片机的硬件定时器资源有限,无法为各模块在具体实现过程中的所有进程都分配硬件定时器,本文将在硬件定时器的基础上进行设计,实现多个软件定时器的功能,以实现系统的各个功能需求。
对于具有相同定时时基的模块,在软件定时器的设计过程中可以采用相同的数据结构进行组织,同时提供统一的函数调用接口,这种方法就是“定时器管理”【51-53]。
本文软件定时器的设计方法是静态数组法,前文消息队列中发送周期队列采用的就是这种方法,同一时基下的所有定时请求在特定的定时器数组中保存,数组中的各个元素均可表征一个独立的定时器单元。
本文发送周期队列中最初写入的是某消息的发送周期,由于发送周期是以通信周期为单位的,因此该队列的基定时器为通信周期长度,每到定时器的定时值
37
万方数据
合肥工业大学学历硕士研究生学位论文
到时,写入的数值自减l,在自减为O时完成一次循环,立即重新写入最初
的数值同时发送消息。
本文定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车 FlexRay 总线 静态 调度 方法 及其 实现 研究 车辆 工程 专业 毕业论文 pdf