一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于UDS的通信方法、ECU及上位机与流程

2022-02-25 22:47:16 来源:中国专利 TAG:

一种基于uds的通信方法、ecu及上位机
技术领域
1.本技术涉及汽车诊断信息技术领域,尤其涉及一种基于uds的通信方法、ecu及上位机。


背景技术:

2.汽车诊断技术起始于60年代的西方发达国家,随着汽车结构的日益复杂,尤其是智能驾驶技术的快速发展,汽车上的电子控制单元(electronic control unit,ecu)变得逐渐复杂并有集中在一个超级ecu的趋势,ecu复杂之后随之而来的就是面向产品生命周期各/某环节的设计(design for x,dfx)也变得复杂,这时必然要求有相应的诊断手段对ecu内部的相关信息进行诊断,以达到满足车辆维护的需求。因此,汽车诊断技术随之得到了迅速的发展。
3.统一诊断服务(unified diagnosis service,uds)是汽车行业用来诊断和定位ecu故障的规范化标准协议之一,例如,读取故障码应该向ecu发什么指令、读数据流又是发什么指令等。形象的说,就是使用一套仪器(一般称为上位机),对当前汽车上ecu内部的信息/数据进行分析,而这套仪器与ecu交谈所使用的语言就是uds(不是唯一方法)。
4.目前基于uds的诊断通信的过程如图1所示:上位机上可同时运行不同的检测模块,多个检测模块可独立发起诊断请求(request),上位机会将这些诊断请求按照先后顺序放入请求队列,基于uds协议,当ecu接收到一个诊断请求时,会先校验当前的会话(session)是否可以执行这条请求,例如,若该请求对应的服务属于高等级,那么也需要保证session处于相应的高安全等级,由于整个系统中session只有一个,并且该session的安全等级是全局共享,所以上位机不得不把各个检测模块的请求放入请求队列串行执行,来保证session切换不会导致业务异常,当一个检测模块异常引发超时机制后,所有的诊断请求都不会被处理,实时性和鲁棒性差。


技术实现要素:

