探秘汽车数智化,一文速览服务型网关前世今生

发布时间:2022-11-25点击率:

在汽车数智化和自动驾驶趋势下,汽车已然变成一个移动的智能终端,这促使车载数据指数级暴涨。海量数据的传输、处理和挖掘需要新一代电子电气架构的支撑,而作为新一代汽车电子电气架构三大核心板块,智能座舱、自动驾驶和中央网关都在以面向SOA架构为基础上升级演变,以满足日益增长的需求。

纵观网关的演进历程和趋势可以发现,传统网关正朝着混合网关、服务型网关、中央网关的方向升级,本文将带你速览网关发展的前世今生,探秘汽车网关数智升级之路。

网关的前世:从分散独立到集中融合

时间回到1968年,大众1600轿车首次在发动机中安装了ECUElectronic Control Unit,电子控制单元),用来控制燃油喷射,这是ECU首次出现在汽车中。

随着汽车的发展,越来越多ECU被使用,实现了更为丰富的功能。它们既独立运行,又互相交互。起初,每两个ECU之间的信息传递,都必须通过独立的线缆“单线联系”。为了提升ECU之间信息传递的效率,减少所需要的线缆,CAN总线架起了ECU间的“主干道”,串起所有ECU,实现了“车同轨”。

但随着ECU数量的不断增加,一条“主干道”越来越不堪重负,为了避免“拥堵”,相关功能的ECU被一条单独的CAN主线联接起来,再通过CAN网关这个“交通枢纽”,将所有CAN主线联接起来,形成完整的信息“交通网络”。


随着智能座舱、自动驾驶等功能域的布局,对于数据的传输速率、稳定性、响应速度等性能提出了更高的要求。由于CAN网关无法满足需求,带宽更大的以太网关得到应用。然而,并非所有的功能都需要通过以太网关来实现,因此便出现了融合CAN网关和以太网关的新一代混合网关。三者构成了目前市场三大网关。

随着电子电气架构的升级和网关技术方案的演变,网关正从以硬件为中心的传统模型逐步过渡到基于软件、以服务为中心的模型。在软件定义汽车的背景下,网关已不仅仅是承担通讯路由的功能,而是整车网络的数据交互中枢,为车载网络之间提供无缝通信,同时让与云端互联的车辆,可以实现车辆OTA升级、应用服务更新等持续服务。

进击的服务型网关

与传统网关的通讯路由不同,服务型网关是面对用户,面向需求场景,面向智能服务,对数据进行“精加工”,既包括对本地数据进行即时计划和决策,也包括将经过计算的数据输送到云端进行交互。

同时,服务型网关也可以作为智能网联汽车的一道安全防火墙,帮助大幅度减少网络攻击的风险,最大限度保障驾乘、使用和信息安全。

基于现有汽车网关的升级替换和汽车数智化的带动,可预见未来几年汽车网关需求将迎来较快增长。据相关机构测算, 2025年国内汽车网关仅存量替换市场规模就可达150亿元。

联友科技新一代服务型网关

联友科技服务型网关涵盖传统CAN/FD、以太网网关的所有功能,最大支持20CAN/FDLIN通信,支持5路百兆以太网、2路千兆以太网,并可根据实际需求扩展。主芯片采用国产异构芯片设计,4*Cortex-A55 + Cortex-R5锁步架构,满足高性能的计算需求;功能安全满足ASIL-D,保证稳定运行;内存配置采用8Gb LPDDR464Gb EMMC256Mb Nor Flash,满足大容量运行及存储需求。

联友科技新一代的服务型网关,采用面向服务架构的设计,使用经典AUTOSAR+自适应 AUTOSAR中间件的开发体系,结合云端SOA场景服务引擎,形成端云一体SOA整体解决方案,可实现功能更快迭代,高效率、高安全、高算力,为车企创造长期价值,助力汽车数智化。

''标签解析异常!
引发类型为“System.OutOfMemoryException”的异常。
在 System.String.CreateStringFromEncoding(Byte* bytes, Int32 byteLength, Encoding encoding) 在 System.Text.UnicodeEncoding.GetString(Byte[] bytes, Int32 index, Int32 count) 在 System.Data.SqlClient.TdsParserStateObject.TryReadString(Int32 length, String& value) 在 System.Data.SqlClient.TdsParser.TryReadSqlStringValue(SqlBuffer value, Byte type, Int32 length, Encoding encoding, Boolean isPlp, TdsParserStateObject stateObj) 在 System.Data.SqlClient.TdsParser.TryReadSqlValue(SqlBuffer value, SqlMetaDataPriv md, Int32 length, TdsParserStateObject stateObj, SqlCommandColumnEncryptionSetting columnEncryptionOverride, String columnName) 在 System.Data.SqlClient.SqlDataReader.TryReadColumnInternal(Int32 i, Boolean readHeaderOnly) 在 System.Data.SqlClient.SqlDataReader.TryReadColumn(Int32 i, Boolean setTimeout, Boolean allowPartiallyReadColumn) 在 System.Data.SqlClient.SqlDataReader.GetValues(Object[] values) 在 System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values) 在 System.Data.ProviderBase.SchemaMapping.LoadDataRow() 在 System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping) 在 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue) 在 System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords) 在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) 在 Whir.Repository.Database.Query(String sql, Object[] args) 在 Whir.Label.Dynamic.Content.GetColumnFileValue() 在 Whir.Label.Dynamic.Content.Render(HtmlTextWriter output)
''标签解析异常!
引发类型为“System.OutOfMemoryException”的异常。
在 System.String.CreateStringFromEncoding(Byte* bytes, Int32 byteLength, Encoding encoding) 在 System.Text.UnicodeEncoding.GetString(Byte[] bytes, Int32 index, Int32 count) 在 System.Data.SqlClient.TdsParserStateObject.TryReadString(Int32 length, String& value) 在 System.Data.SqlClient.TdsParser.TryReadSqlStringValue(SqlBuffer value, Byte type, Int32 length, Encoding encoding, Boolean isPlp, TdsParserStateObject stateObj) 在 System.Data.SqlClient.TdsParser.TryReadSqlValue(SqlBuffer value, SqlMetaDataPriv md, Int32 length, TdsParserStateObject stateObj, SqlCommandColumnEncryptionSetting columnEncryptionOverride, String columnName) 在 System.Data.SqlClient.SqlDataReader.TryReadColumnInternal(Int32 i, Boolean readHeaderOnly) 在 System.Data.SqlClient.SqlDataReader.TryReadColumn(Int32 i, Boolean setTimeout, Boolean allowPartiallyReadColumn) 在 System.Data.SqlClient.SqlDataReader.GetValues(Object[] values) 在 System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values) 在 System.Data.ProviderBase.SchemaMapping.LoadDataRow() 在 System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping) 在 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue) 在 System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords) 在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) 在 Whir.Repository.Database.Query(String sql, Object[] args) 在 Whir.Label.Dynamic.Content.GetColumnFileValue() 在 Whir.Label.Dynamic.Content.Render(HtmlTextWriter output)
VOC
客户之声

请您留言