数据输入、输出方法、装置及系统
文献发布时间:2023-06-19 11:35:49
技术领域
本申请涉及软件技术领域,尤其是涉及一种数据输入、输出方法、装置及系统。
背景技术
目前基于AUTOSAR(Automotive Open System Architecture,即汽车开放系统架构)的数据输入输出方案有两种,一种是采用DLT(Diagnostic Log and Trace,诊断日志和跟踪)实现数据输入输出,另一种是通过自定义驱动的方式直接使用UART(UniversalAsynchronous Receiver Transmitter,通用非同步收发传输器)或以太网接口来实现数据输入输出。
DLT是AUTOSAR中的标准模块,但是DLT使用过程中需要静态配置并且需要专用的上位机进行数据交互,专用上位机成本较高且需要进行系统性培训,使用成本较高,接口和C语言标准库不兼容,不利于软件移植,DLT不支持格式化数据输出,无法直接输出整数,浮点数等,不方便使用。DTL只支持AUTOSAR定义的硬件接口UART,ETH和CAN。
直接使用UART或以太网进行数据输入输出会出现无法满足多线程安全和效率较低的问题,如果多个任务同时调用硬件接口,则会出现打印数据错乱的问题,如果采用同步等待的方式操作硬件还会大量占用CPU时间,并且直接调用硬件驱动接口来进行数据输出,不方便维护和代码移植,更换硬件环境后需要对代码进行大量的修改。
发明内容
本申请的目的在于提供一种数据输入、输出方法、装置及系统,能够针对任意的硬件接口实现数据输入输出,方便移植,成本低。
第一方面,本申请实施例提供一种数据输出方法,方法应用于Autosar OS;方法包括:调用预设通用输出接口,将上层应用的待输出数据存储至第一目标FIFO存储器;通过中断或轮询的方式从第一目标FIFO存储器中读取待输出数据,并通过指定硬件驱动接口将待输出数据输出至底层硬件。
进一步的,如果同时有多个数据输出任务,将上层应用的待输出数据存储至第一目标FIFO存储器的步骤之前,还包括:获取resouce锁,利用Autosar OS的resource机制防止多数据输出任务同时进行;关闭硬件驱动输出任务或关闭相关中断,防止上层应用和底层接口同时进行读写。
进一步的,上述Autosar OS运行于MCU,MCU包括多个CPU,每个CPU配置有一个第一FIFO存储器;将上层应用的待输出数据存储至第一目标FIFO存储器的步骤之前,方法还包括:根据每个第一FIFO存储器对应的优先级,确定第一目标FIFO存储器。
第二方面,本申请实施例还提供一种数据输入方法,方法应用于Autosar OS;方法包括:通过中断或轮询的方式将底层硬件的待输入数据,通过指定硬件驱动接口写入第二目标FIFO存储器;调用预设通用输入接口,从第二目标FIFO存储器中读出待输入数据,并将待输入数据输入至上层应用。
进一步的,如果同时有多个数据输入任务,从第二目标FIFO存储器中读出待输入数据的步骤之前,还包括:获取resouce锁,利用Autosar OS的resource机制防止多数据输入任务同时进行;关闭硬件驱动输入任务或关闭相关中断,防止上层应用和底层接口同时进行读写。
进一步的,上述Autosar OS运行于MCU,MCU包括多个CPU,每个CPU配置有一个第二FIFO存储器;从第二目标FIFO存储器中读出待输入数据的步骤之前,方法还包括:根据每个第二FIFO存储器对应的优先级,确定第二目标FIFO存储器。
第三方面,本申请实施例还提供一种数据输出装置,装置应用于Autosar OS;装置包括:输出接口调用模块,用于调用预设通用输出接口,将上层应用的待输出数据存储至第一目标FIFO存储器;数据输出模块,用于通过中断或轮询的方式从第一目标FIFO存储器中读取待输出数据,并通过指定硬件驱动接口将待输出数据输出至底层硬件。
第四方面,本申请实施例还提供一种数据输入装置,装置应用于Autosar OS;装置包括:数据写入模块,用于通过中断或轮询的方式将底层硬件的待输入数据,通过指定硬件驱动接口写入第二目标FIFO存储器;接口调用模块,用于调用预设通用输入接口,从第二目标FIFO存储器中读出待输入数据,并将待输入数据输入至上层应用。
第五方面,本申请实施例还提供一种数据输入输出系统,系统包括:安装有Autosar OS的MCU,MCU的每个CPU配置有第一FIFO存储器和第二FIFO存储器;Autosar OS用于执行如第一方面和第二方面所述的方法。
第六方面,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现第一方面和第二方面所述的方法。
本申请实施例提供的数据输入、输出方法、装置及系统中,数据输出方法应用于Autosar OS;通过调用预设通用输出接口,将上层应用的待输出数据存储至第一目标FIFO存储器;然后通过中断或轮询的方式从第一目标FIFO存储器中读取待输出数据,并通过指定硬件驱动接口将待输出数据输出至底层硬件。这种方式可以针对任意的硬件接口进行数据输出,无需修改应用层的代码,方便移植,成本低。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据输入输出系统的示意图;
图2为本申请实施例提供的一种软件FIFO实现过程的示意图;
图3为本申请实施例提供的一种保护机制的示意图;
图4为本申请实施例提供的一种FIFO优先级的示意图;
图5为本申请实施例提供的一种数据输出方法的流程图;
图6为本申请实施例提供的一种数据输入方法的流程图;
图7为本申请实施例提供的一种数据输出装置的结构框图;
图8为本申请实施例提供的一种数据输入装置的结构框图。
具体实施方式
下面将结合实施例对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前基于AUTOSAR(Automotive Open System Architecture,即汽车开放系统架构)的数据输入输出方案有两种,一种是采用DLT(Diagnostic Log and Trace,诊断日志和跟踪)实现数据输入输出,另一种是通过自定义驱动的方式直接使用UART(UniversalAsynchronous Receiver Transmitter,通用非同步收发传输器)或以太网接口来实现数据输入输出。
DLT是AUTOSAR中的标准模块,但是DLT使用过程中需要静态配置并且需要专用的上位机进行数据交互,专用上位机成本较高且需要进行系统性培训,使用成本较高,接口和C语言标准库不兼容,不利于软件移植,DLT不支持格式化数据输出,无法直接输出整数,浮点数等,不方便使用。DTL只支持AUTOSAR定义的硬件接口UART,ETH和CAN。
直接使用UART或以太网进行数据输入输出会出现无法满足多线程安全和效率较低的问题,如果多个任务同时调用硬件接口,则会出现打印数据错乱的问题,如果采用同步等待的方式操作硬件还会大量占用CPU时间,并且直接调用硬件驱动接口来进行数据输出,不方便维护和代码移植,更换硬件环境后需要对代码进行大量的修改。
基于此,本申请实施例提供了一种数据输入、输出方法、装置及系统,为便于对本实施例进行理解,首先对本申请实施例所公开的一种数据输入输出系统进行详细介绍。
图1示出了本申请实施例提供的一种数据输入输出系统的示意图,该系统包括:安装有Autosar OS的MCU,MCU的每个CPU配置有第一FIFO存储器和第二FIFO存储器;AutosarOS用于执行数据输入方法和数据输出方法的步骤。
参见图2所示的一种脱离底层硬件接口的软件FIFO存储器示意图,在应用软件希望进行发送数据的时候Autosar OS先对FIFO存储器进行写操作,写完后便可以继续执行软件其他部分,由于现在常用的MCU支持多核心,为了支持多核心安全,需要为每一个核心CPU单独分配一个FIFO存储器防止冲突,如图中所示的数据输出过程中的wFIFO,数据输入过程中的rFIFO。
数据的输出过程为:由Autosar OS调用通用输出接口,将上层应用的待输出数据写入wFIFO中,然后通过中断或轮询的方式读出wFIFO中的数据,并通过硬件驱动接口发送数据至底层硬件。
数据的输入过程为:Autosar OS通过中断或轮询的方式将底层硬件的待输入数据,通过指定硬件驱动接口写入rFIFO中;上层应用想要读取数据时,Autosar OS调用预设通用输入接口,从rFIFO中读出待输入数据,并将待输入数据输入至上层应用。采用软件FIFO可以使输入输出接口脱离具体硬件实现,具体硬件只需和FIFO存储器进行数据交互。
上述数据输入输出系统还提供基于Autosar OS的保护机制和防止死锁机制,来防止多任务共同访问硬件造成冲突,破坏FIFO数据结构,并可以使用Autosar OS的resource机制来防止发生死锁,避免系统崩溃。如图3所示,实现的具体机制是为每一个FIFO建立一个Resouce,在进行读写的时候需要先获取resouce锁,防止多任务同时写(读),并同时关闭硬件输入输出任务或关闭相关中断,防止上层应用和底层接口同时进行读写。
另外,上述数据输入输出系统还支持输入输出优先级机制,如图4所示,为每一个FIFO分配一个优先级,底层驱动在访问FIFO时,根据优先级进行访问,优先级需要进行静态分配,优先级只和硬件核心相关,即优先级是人为静态设定的,由于FIFO和CPU核心是一一对应的,所以设定优先级是根据CPU内核的重要性来定义的,比如安全要求较高的CPU需要更高的优先级,处理一般计算任务的可以安排较低的优先级,Autosar OS的CPU中运行的任务都是在设计的时候静态定义好的,所以只需要根据系统的整体安排静态设定优先级即可。
本申请实施例提供的数据输入输出系统,是一种通用数据输入输出方案,不需要像DLT方式进行静态配置,不需要一直占用CPU运行时间,也不需要专用上位机,其开发简单快捷,接口兼容C语言标准库,多线程安全的,高效率,低成本,支持多种硬件接口,如UART,以太网,SPI,I2C,CAN,CANFD,USB等的数据输入输出。
下面详细阐述数据输出方法和数据输入方法的具体过程:图5为本申请实施例提供的一种数据输出方法的流程图,该方法应用于Autosar OS;该方法包括以下步骤:
步骤S502,调用预设通用输出接口,将上层应用的待输出数据存储至第一目标FIFO存储器。
如果Autosar OS运行于一个CPU上,一个CPU配置有一个第一FIFO存储器,那么就可以将第一FIFO存储器当作第一目标FIFO存储器,在上层应用需要输出数据时,AutosarOS就可以直接调用预设通用输出接口,将上层应用的待输出数据存储至第一目标FIFO存储器。
如果Autosar OS运行于MCU,MCU包括多个CPU,每个CPU均配置有一个第一FIFO存储器;那么这时的第一目标FIFO存储器就需要根据多个第一FIFO存储器的优先级进行确定,也就是将优先级最高的第一FIFO存储器作为第一目标FIFO存储器。需要说明的是,这里第一FIFO存储器的优先级与其对应的CPU的优先级是一致的,即CPU的优先级越高,其配置的第一FIFO存储器的优先级也越高。
步骤S504,通过中断或轮询的方式从第一目标FIFO存储器中读取待输出数据,并通过指定硬件驱动接口将待输出数据输出至底层硬件。
本申请实施例提供的数据输出方法应用于Autosar OS;通过调用预设通用输出接口,将上层应用的待输出数据存储至第一目标FIFO存储器;然后通过中断或轮询的方式从第一目标FIFO存储器中读取待输出数据,并通过指定硬件驱动接口将待输出数据输出至底层硬件。这种方式可以针对任意的硬件接口进行数据输出,无需修改应用层的代码,方便移植,成本低。
对于同时有多个数据输出任务的情况,将上层应用的待输出数据存储至第一目标FIFO存储器的步骤之前,还包括以下步骤:获取resouce锁,利用Autosar OS的resource机制防止多数据输出任务同时进行;关闭硬件驱动输出任务或关闭相关中断,防止上层应用和底层接口同时进行读写。
上述闭硬件驱动输出任务或关闭相关中断,可以防止多数据输出任务共同访问硬件造成冲突,避免破坏第一FIFO存储器的数据结构;上述获取resouce锁是一种基于Autosar OS的保护机制和防止死锁机制,可以使用Autosar OS的resource机制来防止发生死锁,避免系统崩溃。
图6为本申请实施例提供的一种数据输入方法的流程图,该数据输入方法应用于Autosar OS,具体包括以下步骤:
步骤S602,通过中断或轮询的方式将底层硬件的待输入数据,通过指定硬件驱动接口写入第二目标FIFO存储器。
如果Autosar OS运行于一个CPU上,一个CPU配置有一个第二FIFO存储器,那么就可以将第二FIFO存储器当作第二目标FIFO存储器,在底层硬件向上层应用传输数据时,Autosar OS就可以直接通过中断或轮询的方式将底层硬件的待输入数据,通过指定硬件驱动接口写入第二目标FIFO存储器。
如果Autosar OS运行于MCU,MCU包括多个CPU,每个CPU均配置有一个第二FIFO存储器;那么这时的第二目标FIFO存储器就需要根据多个第二FIFO存储器的优先级进行确定,也就是将优先级最高的第二FIFO存储器作为第二目标FIFO存储器。需要说明的是,这里第二FIFO存储器的优先级与其对应的CPU的优先级是一致的,即CPU的优先级越高,其配置的第二FIFO存储器的优先级也越高。
步骤S604,调用预设通用输入接口,从第二目标FIFO存储器中读出待输入数据,并将待输入数据输入至上层应用。
需要说明的是,上述第一FIFO存储器和第二FIFO存储器中的“第一”、“第二”仅是用来区分数据流向,即一个是数据输出过程中用到的,另一个是数据输入过程中用到的,第一FIFO存储器和第二FIFO存储器本质上都是先进先出存储器,功能是一样的。
对于同时有多个数据输入任务的情况,从第二目标FIFO存储器中读出待输入数据的步骤之前,还包括以下步骤:获取resouce锁,利用Autosar OS的resource机制防止多数据输入任务同时进行;关闭硬件驱动输入任务或关闭相关中断,防止上层应用和底层接口同时进行读写。
同样,上述闭硬件驱动输入任务或关闭相关中断,可以防止多数据输入任务共同访问硬件造成冲突,避免破坏第二FIFO存储器的数据结构;上述获取resouce锁是一种基于Autosar OS的保护机制和防止死锁机制,可以使用Autosar OS的resource机制来防止发生死锁,避免系统崩溃。
本申请实施例提供的数据输入方法应用于Autosar OS;通过中断或轮询的方式将底层硬件的待输入数据,通过指定硬件驱动接口写入第二目标FIFO存储器;然后调用预设通用输入接口,从第二目标FIFO存储器中读出待输入数据,并将待输入数据输入至上层应用。这种方式可以针对任意的硬件接口进行数据输入,无需修改应用层的代码,方便移植,成本低。
基于上述数据输出方法实施例,本申请实施例还提供一种数据输出装置,该装置应用于Autosar OS;参见图7所示,该装置包括:输出接口调用模块72,用于调用预设通用输出接口,将上层应用的待输出数据存储至第一目标FIFO存储器;数据输出模块74,用于通过中断或轮询的方式从第一目标FIFO存储器中读取待输出数据,并通过指定硬件驱动接口将待输出数据输出至底层硬件。
上述数据输出装置还包括保护模块,用于在同时存在多个数据输出任务的情况下,将上层应用的待输出数据存储至第一目标FIFO存储器的步骤之前,获取resouce锁,利用Autosar OS的resource机制防止多数据输出任务同时进行;关闭硬件驱动输出任务或关闭相关中断,防止上层应用和底层接口同时进行读写。
上述输出接口调用模块72还用于根据每个第一FIFO存储器对应的优先级,确定第一目标FIFO存储器。
本申请实施例提供的数据输出装置,其实现原理及产生的技术效果和前述数据输出方法实施例相同,为简要描述,装置的实施例部分未提及之处,可参考前述数据输出方法实施例中相应内容。
基于上述数据输入方法实施例,本申请实施例还提供一种数据输入装置,该装置应用于Autosar OS;参见图8所示,该装置包括:数据写入模块82,用于通过中断或轮询的方式将底层硬件的待输入数据,通过指定硬件驱动接口写入第二目标FIFO存储器;接口调用模块84,用于调用预设通用输入接口,从第二目标FIFO存储器中读出待输入数据,并将待输入数据输入至上层应用。
上述数据输入装置还包括保护模块,用于在同时存在多个数据输入任务的情况下,从第二目标FIFO存储器中读出待输入数据的步骤之前,获取resouce锁,利用AutosarOS的resource机制防止多数据输入任务同时进行;关闭硬件驱动输入任务或关闭相关中断,防止上层应用和底层接口同时进行读写。
上述接口调用模块84还用于根据每个第二FIFO存储器对应的优先级,确定第二目标FIFO存储器。
本申请实施例提供的数据输入装置,其实现原理及产生的技术效果和前述数据输入方法实施例相同,为简要描述,装置的实施例部分未提及之处,可参考前述数据输入方法实施例中相应内容。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,该计算机可执行指令促使处理器实现上述方法,具体实现可参见前述方法实施例,在此不再赘述。
本申请实施例所提供的数据输入、输出方法、装置及系统的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本申请的范围。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本申请的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
- 数字设备,数据输入输出方法和数据输入输出控制系统
- 数据输入系统,数据输入接收装置,数据输入读取方法,以及数据输入接收方法