一种基于智能座舱系统的大规模协议数据分发系统及方法与流程
- 国知局
- 2024-08-08 16:48:35
本发明属于数据分发,特别是涉及一种基于智能座舱系统的大规模协议数据分发系统及方法。
背景技术:
1、基于目前的一芯多系统架构,与车辆交互的协议数据,在多个应用需要获取车辆参数时,应用链接个数需要固定于代码,或受系统差异需要接入多种链接方式,配置增加应用需要重新编译多个系统或应用或系统组件、中间层软件,配置接入应用不够灵活。随着车辆协议数据的日益庞大,配置分发协议数据到所需应用增加的工作量呈指数级增加,开发及维护所带来的工作量也随之大量增加。
2、如中国专利cn115314570a提供一种基于协议开发框架的数据下发方法、装置、设备及介质,其方法包括:基于协议开发框架创建行情数据的协议类型对应的协议框架,其中,在fpga的bpu中创建包括输入规则匹配模块、协议解析模块、输出规则匹配模块及网络数据缓存模块的协议框架;根据行情类型在输入规则匹配模块中进行匹配,通过协议解析模块对行情数据进行解析,根据行情类型在输出规则匹配模块中进行匹配,通过网络数据缓存模块对数据进行调整并下发。还如中国专利cn111600902a公开了自动数据处理与多协议接入的数据分析平台,自动数据处理与多协议接入的数据分析平台具有以下特征:第一步:自动数据处理:用户在客户端上浏览所提供的算法,选择指定一项算法,随后进行数据导入、简单配置算法参数;第二步:多协议接入;用户可在客户端上导入数据,除了本地上传数据,还可使用各种协议导入;第三步:数据分析模版;自动数据处理与多协议接入的数据分析平台包含的分析模版为结果输出的分析模版;第四步:跨平台协同工作;用户可在处于同一个局域网内的多个客户端上对已经保存的数据分析任务进行操作。
3、但是随着汽车智能座舱系统的日益成熟,鉴于对智能座舱系统不断丰富、多样化的功能需求,传统的一对一点对点的协议传输方式难于同时满足不断增加的各种使用场景、数据交互。
技术实现思路
1、本发明的目的在于提供一种基于智能座舱系统的大规模协议数据分发系统及方法,通过采用单服务端、多客户端方式,服务端根据各个客户端请求,分别分发数据至已链接客户端,客户端可动态链接与断开,无需在服务端固定某部分客户端进行数据交互,解决了现有的问题。
2、为解决上述技术问题,本发明是通过以下技术方案实现的:
3、作为本发明提供的第一个方面,本发明为一种基于智能座舱系统的大规模协议数据分发方法,包括以下步骤:
4、在spimodule(spimodule,主应用程序spi总线通讯模块,负责协议数据的接收与发送)中缓存一个全部信号的结构体,将mcu上报的信号与结构体对应的成员对比,如果缓存数据没有变化则丢弃不处理,如果有变化则更新结构体,然后进行信号分类后把信号发送到socketmodule(socketmodule,主应用程序socket通讯模块,各客户端的服务端,负责与各个需求的客户端进行协议数据交互)或smmodule(smmodule,主应用程序共享内存通讯模块,负责与仪表端进行数据交互);
5、socketmodule接收到信号后,通过配置表检查是否自己关心的数据,如果是,则根据配置表中该信号是属于哪个客户端,然后发给对应的客户端;否则,结束;
6、smmodule接收到信号后,通过配置表检查是否自己关心的数据,如果是则会更新对应的数据结构,然后把该数据结构写入到共享内存再通知hmi去获取;否则,结束;smmodule模块的数据可以从spi的全局结构体中获取,可以把全局的数据结构前一段设计为仪表的数据,这样sm模块直接取数据而不需要再经过解析;
7、其中,服务端采用单向链表方式存储数据;每个客户端创建2个链表:分别缓冲上行数据及下行数据;为了保证每个模块消息不丢失,增强接口隔离性,每个模块之间增加进/出信号队列。
8、进一步地,所述上行数据的分发方法为:
9、step11:上行数据读线程初始化;
10、step12:上行数据链表初始化、socket服务端监听线程初始化;进一步地,所述step12中,上行数据链表初始化后还进行以下步骤:
11、判断是否收到上行写链表信号通知,若收到,则读链表数据,否则继续判断是否收到上行写链表信号通知;
12、将读取的链表数据写入已链接的socket(socket,套接字网络通讯方式)客户端链表;
13、发出已写入链表信号的通知;
14、判断链表数据是否读取完,若读完,则继续判断是否收到上行写链表信号通知,否则继续读链表数据;
15、step13:监听是否收到客户端链接请求,若接收到,则创建新的客户端节点,否则继续监听;
16、step14:创建数据链表;
17、step15:监听客户端链接是否断开,若断开,则释放数据链表、释放客户端节点后继续监听是否收到客户端链接请求;若没有断开,则继续监听是否收到写链表信号通知;
18、step16:若接收到写链表信号通知,则读链表数据;若没有接收到写链表信号通知,则继续监听客户端链接是否断开;
19、step17:监听链表数据是否读取完成,若读取完成,则继续监听客户端链接是否断开;否则继续读取链表数据。
20、进一步地,所述下行数据的下发方法为:
21、step21:下行数据读线程初始化;
22、step22:下行数据链表初始化、socket服务端监听线程初始化;进一步地,所述step22中,下行数据链表初始化后还进行以下步骤:
23、判断是否收到下行写链表信号通知,若收到,则读链表数据,否则继续判断是否收到下行写链表信号通知;
24、将读取的链表数据写入spi通信模块;
25、判断链表数据是否读取完,若读完,则继续判断是否收到下行写链表信号通知,否则继续读链表数据;
26、step23:监听是否收到客户端链接请求,若接收到,则创建新的客户端节点,否则继续监听;
27、step24:创建数据链表;
28、step25:监听客户端链接是否断开,若断开,则释放数据链表、释放客户端节点后继续监听是否收到客户端链接请求;若没有断开,则继续监听是否收到客户端数据;
29、step26:若接收到客户端数据,则写入链表并发出下行写链表信号通知;若没有接收到客户端数据,则继续监听客户端链接是否断开;
30、step27:发出下行写链表信号通知后继续监听客户端链接是否断开。
31、作为本发明提供的第二个方面,本发明为一种基于智能座舱系统的大规模协议数据分发系统,所述的系统用于实现第一个方面所述的数据分发方法,所述系统包括:
32、客户端:采用服务客户端及协议数据交互客户端作为socket的客户端;
33、服务端:vehicleservice(vehicleservice,主应用程序,主芯片与mcu交互协议数据的关键应用)中的socketmodule(socketmodule,主应用程序socket通讯模块,各客户端的服务端,负责与各个需求的客户端进行协议数据交互)作为socket的服务端;
34、共享内存模块:采用smmodule(smmodule,主应用程序共享内存通讯模块,负责与仪表端进行数据交互)作为共享内存模块,用于数据上传与下行;
35、其中,ucom(ucom,主应用程序协议栈模块,负责通讯数据封包解包、数据校验、返回有效数据及长度)作为与mcu通讯的协议栈,用于对通信数据进行封包和解包,其中也包含了重发机制的实现,重发结果会以回调通知;spimodule(spimodule,主应用程序spi总线通讯模块,负责协议数据的接收与发送)用于通讯和协议解析;daemon是个守护进程,当vehicle崩溃后能再次将其拉起。
36、进一步地,所述vehicleservice(vehicleservice,主应用程序,主芯片与mcu交互协议数据的关键应用)与车辆数据的交互方式为:
37、通过spi总线链接mcu,mcu通过can总线链接车辆。
38、进一步地,所述服务客户端为otaclient(otaclient,整机软件升级服务客户端)或udsclient(udsclient,数据诊断服务客户端)。
39、进一步地,所述服务端采用单向链表方式存储数据;每个客户端创建2个链表:分别缓冲上行数据及下行数据,保证不丢失每一帧数据交互。
40、进一步地,所述系统采用信号量线程通信方式实现数据写入链表与读出链表:写入方写入一帧数据后,发出写入信号,当收到写入方的写入信号时,说明有新数据写入,便读出链表数据,再做所需处理。
41、本发明具有以下有益效果:
42、本发明通过单服务端、多客户端方式,服务端根据各个客户端请求,分别分发数据至已链接客户端,客户端可动态链接与断开,无需在服务端固定某部分客户端进行数据交互,分发目标个数由外部客户端数量决定,无需在代码里面固定客户端个数,可灵活分发至多个客户端;当某客户端或服务端掉线时,可自动链接服务端或客户端,可快速重新建立通信交互数据。
43、当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
本文地址:https://www.jishuxx.com/zhuanli/20240808/270500.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表