本发明涉及一种减少整车网关转发丢帧的方法及装置。
背景技术:
随着整车域控制器架构的普及,网关功能属于域控制器功能中的一部分也越发显得越来越重要。目前域控制器的整体架构都是微控制器mcu+性能控制器soc的组合形式,mcu上搭载的是autosar操作系统,主要负责整车实时性的任务,与整车的can、lin和以太网网络进行通信;而soc上搭载的是qnx或者是linux操作系统,主要负责域控制器计算相关的任务。
网关功能部署在mcu上,主要任务是读取整车can网络的信号,并且将其通过以太网发送到soc进行数据计算;而soc经过计算后会有一些整车的控制指令,需要通过以太网发送到mcu,mcu再将其解析成can报文发送到整车can网络中。车载以太网的传输速率大都是100m/s或者1000m/s,而can网络的传输速率大都是500k/s,传输速率相差百倍以上,因此会有某个时刻有大量以太网控制命令报文需要网关(mcu)转发到can网络,由于can网络的传输速率受到限制,而网关(mcu)又没有能力存储大量的以太网报文,从而会导致网关转发丢帧。
mcu的芯片厂商在设计can模块的时候,考虑到了can传输速率略低会导致can报文丢帧的情况,因此他们在can模块底层设置了can硬件缓存用于暂时存储无法发送到can总线的报文。但是can硬件缓存一般也不会设置的过大,当需转发大量数据超过can硬件缓存的存储空间时,仍然会出现转发丢帧问题。
技术实现要素:
本发明的发明目的在于提供一种减少整车网关转发丢帧的方法及装置,能够有效解决网关在转发大量数据时出现的丢帧问题。
基于同一发明构思,本发明具有两个独立的技术方案:
1、一种减少整车网关转发丢帧的方法,包括如下步骤:
步骤10:微控制器mcu接收性能控制器soc发出的控制指令,并将所述控制指令解析成can报文以发送到整车can网络中;
步骤20:微控制器mcu判断第一缓存中的数据是否已满,如果否,则将所述can报文存入第一缓存;如果是,则进入步骤30;
步骤30:微控制器mcu判断第二缓存中的数据是否已满,如果否,则将所述can报文存入第二缓存;如果是,则放弃所述can报文存储。
进一步地,步骤10中,微控制器mcu将接收到的以太网报文转换成can报文,或者通过can网直接接收can报文。
进一步地,步骤10与步骤20之间包括:
步骤15:判断第二缓存中的数据是否为空,如果是,则进入步骤20;如果否,则进入步骤30。
进一步地,第一缓存中的can报文优先于第二缓存中的can报文被转发至can网络。
进一步地,所述第一缓存为微控制器mcu的can硬件缓存。
进一步地,所述第二缓存为在微控制器mcu的ram上独立设置的缓存空间。
2、一种减少整车网关转发丢帧的装置,包括微控制器mcu和性能控制器soc,所述微控制器mcu用于接收所述性能控制器soc发出的控制指令,并将所述控制指令解析成can报文以发送到整车can网络中,
所述微控制器mcu包括第一缓存和第二缓存,所述第一缓存为所述微控制器mcu的can硬件缓存,所述第二缓存为在所述微控制器mcu的ram上独立设置的缓存空间;
所述微控制器mcu将接收到的can报文优先存储在第一缓存中,当第一缓存存满时,存至第二缓存中;若第二缓存也已存满,则放弃所述can报文的存储。。
进一步地,所述微控制器mcu首先判断第二缓存中的数据是否为空,如果否,则将将数据存储至第二缓存中。
进一步地,第一缓存中的can报文优先于第二缓存中的can报文被转发至can网络。
本发明具有的有益效果:
本发明mcu包括第一缓存和第二缓存,第一缓存为mcu的can硬件缓存,第二缓存为在mcu的ram上独立设置的缓存空间,第一缓存中的数据已满时,数据存入第二缓存,增加了待转发数据的存储空间,有效解决网关在转发大量数据时出现的丢帧问题。而且,本发明无需新增硬件存储设备,有效节省了成本。
本发明第一缓存中的can报文优先于第二缓存中的can报文转发至can网络,首先判断第二缓存中的数据是否为空,如果否,则无需再判断第一缓存数据存储情况,直接将数据存入第二缓存,有效缩减程序,提高数据存储速度。
本发明在发送完一个can报文后的中断阶段,检查第二缓存中是否存储有can报文,如果是,则将该can报文从第二缓存转移至第一缓存,下次再发送报文时,节省数据从第二缓存转移至第一缓存的程序,提高数据转发速度。
附图说明
图1是本发明方法的总体流程图;
图2是本发明方法发送完一个can报文后中断阶段的流程图。
具体实施方式
下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
实施例一:
减少整车网关转发丢帧的方法
一种减少整车网关转发丢帧的方法,包括如下步骤:
步骤10:微控制器mcu接收性能控制器soc发出的控制指令,并将所述控制指令解析成can报文以发送到整车can网络中;
微控制器mcu将接收到的以太网报文(控制指令)转换成can报文,或者通过can网直接接收can报文。
步骤15:微控制器mcu判断第二缓存中的数据是否为空,如果是,则进入步骤20;如果否,则进入步骤30;
所述第二缓存(软件缓存)为在微控制器mcu的ram上独立设置的缓存空间。
步骤20:微控制器mcu判断第一缓存中的数据是否已满,如果否,则将所述can报文存入第一缓存;如果是,则进入步骤30;
所述第一缓存(硬件缓存)为微控制器mcu的can硬件缓存。
步骤30:微控制器mcu判断第二缓存中的数据是否已满,如果否,则将所述can报文存入第二缓存;如果是,则放弃所述can报文存储。
第一缓存中的can报文优先于第二缓存中的can报文被转发至can网络。
具体实施时,如图1所示,线路①②③④⑤:首先mcu接收到以太网报文后,会根据自定义的以太网和can报文的转换协议,将以太网报文转换成can报文的格式。然后检查当前第二缓存(软件缓存)的情况,如果第二缓存(软件缓存)中为空的话,则判断第一缓存(硬件缓存)是否已满,若没有满,则直接将数据压入到第一缓存(硬件缓存)中,准备数据发送。线路①②③⑦⑨:这条线路是在第⑦步的时候检查第一缓存(硬件缓存),发现第一缓存(硬件缓存)已满,此时为了不丢帧,则直接将数据暂存在第二缓存(软件缓存)中,因此此时要检查第二缓存(软件缓存)是否已满,若没满则顺利放入第二缓存(软件缓存)中,若已满则表示当前的存储已经达到网关的上限,只能丢弃该报文。线路①②⑥⑨:这条线路是在第⑥步的时候,检查第二缓存(软件缓存)是否为空,发现不为空则将can报文直接放在第二缓存(软件缓存)中,这么做的目的主要是让报文能够按照先入先出的规则进行发送,保证发送的顺序一致性,因为已经有can报文存放在第二缓存(软件缓存)中,那么现在这帧can报文就不能直接放在第一缓存(硬件缓存)中,因为第一缓存(硬件缓存)会比第二缓存(软件缓存)具有更高的发送优先级。
如图2所示,在发送完一个can报文后的中断阶段,检查第二缓存中是否存储有can报文,如果是,则将该can报文从第二缓存转移至第一缓存。
具体实施时,在can控制器发送完一个can报文后,会进入到can发送完成中断中,此时检查第二缓存(软件缓存)中是否有数据,若没有数据则直接结束中断,否则直接将第二缓存(软件缓存)中的数据压入到第一缓存(硬件缓存)中,中断结束。在第二缓存(软件缓存)的数据压入到第一缓存(硬件缓存)之前,并没有判断第一缓存(硬件缓存)的情况,主要是因为只要进入到can的发送完成中断中,必定表明此时can控制器已经从第一缓存(硬件缓存)中取走了一个can报文,因此第二缓存(软件缓存)中的数据压入到第一缓存(硬件缓存)中不会出现缓存已满,无法压入的情况。在中断处理函数中减少不必要的判断是很有必要的,这样能够减少中断的时间,对其他功能的影响能够降到最低。
上述的流程针对的是以太网到can报文的转发,同样适用于can报文到can报文的转发,只是这些流程会放在can报文的接收中断中去处理,这样能够最大限度的优先处理can报文,降低转发的延迟。
实施例二:
减少整车网关转发丢帧的装置
包括微控制器mcu和性能控制器soc,所述微控制器mcu用于接收所述性能控制器soc发出的控制指令,并将所述控制指令解析成can报文以发送到整车can网络中,
所述微控制器mcu包括第一缓存和第二缓存,所述第一缓存为所述微控制器mcu的can硬件缓存,所述第二缓存为在所述微控制器mcu的ram上独立设置的缓存空间;
所述微控制器mcu将接收到的can报文优先存储在第一缓存中,当第一缓存存满时,存至第二缓存中;若第二缓存也已存满,则放弃所述can报文的存储。。
所述微控制器mcu首先判断第二缓存中的数据是否为空,如果否,则将将数据存储至第二缓存中。
第一缓存中的can报文优先于第二缓存中的can报文被转发至can网络。。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。