5.本技术实施例提供了一种基于uds的通信方法、ecu及上位机,该方法基于uds自定义私有化诊断服务,使得ecu根据属于该私有化诊断服务的诊断请求创建新的会话,从而可解决传统uds中属于标准诊断服务的请求无法并行处理的问题。
6.基于此,本技术实施例提供以下技术方案:
7.第一方面,本技术实施例首先提供一种基于uds的通信方法,可用于汽车诊断信息技术领域中,该方法包括:上位机上运行有相应的诊断软件(如,canoe、汽车uds测试软件等),通过该诊断软件,ecu与上位机之间就可基于uds实现相应的诊断服务。首先,ecu接收上位机发送的第一诊断请求,该第一诊断请求属于基于统一诊断服务uds自定义的私有化诊断服务,该第一诊断请求具体与该自定义的私有化诊断服务的第一子服务对应;基于该自定义的私有化诊断服务,ecu将会根据该第一诊断请求创建会话,并得到该对话对应的标识符,每个新创建的会话都对应会分配有一个标识符,用于识别对应的会话(类似id),ecu
根据第一诊断请求创建好会话后,进一步向上位机发送肯定响应,该肯定响应可称为第一肯定响应,该第一肯定响应中就包括刚创建好的会话对应的标识符。
8.在本技术上述实施方式中,ecu可基于uds自定义的私有化诊断服务,使得ecu根据属于该私有化诊断服务的第一诊断请求创建新的会话(原有uds协议自带的那个会话依然存在),可实现多会话管理,从而可解决传统uds中属于标准诊断服务的请求无法并行处理的问题。
9.在第一方面的一种可能的设计中,可重复执行上述步骤,直至创建的会话的数量达到预设值。例如,可事先设置预设值n(如,n=10),那么按照上述步骤重复执行10次,就可额外创建得到10个会话。这样做的好处在于:并行执行的诊断请求可以更多,从而可加快ecu的执行效率。
10.在本技术上述实施方式中,通过重复执行上述步骤直至创建的会话达到预设数量,这样做的好处在于:ecu上并行执行的诊断请求可以更多,从而可加快ecu的执行效率。
11.在第一方面的一种可能的设计中,创建好的会话,就可以在对应会话的线程上执行标准诊断服务,具体该方法还可以包括:ecu根据第一诊断请求创建好会话后,并向上位机返回对应会话的标识符,之后,ecu可进一步接收上位机发送的第二诊断请求,第二诊断请求中包括有第一会话对应的第一标识符和uds中已定义的某个标准诊断服务(可称为第一标准诊断服务),其中,第一会话是已经创建的会话中的一个,ecu在接收到上位机发送的第二诊断请求后,ecu可根据该第二诊断请求在第一会话的线程上执行第一标准诊断服务,得到诊断结果,ecu得到诊断结果后,就可将该诊断结果包含进第二肯定响应中向上位机发送。
12.在本技术上述实施方式中,ecu可基于uds自定义的私有化诊断服务,使得ecu根据属于该私有化诊断服务的第二诊断请求在已经创建好的某个会话的线程上执行某个标准诊断服务,可实现多个会话的线程上并行执行不同的标准诊断服务,执行效率高。
13.在第一方面的一种可能的设计中,基于uds自定义的私有化诊断服务的第一子服务对应的第一诊断请求可以包括:第一sid和第一数据字段,其中,第一sid为uds中未被定义的sid,如,0x82-0x82、0x89-0xb9、0xbf-0xc2、0xc9-0xf9中的任意一个都可作为第一sid,第一sid用于指示第一诊断请求属于该私有化诊断服务,第一数据字段用于指示该第一诊断请求属于该私有化诊断服务的第一子服务,第一子服务为创建会话。
14.在本技术上述实施方式中,基于uds自定义的私有化诊断服务利用的是uds未定义的一些sid来进行的,并进一步阐述了当自定义的私有化诊断服务对应的sid是uds中未被定义的sid时,与自定义的私有化诊断服务的第一子服务对应的第一诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
15.在第一方面的一种可能的设计中,第一诊断请求的协议格式可用“sid1 sf1”的格式类型表示,其中,sid1就是指第一sid,占用一个字节;sf1指的是第一数据字段,表示的是该私有化诊断服务的第一子服务,一般也是占用一个字节(也可占用多个字节,不做限定),该第一子服务为创建会话。
16.在本技术上述实施方式中,阐述了一种具体的第一诊断请求的协议格式,具备可操作性。
17.在第一方面的一种可能的设计中,基于uds自定义的私有化诊断服务的第二子服
务对应的第二诊断请求还可以包括:第一sid和第二数据字段,其中,第一sid为uds中未被定义的sid,如,0x82-0x82、0x89-0xb9、0xbf-0xc2、0xc9-0xf9中的任意一个都可作为第一sid,第一sid用于指示第二诊断请求属于该私有化诊断服务,第二数据字段用于指示该第二诊断请求属于该私有化诊断服务的第二子服务,第二子服务为根据标识符在对应的已创建会话的线程上执行某个标准诊断服务。
18.在本技术上述实施方式中,基于uds自定义的私有化诊断服务利用的是uds未定义的一些sid来进行的,并进一步阐述了与自定义的私有化诊断服务的第二子服务对应的第二诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
19.在第一方面的一种可能的设计中,第二诊断请求的协议格式可用“sid1 sf2 d1 b1”的格式类型表示,其中,sid1就是指第一sid,占用一个字节;sf2指的是第二数据字段,表示的是该私有化诊断服务的第二子服务,一般也是占用一个字节(也可占用多个字节,不做限定),d1表示标识符,d1对应某个已创建的会话,一般也是占用一个字节(也可占用多个字节,不做限定),b1表示的是表2中26种标准诊断服务中的某个待执行的诊断服务,b1的格式类型就与标准诊断服务的格式类型一样,具体可参阅表2对应的说明,此处不予赘述。
20.在本技术上述实施方式中,阐述了一种具体的第二诊断请求的协议格式,具备可操作性。
21.在第一方面的一种可能的设计中,基于uds自定义的私有化诊断服务的第一子服务对应的第一诊断请求可以包括:第二sid和第三数据字段,其中,第二sid为uds中取值为0x31的sid,这是因为标准诊断服务名为“例行程序控制”是一个自由度较高的诊断服务,可以利用0x31,在对应的诊断请求中增加特殊的数据字段,第三数据字段用于指示该第一诊断请求属于该私有化诊断服务且属于该私有化诊断服务的第一子服务,第一子服务为创建会话。
22.在本技术上述实施方式中,还可以在标准诊断服务0x31对应的诊断请求中增加一些特殊的数据字段,来实现自定义私有化诊断服务的功能,并进一步阐述了当自定义的私有化诊断服务对应的sid是uds中取值为0x31的sid时,与自定义的私有化诊断服务的第一子服务对应的第一诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
23.在第一方面的一种可能的设计中,第一诊断请求的协议格式可用“sid2 sf1 x1”的格式类型表示,其中,sid2为取值为0x31的sid,占用一个字节;“sf1 x1”为上述所述的第三数据字段,x1是基于uds自定义功能的字段,一般占用两个字节(也可占用一个字节或两个以上的字节,不做限定),x1用于指示“sid2 sf1”属于所述私有化诊断服务的第一子服务,第一子服务为创建会话。
24.在本技术上述实施方式中,阐述了一种具体的第一诊断请求的协议格式,具备可操作性。
25.在第一方面的一种可能的设计中,基于uds自定义的私有化诊断服务的第二子服务对应的第二诊断请求还可以包括:所述第二sid和第四数据字段,其中,第二sid为uds中取值为0x31的sid,第四数据字段用于指示该第二诊断请求属于该私有化诊断服务且属于该私有化诊断服务的第二子服务,第二子服务为根据标识符在对应的已创建会话的线程上执行某个标准诊断服务。
26.在本技术上述实施方式中,还可以在标准诊断服务0x31对应的诊断请求中增加一些特殊的数据字段,来实现自定义私有化诊断服务的功能,并进一步阐述了当自定义的私有化诊断服务对应的sid是uds中取值为0x31的sid时,与自定义的私有化诊断服务的第二子服务对应的第二诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
27.在第一方面的一种可能的设计中,第二诊断请求的协议格式可用“sid2 sf2 x1 d1 b1”的格式类型表示,其中,sid2就是指取值为0x31的sid(也就是第二sid),占用一个字节;“sf2 x1”为上述所述的第四数据字段,x1是基于uds自定义功能的字段,一般占用两个字节(也可占用一个字节或两个以上的字节,不做限定),x1用于指示“sid2 sf1”属于所述私有化诊断服务的第二子服务,d1表示标识符,d1对应某个已创建的会话,一般也是占用一个字节(也可占用多个字节,不做限定),b1表示的是表2中26种标准诊断服务中的某个待执行的诊断服务,b1的格式类型与标准诊断服务的格式类型一样,具体可参阅表2对应的说明,此处不予赘述。
28.在本技术上述实施方式中,阐述了一种具体的第二诊断请求的协议格式,具备可操作性。
29.本技术实施例第二方面还提供一种基于uds的通信方法,该方法包括:上位机向ecu发送第一诊断请求,以使得ecu根据该第一诊断请求创建会话,并得到该会话对应的标识符,每个新创建的会话都对应会分配有一个标识符,用于识别对应的会话(类似id),该第一诊断请求属于基于uds自定义的私有化诊断服务,该第一诊断请求具体与该自定义的私有化诊断服务的第一子服务对应,之后,上位机接收ecu发送的包括该标识符的第一肯定响应。
30.在本技术上述实施方式中,上位机向ecu发送第一诊断请求,使得ecu可基于uds自定义的私有化诊断服务,根据属于该私有化诊断服务的第一诊断请求创建新的会话(原有uds协议自带的那个会话依然存在),可实现多会话管理,从而可解决传统uds中属于标准诊断服务的请求无法并行处理的问题。
31.在第二方面的一种可能的设计中,可重复执行上述步骤,使得ecu据此创建多个会话。例如,可事先设置预设值n(如,n=10),那么按照上述步骤重复执行10次,就可使得ecu额外创建得到10个会话。这样做的好处在于:ecu并行执行的诊断请求可以更多,从而可加快ecu的执行效率。
32.在本技术上述实施方式中,通过重复执行上述步骤直至创建的会话达到预设数量,这样做的好处在于:ecu上并行执行的诊断请求可以更多,从而可加快ecu的执行效率。
33.在第二方面的一种可能的设计中,上位机在接收ecu发送的第一肯定响应之后,向ecu发送第二诊断请求,以使得ecu根据该第二诊断请求在第一会话的线程上执行第一标准诊断服务,得到诊断结果,该第二诊断请求属于所述私有化诊断服务,该第二诊断请求具体与该自定义的私有化诊断服务的第二子服务对应,该第二诊断请求包括第一会话对应的第一标识符和uds已定义的第一标准诊断服务,该第一会话为已创建的会话中的一个,之后,上位机接收ecu发送的包括该诊断结果的第二肯定响应。
34.在本技术上述实施方式中,上位机还可以向ecu发送第二诊断请求,使得ecu可基于uds自定义的私有化诊断服务,根据属于该私有化诊断服务的第二诊断请求在已经创建
好的某个会话的线程上执行某个标准诊断服务,可实现多个会话的线程上并行执行不同的标准诊断服务,执行效率高。
35.在第二方面的一种可能的设计中,基于uds自定义的私有化诊断服务的第一子服务对应的第一诊断请求可以包括:第一sid和第一数据字段,其中,第一sid为uds中未被定义的sid,如,0x82-0x82、0x89-0xb9、0xbf-0xc2、0xc9-0xf9中的任意一个都可作为第一sid,第一sid用于指示第一诊断请求属于该私有化诊断服务,第一数据字段用于指示该第一诊断请求属于该私有化诊断服务的第一子服务,第一子服务为创建会话。
36.在本技术上述实施方式中,基于uds自定义的私有化诊断服务利用的是uds未定义的一些sid来进行的,并进一步阐述了当自定义的私有化诊断服务对应的sid是uds中未被定义的sid时,与自定义的私有化诊断服务的第一子服务对应的第一诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
37.在第二方面的一种可能的设计中,第一诊断请求的协议格式可用“sid1 sf1”的格式类型表示,其中,sid1就是指第一sid,占用一个字节;sf1指的是第一数据字段,表示的是该私有化诊断服务的第一子服务,一般也是占用一个字节(也可占用多个字节,不做限定),该第一子服务为创建会话。
38.在本技术上述实施方式中,阐述了一种具体的第一诊断请求的协议格式,具备可操作性。
39.在第二方面的一种可能的设计中,基于uds自定义的私有化诊断服务的第二子服务对应的第二诊断请求还包括:第一sid和第二数据字段,其中,第一sid为uds中未被定义的sid,如,0x82-0x82、0x89-0xb9、0xbf-0xc2、0xc9-0xf9中的任意一个都可作为第一sid,第一sid用于指示第二诊断请求属于该私有化诊断服务,第二数据字段用于指示该第二诊断请求属于该私有化诊断服务的第二子服务,第二子服务为根据标识符在对应的已创建会话的线程上执行某个标准诊断服务。
40.在本技术上述实施方式中,基于uds自定义的私有化诊断服务利用的是uds未定义的一些sid来进行的,并进一步阐述了与自定义的私有化诊断服务的第二子服务对应的第二诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
41.在第二方面的一种可能的设计中,第二诊断请求的协议格式可用“sid1 sf2 d1 b1”的格式类型表示,其中,sid1就是指第一sid,占用一个字节;sf2指的是第二数据字段,表示的是该私有化诊断服务的第二子服务,一般也是占用一个字节(也可占用多个字节,不做限定),d1表示标识符,d1对应某个已创建的会话,一般也是占用一个字节(也可占用多个字节,不做限定),b1表示的是表2中26种标准诊断服务中的某个待执行的诊断服务,b1的格式类型就与标准诊断服务的格式类型一样,可参阅表2说明,此处不予赘述。
42.在本技术上述实施方式中,阐述了一种具体的第二诊断请求的协议格式,具备可操作性。
43.在第二方面的一种可能的设计中,基于uds自定义的私有化诊断服务的第一子服务对应的第一诊断请求可以包括:第二sid和第三数据字段,其中,第二sid为uds中取值为0x31的sid,这是因为标准诊断服务名为“例行程序控制”是一个自由度较高的诊断服务,可以利用0x31,在对应的诊断请求中增加特殊的数据字段,第三数据字段用于指示该第一诊断请求属于该私有化诊断服务且属于该私有化诊断服务的第一子服务,第一子服务为创建
会话。
44.在本技术上述实施方式中,还可以在标准诊断服务0x31对应的诊断请求中增加一些特殊的数据字段,来实现自定义私有化诊断服务的功能,并进一步阐述了当自定义的私有化诊断服务对应的sid是uds中取值为0x31的sid时,与自定义的私有化诊断服务的第一子服务对应的第一诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
45.在第二方面的一种可能的设计中,第一诊断请求的协议格式可用“sid2 sf1 x1”的格式类型表示,其中,sid2为取值为0x31的sid,占用一个字节;“sf1 x1”为上述所述的第三数据字段,x1是基于uds自定义功能的字段,一般占用两个字节(也可占用一个字节或两个以上的字节,不做限定),x1用于指示“sid2 sf1”属于所述私有化诊断服务的第一子服务,第一子服务为创建会话。
46.在本技术上述实施方式中,阐述了一种具体的第一诊断请求的协议格式,具备可操作性。
47.在第二方面的一种可能的设计中,基于uds自定义的私有化诊断服务的第二子服务对应的第二诊断请求还可以包括:所述第二sid和第四数据字段,其中,第二sid为uds中取值为0x31的sid,第四数据字段用于指示该第二诊断请求属于该私有化诊断服务且属于该私有化诊断服务的第二子服务,第二子服务为根据标识符在对应的已创建会话的线程上执行某个标准诊断服务。
48.在本技术上述实施方式中,还可以在标准诊断服务0x31对应的诊断请求中增加一些特殊的数据字段,来实现自定义私有化诊断服务的功能,并进一步阐述了当自定义的私有化诊断服务对应的sid是uds中取值为0x31的sid时,与自定义的私有化诊断服务的第二子服务对应的第二诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
49.在第二方面的一种可能的设计中,第二诊断请求的协议格式可用“sid2 sf2 x1 d1 b1”的格式类型表示,其中,sid2就是指取值为0x31的sid(也就是第二sid),占用一个字节;“sf2 x1”为上述所述的第四数据字段,x1是基于uds自定义功能的字段,一般占用两个字节(也可占用一个字节或两个以上的字节,不做限定),x1用于指示“sid2 sf1”属于所述私有化诊断服务的第二子服务,d1表示标识符,d1对应某个已创建的会话,一般也是占用一个字节(也可占用多个字节,不做限定),b1表示的是表2中26种标准诊断服务中的某个待执行的诊断服务,b1的格式类型与标准诊断服务的格式类型一样,具体可参阅表2对应的说明,此处不予赘述。
50.在本技术上述实施方式中,阐述了一种具体的第二诊断请求的协议格式,具备可操作性。
51.本技术实施例第三方面提供一种ecu,该ecu具有实现上述第一方面或第一方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
52.本技术实施例第四方面提供一种上位机,该上位机具有实现上述第二方面或第二方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
53.本技术实施例第五方面提供一种ecu,可以包括存储器、处理器以及总线系统,其中,存储器用于存储程序,处理器用于调用该存储器中存储的程序以执行本技术实施例第一方面或第一方面任意一种可能实现方式的方法。
54.本技术实施例第六方面提供一种ecu,可以包括存储器、处理器以及总线系统,其中,存储器用于存储程序,处理器用于调用该存储器中存储的程序以执行本技术实施例第二方面或第二方面任意一种可能实现方式的方法。
55.本技术第七方面提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机可以执行上述第一方面或第一方面任意一种可能实现方式的方法,或,使得计算机可以执行上述第二方面或第二方面任意一种可能实现方式的方法。
56.本技术实施例第八方面提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面或第一方面任意一种可能实现方式的方法,或,使得计算机可以执行上述第二方面或第二方面任意一种可能实现方式的方法。
附图说明
57.图1为目前基于uds的诊断通信过程的一个示意图;
58.图2为本技术实施例提供的通信系统的一个示意图;
59.图3为本技术实施例提供的一种基于uds的通信方法的流程示意图;
60.图4为本技术实施例提供的另一种基于uds的通信方法的流程示意图;
61.图5为本技术实施例提供的ecu的一个结构示意图;
62.图6为本技术实施例提供的上位机的一个结构示意图;
63.图7为本技术实施例提供的设备的一个示意图。
具体实施方式
64.本技术实施例提供了一种基于uds的通信方法、ecu及上位机,该方法基于uds自定义私有化诊断服务,使得ecu根据属于该私有化诊断服务的诊断请求创建新的会话,从而可解决传统uds中属于标准诊断服务的请求无法并行处理的问题。
65.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本技术的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
66.本技术实施例涉及了许多关于汽车组件、uds协议、诊断服务以及协议格式等相关知识,为了更好地理解本技术实施例的方案,下面先对本技术实施例可能涉及的相关术语和概念进行介绍。
67.(1)电子控制单元(electronic control unit,ecu)
68.ecu又称为行车电脑、车载电脑等,从用途上讲则是汽车专用微机控制器,也叫汽车专用单片机,它和普通的电脑一样,由微处理器(microcontroller unit,mcu)、只读存储
器(read-only memory,rom)、随机存取存储器(random access memory,ram)、输入/输出接口(i/o)、模数转换器(a/d)以及整形、驱动等大规模集成电路组成。
69.在ecu中,中央处理器(central processing unit,cpu)是核心部分,它具有运算与控制的功能,例如,发动机在运行时,它采集各传感器的信号进行运算,并将运算的结果转变为控制信号,控制被控对象的工作;它还实行对存储器(如,rom)、i/o和其它外部电路的控制。ecu一般都具备故障自诊断和保护功能,当系统产生故障时,它能在ram中自动记录故障代码并采用保护措施从固有程序中读取替代程序来维持对应组件的(如,发动机)运转,同时这些故障信息会显示在仪表盘上并保持不灭,可以使车主及时发现问题并将车能开到修理店。正常情况下,ram也会不停地记录汽车在行驶过程中的数据,并通过自适应程序对实时记录的数据进行学习,为适应车主的驾驶习惯提供最佳的控制状态。
70.传统的ecu相对来说结构比较简单,整车上面可能会有几十上百个ecu,例如,发动机上应用的ecu、防抱死制动系统上应用的ecu等,每个ecu的功能都是相对独立的,随着数字汽车尤其是自动驾驶技术的发展,汽车上的ecu逐渐变得复杂并有集中在一个超级ecu上的趋势,随之而来对ecu的诊断难度也越来越大。
71.(2)上位机
72.上位机是指可以直接发出操控命令的计算机设备,在本技术实施例中,能够对ecu基于uds协议进行通信的计算机设备都可称为上位机(也可称为诊断仪、诊断机、诊断工具等),例如,个人计算机(personal computer,pc)、手机、平板电脑等智能手持终端设备,以及智能手环、智能手表等智能可穿戴设备,甚至是单片机,只要该设备能够运行相应的诊断软件,且能与ecu基于uds协议进行通信的设备都可作为本技术实施例中的上位机,具体此处不做限定。
73.(3)统一诊断服务(unified diagnosis service,uds)
74.不同诊断通信协议的开发、调整、实施和维护会给车辆制造商、系统供应商和ecu供应商带来不必要的成本。为了解决此问题,将不同的技术协议和数据通信原理编译为一个国际iso标准,通常称为uds(也可称为iso 14229-1),uds是一种汽车通用诊断协议,与数据链路无关,如表1所示,表1为开放式系统互联(open system interconnection,osi)模型各层应用的协议,其中,uds面向于osi模型中的应用层,它可在不同的汽车总线(如,can、lin、flexray、ethernet、k-line等)上实现。目前,大部分汽车厂商均采用uds on can的诊断协议,形象的说,就是使用一套仪器(一般称为上位机),对当前汽车上ecu内部的信息/数据进行分析,而这套仪器与ecu交谈所使用的语言就是uds(不是唯一方法)。
75.表1:osi模型各层应用的协议
76.osi各层协议类型应用层iso 14229-1(uds)表示层
---
会话层iso 15765-3传输层iso 15765-2网络层iso 15765-2数据链路层iso 11898-1物理层iso 11898
77.uds本质上是一系列的诊断服务,这种由uds定义好的诊断服务可称为标准诊断服务,标准诊断服务共包括6大类共26种(均是十六进制的数据),如下表2为uds诊断服务列表,每种标准诊断服务都有自己独立的服务标识符(service identifier,sid)。需要注意的是,表2中的数据标识符(data identifier,did)是标准诊断服务0x22和0x2e对具体数据进行读/写操作的依据,在标准诊断服务0x22中,did是用于识别某个记录的当前值;在标准诊断服务0x2e中,是用于请求写入由did指定的某个记录。uds已事先定义一部分did,例如,0xf186是当前诊断会话数据标识符,0xf187是车厂备件号数据标识符,0xf188是车厂ecu软件号码数据标识符,0xf189是车厂ecu软件版本号数据标识符等。
78.表2:uds诊断服务列表
79.[0080][0081]
sid本质上是一种定向的通信,是一种交互协议,即上位机给ecu发送指定的诊断请求(request),这条请求中需要包含sid。如果是肯定响应,ecu给上位机返回的是[sid 0x40],如,发送的诊断请求的sid是0x10,肯定响应则是0x50;发送的诊断请求的sid是0x22,肯定响应则是0x62。如果是否定响应,ecu给上位机返回的是0x7f sid nrc,返回的是一个声明,nrc的全称是negative response code,即否定响应码,也就是说,如果ecu拒绝了一个请求,它会向上位机返回一个nrc,不同的诊断服务,可能包含不同的nrc,不同的nrc有不同的含义。需要注意的是,在目前的基于uds的诊断通信过程中,无论是哪个标准诊断服务,都需要串行处理。
[0082]
基于uds的诊断通信过程是:上位机向ecu发送诊断请求(request),ecu给出诊断响应(response),诊断响应包括肯定响应和否定响应,uds为不同诊断服务的request和response定义了统一的协议格式,下面分别进行说明。
[0083]
诊断请求的协议格式具体可总结为4种类型,分别为:1)、“sid”格式类型,即诊断请求中只包括占用一个字节的sid(不管哪种格式类型,sid都是占用一个字节);2)、“sid sf”格式类型,sf是sub-function(子功能)的缩写,不管哪种格式类型下,sf也是占用一个字节,这种格式类型存在于某个标准诊断服务下还有一个或多个子服务的情形;3)、“sid did”格式类型,did所占用的字节不限定,由具体的数据决定,这种格式类型是读/写用,如,标准诊断服务0x22和0x2e就是这种格式类型;4)、“sid sf did”格式类型,与第三种格式类型类似,不同的地方在于,这种格式类型存在于某个标准诊断服务下还有一个或多个子服务的情形。肯定响应的协议格式与诊断请求的格式类型相似,不同的地方在于,在诊断请求的格式类型的[sid]基础上加上0x40,得到[sid 0x40],其他部分不变;否定响应的协议格
式均为“0x7f sid nrc”。
[0084]
为便于理解,下面以can总线中的数据域(uds是对帧中的数据域进行定义)为例,对一些标准诊断服务的协议格式进行说明。其中,每个诊断请求或诊断响应包括8个字节数据,一般来说,第1个字节表示的是余下的7个字节中的有效数据字段,特殊情况除外。
[0085]
例子一:示意的是“sid sf”格式类型,假设上位机向ecu发送的某个诊断请求为02 10 01 xx xx xx xx xx,其中,02中的0代表网络层单帧,02中的2代表数据域有2个有效字节,10是sid(是十六进制的10,实际是0x10,以下类似),对应的标准诊断服务为“诊断会话控制”,01是子功能;若ecu向上位机返回的诊断响应为02 50 01 xx xx xx xx xx,则02表示的意思同上,[10 40]=50表示对sid的肯定回复(即返回的是肯定响应),01是子功能;若ecu向上位机返回的诊断响应为03 7f 10 22 xx xx xx xx,则03中的0代表网络层单帧,03中的3代表数据域有3个有效字节,7f表示返回的是否定响应,10是sid,22是nrc。
[0086]
例子二:示意的是“sid did”格式类型,假设上位机向ecu发送的某个诊断请求为22 did,did通常占用2个字节(特殊情形除外),因此,在这种情况下,第1个字节表示的不再是余下的7个字节中的有效数据字段,22是sid,对应的标准诊断服务为“通过id读数据”,did用于识别某个记录的当前值;若ecu向上位机返回的诊断响应为62 did data,[22 40]=62表示返回的是肯定响应,did同上,data表示的识别的某个记录的当前值;返回的若是否定响应,格式与上述类似,此处不予赘述。
[0087]
下面结合附图,对本技术的实施例进行描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
[0088]
首先,本技术实施例提供一种基于uds自定义的私有化诊断服务,如表3所示,与表2所示的26种标准诊断服务不同,该私有化诊断服务是基于uds自行定义的,可以包括私有化诊断服务的第一子服务和第二子服务,私有化诊断服务的第一子服务为创建会话,私有化诊断服务的第二子服务为在指定会话的线程上执行标准诊断服务,其中,第一子服务的诊断请求可称为第一诊断请求,第二子服务的诊断请求可称为第二诊断请求,第一诊断请求的肯定响应和否定响应分别可称为第一肯定响应和第一否定响应,第二诊断请求的肯定响应和否定响应分别可称为第二肯定响应和第二否定响应。需要注意的是,自定义私有化诊断服务的sid可称为第一sid,第一子服务和第二子服务在协议格式中分别可用占据一定字节(如,占用一个字节)的数据字段sf1和sf2表示,如表3所示。
[0089]
表3:基于uds自定义的私有化诊断服务
[0090][0091]
需要说明的是,由uds定义的标准诊断服务包括6大类共26种(如表2所示),每种标准诊断服务都对应有一个sid(共26个),实际上,uds还包括有一些未被定义过的sid,如表4所示,表4示意的是所有sid的用途列表,从表4可以看出,0x82-0x82、0x89-0xb9、0xbf-0xc2、0xc9-0xf9均为由iso 14229-1(即uds)保留的未被定义的sid。因此,在本技术的一些实施方式中,可利用这些未被定义的sid来作为本技术实施例自定义的私有化诊断服务的
sid,即上述表3所示的第一sid。
[0092]
表4:sid的用途列表
[0093][0094]
需要说明的是,在本技术的一些实施方式中,可从表4中的未被uds定义的0x82-0x82、0x89-0xb9、0xbf-0xc2、0xc9-0xf9中任意选取一个sid作为第一sid,也可以优先选择取值靠前的sid作为第一sid,具体此处对选取方式不做限定。优选的,选择取值靠前的sid作为第一sid(如,选取0x82作为第一sid),这是因为上位机接收ecu的肯定响应的协议格式是[sid 0x40],这样的话,返回的肯定响应就不会超过整体的sid的取值范围。
[0095]
为便于理解,下面对表3所示的自定义私有化诊断服务的第一子服务和第二子服务分别进行介绍:
[0096]
(1)私有化诊断服务的第一子服务
[0097]
a、第一诊断请求
[0098]
首先,介绍该第一子服务对应的第一诊断请求,该第一诊断请求包括第一sid和第一数据字段,其中,第一sid为uds中未被定义的sid,如,0x82-0x82、0x89-0xb9、0xbf-0xc2、0xc9-0xf9中的任意一个都可作为第一sid,第一sid用于指示第一诊断请求属于该私有化诊断服务,第一数据字段用于指示该第一诊断请求属于该私有化诊断服务的第一子服务,第一子服务为创建会话。
[0099]
具体地,在本技术的一些实施方式中,第一诊断请求的协议格式可用“sid1 sf1”的格式类型表示,其中,sid1就是指第一sid,占用一个字节;sf1指的是第一数据字段,表示的是该私有化诊断服务的第一子服务,一般也是占用一个字节(也可占用多个字节,不做限定)。
[0100]
b、第一肯定响应
[0101]
每个诊断请求都对应有一个肯定响应和一个否定响应,该第一诊断请求对应的肯定响应为第一肯定响应,其协议格式可用“[sid1 0x40] sf1”表示,其中,[sid1 0x40]表示返回的是肯定响应,“[sid1 0x40] sf1”表示返回的是该私有化诊断服务的第一子服务的肯定响应。
xx,其中,06中的0代表网络层单帧,06中的6代表数据域有6个有效字节,82是第一sid(是十六进制的82,实际是0x82,以下类似),代表的是基于uds自定义的私有化诊断服务,02是第二子服务,代表的是根据标识符在对应的已创建会话的线程上执行某个标准诊断服务,ff是某个已创建的会话(可称为第一会话)对应的标识符(可称为第一标识符),“22 00 01”表示的标准诊断服务,其诊断服务名为“通过id读数据”,其中,22为该标准诊断服务对应的sid,00 01为对应的did。该第二诊断请求06 82 02 ff 22 3e 5a xx的意思就是:在第一会话的线程上执行通过id读数据的标准诊断服务;若ecu向上位机返回的诊断响应为05 c2 02 62 3e 5a xx xx,05中的0代表网络层单帧,05中的5代表数据域有5个有效字节,[82 40]=c2表示对第一sid的肯定回复(即返回的是肯定响应),02是第二子服务,[22 40]=62表示的是对标准诊断服务的肯定响应,“3e 5a”是基于该标准诊断服务读取到的具体内容;若ecu向上位机返回的诊断响应为04 7f 82 02 22 xx xx xx,则04中的0代表网络层单帧,04中的4代表数据域有4个有效字节,7f表示返回的是否定响应,82是第一sid,02是第二子服务,22是nrc。
[0114]
需要说明的是,上述基于uds自定义的私有化诊断服务利用的是uds未定义的一些sid来进行的,这样做的好处在于:通过sid就可直接判断哪些是标准诊断服务,哪些是自定义的私有化诊断服务,便于区分。
[0115]
但在本技术的一些实施方式中,还可以在标准诊断服务对应的诊断请求内增加一些特殊的数据字段,来实现自定义私有化诊断服务的功能,例如,标准诊断服务名为“例行程序控制”是一个自由度较高的诊断服务,可以利用0x31,在对应的诊断请求中增加特殊的数据字段,比如,增加占用两个字节的af bf(仅为示意,也可以是其他数据字段,不做限定),该af bf表示的就是自定义的私有化诊断服务,其中,af类似于上述所述的第一sid,表示这是个私有化诊断请求,bf表示的是该私有化诊断请求具有子服务。这种方式的好处在于:使用uds中自由度较高的标准诊断服务(如,0x31),通过嵌套原始诊断请求来达到增加一个协议头的目的,在不引入新的sid的同时又能实现标准诊断请求的并行处理。
[0116]
为便于理解,下面对利用0x31自定义私有化诊断服务的第一子服务和第二子服务分别进行介绍:
[0117]
(1)私有化诊断服务的第一子服务
[0118]
a、第一诊断请求
[0119]
首先,介绍该第一子服务对应的第一诊断请求,该第一诊断请求包括第二sid和第三数据字段,其中,第二sid为uds中取值为0x31的sid,第三数据字段用于指示该第一诊断请求属于该私有化诊断服务且属于该私有化诊断服务的第一子服务,第一子服务为创建会话。
[0120]
具体地,在本技术的一些实施方式中,第一诊断请求的协议格式可用“sid2 sf1 x1”的格式类型表示,其中,sid2为取值为0x31的sid,占用一个字节;“sf1 x1”为上述所述的第三数据字段,x1是基于uds自定义功能的字段,一般占用两个字节(也可占用一个字节或两个以上的字节,不做限定),x1用于指示“sid2 sf1”属于所述私有化诊断服务的第一子服务。
[0121]
b、第一肯定响应
[0122]
每个诊断请求都对应有一个肯定响应和一个否定响应,该第一诊断请求对应的肯
定响应为第一肯定响应,其协议格式可用“[sid2 0x40] sf1”表示,其中,[sid2 0x40]表示返回的是肯定响应,“[sid2 0x40] sf1”表示返回的是该私有化诊断服务的第一子服务的肯定响应。
[0123]
c、第一否定响应
[0124]
与表2所示的26种标准诊断服务类似,如果ecu给上位机返回的是0x7f sid2 nrc,说明返回的是第一否定响应,此处不予赘述。
[0125]
为便于理解,下面以一个实例说明私有化诊断服务的第一子服务对应的诊断请求和诊断响应的具体过程。假设上位机向ecu发送的某个诊断请求为04 31 01 af bf xx xx xx,其中,04中的0代表网络层单帧,04中的4代表数据域有4个有效字节,31是第二sid(是十六进制的31,实际是0x31,以下类似),“af bf”用于指示“31 01”代表的是私有化诊断服务的第一子服务,即创建会话;若ecu向上位机返回的诊断响应为03 71 01 ff xx xx xx xx,03中的0代表网络层单帧,03中的3代表数据域有3个有效字节,[31 40]=71表示对第二sid的肯定回复(即返回的是肯定响应),01是第一子服务,ff表示的创建的会话对应的标识符,每个新创建的会话都对应会分配有一个标识符,用于识别对应的会话(类似id);若ecu向上位机返回的诊断响应为04 7f 31 01 22 xx xx xx,则04中的0代表网络层单帧,04中的4代表数据域有4个有效字节,7f表示返回的是否定响应,31是第二sid,01是第一子服务,22是nrc。
[0126]
(2)私有化诊断服务的第二子服务
[0127]
a、第二诊断请求
[0128]
接下来,介绍该第二子服务对应的第二诊断请求,该第二诊断请求包括第二sid、第四数据字段、某个已创建的会话对应的标识符、uds中已定义的某个标准诊断服务,其中,第二sid为uds中取值为0x31的sid,第四数据字段用于指示该第二诊断请求属于该私有化诊断服务且属于该私有化诊断服务的第二子服务,第二子服务为根据标识符在对应的已创建会话的线程上执行某个标准诊断服务。
[0129]
具体地,在本技术的一些实施方式中,第二诊断请求的协议格式可用“sid2 sf2 x1 d1 b1”的格式类型表示,其中,sid2就是指取值为0x31的sid(也就是第二sid),占用一个字节;“sf2 x1”为上述所述的第四数据字段,x1是基于uds自定义功能的字段,一般占用两个字节(也可占用一个字节或两个以上的字节,不做限定),x1用于指示“sid2 sf1”属于所述私有化诊断服务的第二子服务,d1表示标识符,d1对应某个已创建的会话,一般也是占用一个字节(也可占用多个字节,不做限定),b1表示的是表2中26种标准诊断服务中的某个待执行的诊断服务,b1的格式类型与标准诊断服务的格式类型一样,具体可参阅表2对应的说明,此处不予赘述。
[0130]
b、第二肯定响应
[0131]
类似地,每个诊断请求对应有一个肯定响应和一个否定响应,该第二诊断请求对应的肯定响应为第二肯定响应,其协议格式可用“[sid2 0x40] sf2”表示,其中,[sid2 0x40]表示返回的是肯定响应,“[sid2 0x40] sf2”表示返回的是该私有化诊断服务的第二子服务的肯定响应。
[0132]
c、第二否定响应
[0133]
与表2所示的26种标准诊断服务类似,如果ecu给上位机返回的是0x7f sid2 nrc,
说明返回的是第二否定响应,此处不予赘述。
[0134]
为便于理解,下面以一个实例说明私有化诊断服务的第二子服务对应的诊断请求和诊断响应的具体过程。假设上位机向ecu发送的某个诊断请求为07 31 02 ef ff 22 00 01,其中,07中的0代表网络层单帧,07中的7代表数据域有7个有效字节,31是第二sid(是十六进制的31,实际是0x31,以下类似),ef用于指示“31 02”是基于uds自定义的私有化诊断服务,“31 02”中的02第二子服务,代表的是根据标识符在对应的已创建会话的线程上执行某个标准诊断服务,ff是某个已创建的会话(可称为第一会话)对应的标识符(可称为第一标识符),“22 00 01”表示的标准诊断服务,其诊断服务名为“通过id读数据”,其中,22为该标准诊断服务对应的sid,00 01为对应的did。该第二诊断请求07 3102 ef ff 22 00 01的意思就是:在第一会话的线程上执行通过id读数据的标准诊断服务;若ecu向上位机返回的诊断响应为05 71 02 62 3e 5a xx xx,05中的0代表网络层单帧,05中的5代表数据域有5个有效字节,[31 40]=71表示对第二sid的肯定回复(即返回的是肯定响应),02是第二子服务,[22 40]=62表示的是对标准诊断服务的肯定响应,“3e 5a”是基于该标准诊断服务读取到的具体内容;若ecu向上位机返回的诊断响应为04 7f 31 02 22 xx xx xx,则04中的0代表网络层单帧,04中的4代表数据域有4个有效字节,7f表示返回的是否定响应,31是第二sid,02是第二子服务,22是nrc。
[0135]
此外,本技术实施例还提供一种通信系统,该通信系统包括上位机和ecu(可包括一个或多个ecu,图2示意的是一个ecu的情况),其中,上位机上运行有相应的诊断软件(如,canoe、汽车uds测试软件等),通过该诊断软件,ecu与上位机之间就可基于uds实现相应的诊断服务。该诊断软件包括检测模块1、检测模块2、......、检测模块n,每个检测模块可独立向ecu发送诊断请求,在本技术实施例所提供的通信系统中,不需要再有请求队列,检测模块生成的诊断请求可直接向ecu发送,ecu上则额外增加一个会话管理模块,该会话管理模块用于创建新会话,实现多会话管理的目的。
[0136]
基于图2所示的通信系统,本技术实施例还提供了一种基于uds的通信方法,该uds除了包括表2所示的26种标准诊断服务外,还包括上述基于uds自定义的私有化诊断服务,因此,结合上述所述,本技术实施例提供的基于uds的通信方法如图3所示,可包括以下步骤:
[0137]
301、ecu接收上位机发送的诊断请求。
[0138]
上位机上运行有相应的诊断软件(如,canoe、汽车uds测试软件等),通过该诊断软件,ecu与上位机之间就可基于uds实现相应的诊断服务。首先,ecu接收上位机发送的诊断请求。
[0139]
302、ecu判断该诊断请求是否是第一诊断请求。
[0140]
ecu接收到该诊断请求后,在满足对应权限的前提下,可以根据该诊断请求携带的sid和/或数据字段判断该诊断请求是否是第一诊断请求,包括但不限于如下几种方式:
[0141]
a、假设该诊断请求携带的sid为uds中未被定义的sid(即第一sid),说明该诊断请求属于基于uds自定义的私有化诊断服务,再进一步根据该诊断请求携带的数据字段判断是属于私有化诊断服务的哪种子服务,假设该诊断请求携带的数据字段是第一数据字段,则说明该诊断请求是第一诊断请求。
[0142]
b、假设该诊断请求携带的sid为uds中取值为0x31的sid(即第二sid),则进一步根
据该诊断请求携带的数据字段是否是第三数据字段,假设该诊断请求携带的数据字段是第三数据字段,则说明该诊断请求是第一诊断请求。
[0143]
303、当ecu确定该诊断请求是第一诊断请求,根据第一诊断请求创建会话,并得到该会话对应的标识符。
[0144]
当ecu确定该诊断请求是第一诊断请求,基于上述uds自定义的私有化诊断服务,ecu将会根据该第一诊断请求创建会话,并得到该对话对应的标识符,每个新创建的会话都对应会分配有一个标识符,用于识别对应的会话(类似id)。
[0145]
304、ecu向上位机发送包括标识符的第一肯定响应。
[0146]
ecu根据第一诊断请求创建好会话后,进一步向上位机发送肯定响应,该肯定响应可称为第一肯定响应,该第一肯定响应中就包括刚创建好的会话对应的标识符。
[0147]
通过上述步骤301至步骤304,就创建好了一个会话。
[0148]
在本技术上述实施方式中,ecu可基于uds自定义的私有化诊断服务,使得ecu根据属于该私有化诊断服务的第一诊断请求创建新的会话(原有uds协议自带的那个会话依然存在),可实现多会话管理,从而可解决传统uds中属于标准诊断服务的请求无法并行处理的问题。
[0149]
需要说明的是,在本技术的一些实施方式中,可重复执行上述步骤301至步骤304,直至创建的会话的数量达到预设值。例如,可事先设置预设值n(如,n=10),那么按照上述步骤重复执行10次,就可额外创建得到10个会话。这样做的好处在于:并行执行的诊断请求可以更多,从而可加快ecu的执行效率。
[0150]
还需要说明的是,在本技术的一些实施方式中,创建好的会话,就可以在对应会话的线程上执行标准诊断服务,请参阅图3,为本技术实施例提供的另一种基于uds的通信方法,该方法可以包括以下步骤:
[0151]
401、ecu接收上位机发送的诊断请求。
[0152]
402、ecu判断该诊断请求是否是第一诊断请求。
[0153]
403、当ecu确定该诊断请求是第一诊断请求,根据第一诊断请求创建会话,并得到该会话对应的标识符。
[0154]
404、ecu向上位机发送包括标识符的第一肯定响应。
[0155]
其中,步骤401至步骤404与上述步骤301至步骤304类似,具体可参阅上述所述,此处不予赘述。
[0156]
405、ecu接收上位机发送的第二诊断请求。
[0157]
ecu根据第一诊断请求创建好会话后,并向上位机返回对应会话的标识符,之后,ecu可进一步接收上位机发送的第二诊断请求,第二诊断请求中包括有第一会话对应的第一标识符和uds中已定义的某个标准诊断服务(可称为第一标准诊断服务),其中,第一会话是已经创建的会话中的一个。
[0158]
406、ecu根据该第二诊断请求在第一会话的线程上执行第一标准诊断服务,得到诊断结果。
[0159]
ecu在接收到上位机发送的第二诊断请求后,ecu可根据该第二诊断请求在第一会话的线程上执行第一标准诊断服务,得到诊断结果。
[0160]
这里需要注意的是,在本技术实施例中,ecu在第一会话的线程上执行第一标准诊
断服务的具体过程与目前在uds自带的会话的线程上执行标准诊断服务的过程是类似的,例如,若第一标准诊断服务安全级别高,若在uds自带的会话的线程上执行该第一标准诊断服务时,需要先进行会话校验,即将会话切换至对应的高级别,再进行权限校验,即校验该ecu是否有权限执行该第一标准诊断服务,若校验均通过,则在自带的会话上执行该第一标准诊断服务,在本技术实施例中,也是类似的过程,此处不予赘述。
[0161]
407、ecu向上位机发送包括该诊断结果的第二肯定响应。
[0162]
ecu得到诊断结果后,就可将该诊断结果包含进第二肯定响应中向上位机发送。
[0163]
需要说明的是,在本技术的一些实施方式中,可以是先重复执行上述步骤401至步骤404,直至创建的会话的数量达到预设值后,再接着执行步骤405至步骤407。也可以是执行完步骤401至步骤404后,就接着执行步骤405至步骤407。具体此处不做限定。不同的地方在于,第一种方式是先创建好预设数量的会话,再来根据标识符选择其中一个会话来执行标准诊断服务;第二种方式是创建好一个会话,就直接利用这个刚创建好的会话来执行标准诊断服务。
[0164]
在本技术上述实施方式中,ecu可基于uds自定义的私有化诊断服务,使得ecu根据属于该私有化诊断服务的第二诊断请求在已经创建好的某个会话的线程上执行某个标准诊断服务,可实现多个会话的线程上并行执行不同的标准诊断服务,执行效率高。
[0165]
在图3至图4所对应的实施例的基础上,为了更好的实施本技术实施例的上述方案,下面还提供用于实施上述方案的相关设备。具体参阅图5,图5为本技术实施例提供的一种ecu的结构示意图,该ecu 500包括接收模块501、创建模块502和发送模块503,其中,接收模块501,用于接收上位机发送的第一诊断请求,该第一诊断请求属于基于uds自定义的私有化诊断服务,具体与该自定义的私有化诊断服务的第一子服务对应;创建模块502,用于根据该第一诊断请求创建会话,并得到该会话对应的标识符,每个新创建的会话都对应会分配有一个标识符,用于识别对应的会话(类似id);发送模块503,用于向上位机发送包括该标识符的第一肯定响应。
[0166]
在本技术上述实施方式中,ecu可基于uds自定义的私有化诊断服务,使得ecu根据属于该私有化诊断服务的第一诊断请求创建新的会话(原有uds协议自带的那个会话依然存在),可实现多会话管理,从而可解决传统uds中属于标准诊断服务的请求无法并行处理的问题。
[0167]
需要说明的是,在一种可能的设计中,ecu 500还可以包括触发模块504,该触发模块504,用于触发接收模块501、创建模块502和发送模块503重复执行对应步骤,直至创建的会话的数量达到预设值。例如,可事先设置预设值n(如,n=10),那么按照上述步骤重复执行10次,就可额外创建得到10个会话。
[0168]
在本技术上述实施方式中,通过在ecu 500中额外增加一个触发模块504,触发上述接收模块501、创建模块502和发送模块503创建多个会话,这样做的好处在于:ecu上并行执行的诊断请求可以更多,从而可加快ecu的执行效率。
[0169]
在一种可能的设计中,接收模块501,还可以用于:在发送模块503向上位机发送第一肯定响应之后,接收上位机发送的第二诊断请求,该第二诊断请求也属于私有化诊断服务,具体与该自定义的私有化诊断服务的第二子服务对应,该第二诊断请求包括第一会话对应的第一标识符和uds已定义的第一标准诊断服务,该第一会话为已创建的会话中的一
个;之后,根据该第二诊断请求在该第一会话的线程上执行上述第一标准诊断服务,得到诊断结果。
[0170]
发送模块503,还用于:向所上位机发送包括该诊断结果的第二肯定响应。
[0171]
在本技术上述实施方式中,ecu可基于uds自定义的私有化诊断服务,使得ecu根据属于该私有化诊断服务的第二诊断请求在已经创建好的某个会话的线程上执行某个标准诊断服务,可实现多个会话的线程上并行执行不同的标准诊断服务,执行效率高。
[0172]
在一种可能的设计中,基于uds自定义的私有化诊断服务的第一子服务对应的第一诊断请求可以包括:第一sid和第一数据字段,其中,第一sid为uds中未被定义的sid,如,0x82-0x82、0x89-0xb9、0xbf-0xc2、0xc9-0xf9中的任意一个都可作为第一sid,第一sid用于指示第一诊断请求属于该私有化诊断服务,第一数据字段用于指示该第一诊断请求属于该私有化诊断服务的第一子服务,第一子服务为创建会话。
[0173]
在本技术上述实施方式中,基于uds自定义的私有化诊断服务利用的是uds未定义的一些sid来进行的,并进一步阐述了当自定义的私有化诊断服务对应的sid是uds中未被定义的sid时,与自定义的私有化诊断服务的第一子服务对应的第一诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
[0174]
在一种可能的设计中,第一诊断请求的协议格式可用“sid1 sf1”的格式类型表示,其中,sid1就是指第一sid,占用一个字节;sf1指的是第一数据字段,表示的是该私有化诊断服务的第一子服务,一般也是占用一个字节(也可占用多个字节,不做限定),该第一子服务为创建会话。
[0175]
在本技术上述实施方式中,阐述了一种具体的第一诊断请求的协议格式,具备可操作性。
[0176]
在一种可能的设计中,基于uds自定义的私有化诊断服务的第二子服务对应的第二诊断请求还可以包括:第一sid和第二数据字段,其中,第一sid为uds中未被定义的sid,如,0x82-0x82、0x89-0xb9、0xbf-0xc2、0xc9-0xf9中的任意一个都可作为第一sid,第一sid用于指示第二诊断请求属于该私有化诊断服务,第二数据字段用于指示该第二诊断请求属于该私有化诊断服务的第二子服务,第二子服务为根据标识符在对应的已创建会话的线程上执行某个标准诊断服务。
[0177]
在本技术上述实施方式中,基于uds自定义的私有化诊断服务利用的是uds未定义的一些sid来进行的,并进一步阐述了与自定义的私有化诊断服务的第二子服务对应的第二诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
[0178]
在一种可能的设计中,第二诊断请求的协议格式可用“sid1 sf2 d1 b1”的格式类型表示,其中,sid1就是指第一sid,占用一个字节;sf2指的是第二数据字段,表示的是该私有化诊断服务的第二子服务,一般也是占用一个字节(也可占用多个字节,不做限定),d1表示标识符,d1对应某个已创建的会话,一般也是占用一个字节(也可占用多个字节,不做限定),b1表示的是表2中26种标准诊断服务中的某个待执行的诊断服务,b1的格式类型就与标准诊断服务的格式类型一样,具体可参阅表2对应的说明,此处不予赘述。
[0179]
在本技术上述实施方式中,阐述了一种具体的第二诊断请求的协议格式,具备可操作性。
[0180]
在一种可能的设计中,基于uds自定义的私有化诊断服务的第一子服务对应的第
一诊断请求可以包括:第二sid和第三数据字段,其中,第二sid为uds中取值为0x31的sid,这是因为标准诊断服务名为“例行程序控制”是一个自由度较高的诊断服务,可以利用0x31,在对应的诊断请求中增加特殊的数据字段,第三数据字段用于指示该第一诊断请求属于该私有化诊断服务且属于该私有化诊断服务的第一子服务,第一子服务为创建会话。
[0181]
在本技术上述实施方式中,还可以在标准诊断服务0x31对应的诊断请求中增加一些特殊的数据字段,来实现自定义私有化诊断服务的功能,并进一步阐述了当自定义的私有化诊断服务对应的sid是uds中取值为0x31的sid时,与自定义的私有化诊断服务的第一子服务对应的第一诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
[0182]
在一种可能的设计中,第一诊断请求的协议格式可用“sid2 sf1 x1”的格式类型表示,其中,sid2为取值为0x31的sid,占用一个字节;“sf1 x1”为上述所述的第三数据字段,x1是基于uds自定义功能的字段,一般占用两个字节(也可占用一个字节或两个以上的字节,不做限定),x1用于指示“sid2 sf1”属于所述私有化诊断服务的第一子服务,第一子服务为创建会话。
[0183]
在本技术上述实施方式中,阐述了一种具体的第一诊断请求的协议格式,具备可操作性。
[0184]
在一种可能的设计中,基于uds自定义的私有化诊断服务的第二子服务对应的第二诊断请求还可以包括:所述第二sid和第四数据字段,其中,第二sid为uds中取值为0x31的sid,第四数据字段用于指示该第二诊断请求属于该私有化诊断服务且属于该私有化诊断服务的第二子服务,第二子服务为根据标识符在对应的已创建会话的线程上执行某个标准诊断服务。
[0185]
在本技术上述实施方式中,还可以在标准诊断服务0x31对应的诊断请求中增加一些特殊的数据字段,来实现自定义私有化诊断服务的功能,并进一步阐述了当自定义的私有化诊断服务对应的sid是uds中取值为0x31的sid时,与自定义的私有化诊断服务的第二子服务对应的第二诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
[0186]
在一种可能的设计中,第二诊断请求的协议格式可用“sid2 sf2 x1 d1 b1”的格式类型表示,其中,sid2就是指取值为0x31的sid(也就是第二sid),占用一个字节;“sf2 x1”为上述所述的第四数据字段,x1是基于uds自定义功能的字段,一般占用两个字节(也可占用一个字节或两个以上的字节,不做限定),x1用于指示“sid2 sf1”属于所述私有化诊断服务的第二子服务,d1表示标识符,d1对应某个已创建的会话,一般也是占用一个字节(也可占用多个字节,不做限定),b1表示的是表2中26种标准诊断服务中的某个待执行的诊断服务,b1的格式类型与标准诊断服务的格式类型一样,具体可参阅表2对应的说明,此处不予赘述。
[0187]
在本技术上述实施方式中,阐述了一种具体的第二诊断请求的协议格式,具备可操作性。
[0188]
需要说明的是,ecu 500中各模块/单元之间的信息交互、执行过程等内容,与本技术中图3至图4对应的各个实施例基于同一构思,具体内容可参见本技术前述所示的实施例中的叙述,此处不再赘述。
[0189]
此外,本技术实施例还提供一种上位机600,具体参阅图6,图6为本技术实施例提供的上位机的另一种结构示意图,上位机600包括:发送模块601和接收模块602,其中,发送模块601,用于向ecu发送第一诊断请求,以使得ecu根据该第一诊断请求创建会话,并得到该会话对应的标识符,每个新创建的会话都对应会分配有一个标识符,用于识别对应的会话(类似id),该第一诊断请求属于基于uds自定义的私有化诊断服务,具体与该自定义的私有化诊断服务的第一子服务对应;接收模块602,用于接收ecu发送的包括该标识符的第一肯定响应。
[0190]
在本技术上述实施方式中,上位机向ecu发送第一诊断请求,使得ecu可基于uds自定义的私有化诊断服务,根据属于该私有化诊断服务的第一诊断请求创建新的会话(原有uds协议自带的那个会话依然存在),可实现多会话管理,从而可解决传统uds中属于标准诊断服务的请求无法并行处理的问题。
[0191]
需要说明的是,在一种可能的设计中,上位机600还可以包括:触发模块603,该触发模块603,用于触发发送模块601和接收模块602重复执行对应步骤,直至创建的会话的数量达到预设值。例如,可事先设置预设值n(如,n=10),那么按照上述步骤重复执行10次,就可额外创建得到10个会话。
[0192]
在本技术上述实施方式中,通过在上位机600中额外增加一个触发模块603,触发上述发送模块601和接收模块602重复执行对应步骤,使得ecu据此创建多个会话,这样做的好处在于:ecu上并行执行的诊断请求可以更多,从而可加快ecu的执行效率。
[0193]
在一种可能的设计中,发送模块601,还用于:在接收模块602接收ecu发送的第一肯定响应之后,向ecu发送第二诊断请求,以使得ecu根据该第二诊断请求在第一会话的线程上执行第一标准诊断服务,得到诊断结果,该第二诊断请求属于所述私有化诊断服务,具体与该自定义的私有化诊断服务的第二子服务对应,该第二诊断请求包括第一会话对应的第一标识符和uds已定义的第一标准诊断服务,该第一会话为已创建的会话中的一个。
[0194]
接收模块602,还用于接收ecu发送的包括该诊断结果的第二肯定响应。
[0195]
在本技术上述实施方式中,上位机还可以向ecu发送第二诊断请求,使得ecu可基于uds自定义的私有化诊断服务,根据属于该私有化诊断服务的第二诊断请求在已经创建好的某个会话的线程上执行某个标准诊断服务,可实现多个会话的线程上并行执行不同的标准诊断服务,执行效率高。
[0196]
在一种可能的设计中,基于uds自定义的私有化诊断服务的第一子服务对应的第一诊断请求可以包括:第一sid和第一数据字段,其中,第一sid为uds中未被定义的sid,如,0x82-0x82、0x89-0xb9、0xbf-0xc2、0xc9-0xf9中的任意一个都可作为第一sid,第一sid用于指示第一诊断请求属于该私有化诊断服务,第一数据字段用于指示该第一诊断请求属于该私有化诊断服务的第一子服务,第一子服务为创建会话。
[0197]
在本技术上述实施方式中,基于uds自定义的私有化诊断服务利用的是uds未定义的一些sid来进行的,并进一步阐述了当自定义的私有化诊断服务对应的sid是uds中未被定义的sid时,与自定义的私有化诊断服务的第一子服务对应的第一诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
[0198]
在一种可能的设计中,第一诊断请求的协议格式可用“sid1 sf1”的格式类型表示,其中,sid1就是指第一sid,占用一个字节;sf1指的是第一数据字段,表示的是该私有化
诊断服务的第一子服务,一般也是占用一个字节(也可占用多个字节,不做限定),该第一子服务为创建会话。
[0199]
在本技术上述实施方式中,阐述了一种具体的第一诊断请求的协议格式,具备可操作性。
[0200]
在一种可能的设计中,基于uds自定义的私有化诊断服务的第二子服务对应的第二诊断请求还可以包括:第一sid和第二数据字段,其中,第一sid为uds中未被定义的sid,如,0x82-0x82、0x89-0xb9、0xbf-0xc2、0xc9-0xf9中的任意一个都可作为第一sid,第一sid用于指示第二诊断请求属于该私有化诊断服务,第二数据字段用于指示该第二诊断请求属于该私有化诊断服务的第二子服务,第二子服务为根据标识符在对应的已创建会话的线程上执行某个标准诊断服务。
[0201]
在本技术上述实施方式中,基于uds自定义的私有化诊断服务利用的是uds未定义的一些sid来进行的,并进一步阐述了与自定义的私有化诊断服务的第二子服务对应的第二诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
[0202]
在一种可能的设计中,第二诊断请求的协议格式可用“sid1 sf2 d1 b1”的格式类型表示,其中,sid1就是指第一sid,占用一个字节;sf2指的是第二数据字段,表示的是该私有化诊断服务的第二子服务,一般也是占用一个字节(也可占用多个字节,不做限定),d1表示标识符,d1对应某个已创建的会话,一般也是占用一个字节(也可占用多个字节,不做限定),b1表示的是表2中26种标准诊断服务中的某个待执行的诊断服务,b1的格式类型就与标准诊断服务的格式类型一样,具体可参阅表2对应的说明,此处不予赘述。
[0203]
在本技术上述实施方式中,阐述了一种具体的第二诊断请求的协议格式,具备可操作性。
[0204]
在一种可能的设计中,基于uds自定义的私有化诊断服务的第一子服务对应的第一诊断请求可以包括:第二sid和第三数据字段,其中,第二sid为uds中取值为0x31的sid,这是因为标准诊断服务名为“例行程序控制”是一个自由度较高的诊断服务,可以利用0x31,在对应的诊断请求中增加特殊的数据字段,第三数据字段用于指示该第一诊断请求属于该私有化诊断服务且属于该私有化诊断服务的第一子服务,第一子服务为创建会话。
[0205]
在本技术上述实施方式中,还可以在标准诊断服务0x31对应的诊断请求中增加一些特殊的数据字段,来实现自定义私有化诊断服务的功能,并进一步阐述了当自定义的私有化诊断服务对应的sid是uds中取值为0x31的sid时,与自定义的私有化诊断服务的第一子服务对应的第一诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
[0206]
在一种可能的设计中,第一诊断请求的协议格式可用“sid2 sf1 x1”的格式类型表示,其中,sid2为取值为0x31的sid,占用一个字节;“sf1 x1”为上述所述的第三数据字段,x1是基于uds自定义功能的字段,一般占用两个字节(也可占用一个字节或两个以上的字节,不做限定),x1用于指示“sid2 sf1”属于所述私有化诊断服务的第一子服务,第一子服务为创建会话。
[0207]
在本技术上述实施方式中,阐述了一种具体的第一诊断请求的协议格式,具备可操作性。
[0208]
在一种可能的设计中,基于uds自定义的私有化诊断服务的第二子服务对应的第
二诊断请求还可以包括:所述第二sid和第四数据字段,其中,第二sid为uds中取值为0x31的sid,第四数据字段用于指示该第二诊断请求属于该私有化诊断服务且属于该私有化诊断服务的第二子服务,第二子服务为根据标识符在对应的已创建会话的线程上执行某个标准诊断服务。
[0209]
在本技术上述实施方式中,还可以在标准诊断服务0x31对应的诊断请求中增加一些特殊的数据字段,来实现自定义私有化诊断服务的功能,并进一步阐述了当自定义的私有化诊断服务对应的sid是uds中取值为0x31的sid时,与自定义的私有化诊断服务的第二子服务对应的第二诊断请求具体包括的内容是哪些,ecu可直接根据这些内容进行对应动作,具备灵活性。
[0210]
在一种可能的设计中,第二诊断请求的协议格式可用“sid2 sf2 x1 d1 b1”的格式类型表示,其中,sid2就是指取值为0x31的sid(也就是第二sid),占用一个字节;“sf2 x1”为上述所述的第四数据字段,x1是基于uds自定义功能的字段,一般占用两个字节(也可占用一个字节或两个以上的字节,不做限定),x1用于指示“sid2 sf1”属于所述私有化诊断服务的第二子服务,d1表示标识符,d1对应某个已创建的会话,一般也是占用一个字节(也可占用多个字节,不做限定),b1表示的是表2中26种标准诊断服务中的某个待执行的诊断服务,b1的格式类型与标准诊断服务的格式类型一样,具体可参阅表2对应的说明,此处不予赘述。
[0211]
在本技术上述实施方式中,阐述了一种具体的第二诊断请求的协议格式,具备可操作性。
[0212]
需要说明的是,上位机600中各模块/单元之间的信息交互、执行过程等内容,与本技术中图3至图4对应的各个实施例基于同一构思,具体内容可参见本技术前述所示的实施例中的叙述,此处不再赘述。
[0213]
接下来介绍本技术实施例提供的设备,该设备可以是上位机,也可以是ecu,请参阅图7,图7为本技术实施例提供的设备700的一种结构示意图,当设备700为ecu时,则该设备700上可以部署有图5对应实施例中所描述的模块,用于实现图5对应实施例中ecu500的功能;当设备700为上位机时,则该设备700上可以部署有图6对应实施例中所描述的模块,用于实现图6对应实施例中ecu 500的功能。
[0214]
具体地,设备700由一个或多个服务器实现,设备700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,cpu)722(例如,一个或一个以上中央处理器)和存储器732,一个或一个以上存储应用程序742或数据744的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器732和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对设备700中的一系列指令操作。更进一步地,中央处理器722可以设置为与存储介质730通信,在设备700上执行存储介质730中的一系列指令操作。
[0215]
设备700还可以包括一个或一个以上电源726,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口758,和/或,一个或一个以上操作系统741,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm等等。
[0216]
需要说明的是,本技术实施例中,当设备700为ecu时,中央处理器722,用于执行图
3至图4中任意一个对应实施例中由ecu执行的步骤。例如,中央处理器722可以用于:接收上位机发送的诊断请求,接收到该诊断请求后,在满足对应权限的前提下,可以根据该诊断请求携带的sid和/或数据字段判断该诊断请求是否是第一诊断请求,包括但不限于如下几种方式:a、假设该诊断请求携带的sid为uds中未被定义的sid(即第一sid),说明该诊断请求属于基于uds自定义的私有化诊断服务,再进一步根据该诊断请求携带的数据字段判断是属于私有化诊断服务的哪种子服务,假设该诊断请求携带的数据字段是第一数据字段,则说明该诊断请求是第一诊断请求。b、假设该诊断请求携带的sid为uds中取值为0x31的sid(即第二sid),则进一步根据该诊断请求携带的数据字段是否是第三数据字段,假设该诊断请求携带的数据字段是第三数据字段,则说明该诊断请求是第一诊断请求。当确定该诊断请求是第一诊断请求,基于上述uds自定义的私有化诊断服务,将根据该第一诊断请求创建会话,并得到该对话对应的标识符,每个新创建的会话都对应会分配有一个标识符,用于识别对应的会话(类似id)。根据第一诊断请求创建好会话后,进一步向上位机发送肯定响应,该肯定响应可称为第一肯定响应,该第一肯定响应中就包括刚创建好的会话对应的标识符。通过上述步骤,就创建好了一个会话。
[0217]
需要注意的是,当设备700为ecu时,中央处理器722还可以用于执行与本技术中图3至图4中任意一个对应的方法实施例中任意一个由ecu执行的步骤,具体内容可参见本技术前述所示的方法实施例中的叙述,此处不再赘述。
[0218]
还需要说明的是,本技术实施例中,当设备700为上位机时,中央处理器722,用于执行图3至图4中任意一个对应实施例中由上位机执行的步骤。例如,中央处理器722可以用于:向ecu发送第一诊断请求,以使得ecu根据该第一诊断请求创建会话,并得到该会话对应的标识符,每个新创建的会话都对应会分配有一个标识符,用于识别对应的会话(类似id),该第一诊断请求属于基于uds自定义的私有化诊断服务,具体与该自定义的私有化诊断服务的第一子服务对应,之后,接收ecu发送的包括该标识符的第一肯定响应。通过上述步骤,使得ecu根据属于该私有化诊断服务的第一诊断请求创建好了一个会话。
[0219]
需要注意的是,当设备700为ecu时,中央处理器722还可以用于执行与本技术中图3至图4中任意一个对应的方法实施例中任意一个由上位机执行的步骤,具体内容可参见本技术前述所示的方法实施例中的叙述,此处不再赘述。
[0220]
本技术实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于进行信号处理的程序,当其在计算机上运行时,使得计算机执行如前述所示实施例描述中仿真设备所执行的步骤。
[0221]
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本技术提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
[0222]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以
很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本技术而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机或者网络设备等)执行本技术各个实施例所述的方法。
[0223]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
[0224]
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digital video disc,dvd))、或者半导体介质(例如,固态硬盘(solid state disk,ssd))等。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献