掌桥专利:专业的专利平台
掌桥专利
首页

一种单软多硬实现方法及终端

文献发布时间:2023-06-19 10:08:35


一种单软多硬实现方法及终端

技术领域

本发明涉及计算机技术领域,特别涉及一种单软多硬实现方法及终端。

背景技术

在完成项目产品时,一个软件平台不单只是做一个项目,往往会基于一个项目衍生多个项目。而这些项目常常只是硬件上的外设更换,比如我们已经完成了项目A,但是新客户的项目B的显示屏替换为显示屏B,项目C的显示屏替换为显示屏C等情况。

现有技术中,常常采用不同的项目对应不同的编译脚本,不同的编译脚本使用不同的config配置文件和不同的设备树文件的模式。这样编译根据config差异,只编译对应的驱动代码,生成不同的镜像文件;根据设备树差异,开机只加载对应驱动启动。如:

项目A:使用编译脚本build_A,里面config文件配置support LCD_A,dts设备树LCD_A status为OK;这样编译时编译的是LCD_A显示屏的代码;生成的镜像文件只含有LCD_A显示屏的驱动;开机设备只加载LCD_A的驱动。

项目B:使用编译脚本build_B,里面config文件配置support LCD_B,dts设备树LCD_B的状态status为OK;这样编译时编译的是LCD_B显示屏的代码。生成的镜像文件只含有LCD_B显示屏的驱动,开机设备只加载LCD_B的驱动。

不同项目使用不同的镜像文件,存在如下缺点:

(1)、导致增加开发工作量,代码维护更复杂。

(2)、增加测试工作量,得多个软件都全部测试,若只是一套软件,则不同项目有些公共的测试可以少测或投入较少的测试资源。

(3)、一旦项目多了,烧写也容易混淆。

发明内容

本发明所要解决的技术问题是:提供一种单软多硬实现方法及终端,减少工作量的同时避免因项目多而烧写混淆的情况。

为了解决上述技术问题,本发明采用的技术方案为:

一种单软多硬实现方法,包括:

S1、将设备树中所有多供外设的状态默认配置为不加载;

S2、启动开机引导程序读取当前设备硬件的当前预设管脚电压,根据所述预设管脚电压与硬件版本的映射关系获取所述当前预设管脚电压所对应的当前硬件版本;

S3、根据所述当前硬件版本,将设备树中对应所述当前硬件版本的外设的状态设置为需要加载;

S4、实时操作系统加载所述设备树中状态为需要加载的外设所对应的驱动。

一种单软多硬实现终端,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

S1、将设备树中所有多供外设的状态默认配置为不加载;

S2、启动开机引导程序读取当前设备硬件的当前预设管脚电压,根据所述预设管脚电压与硬件版本的映射关系获取所述当前预设管脚电压所对应的当前硬件版本;

S3、根据所述当前硬件版本,将设备树中对应所述当前硬件版本的外设的状态设置为需要加载;

S4、实时操作系统加载所述设备树中状态为需要加载的外设所对应的驱动。

本发明的有益效果在于:本发明通过读取预设管脚的电压,根据电压的不同对设备树中的设备状态进行配置,以自动加载对应的设备驱动,实现了单软多硬,一套软件可以自动适配不同的硬件,缩短了开发周期、减少了工作量并避免了因项目多而烧写混淆的情况。

附图说明

图1为本发明实施例的一种单软多硬实现方法的流程图;

图2为本发明实施例的一种单软多硬实现终端的结构图;

图3为本发明实施例的一种单软多硬实现方法的详细流程图;

图4为本发明实施例的一种单软多硬实现方法的ADC管脚示意图;

标号说明:

1、一种单软多硬实现终端;2、处理器;3、存储器。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

请参照图1、图3和图4,一种单软多硬实现方法,包括:

S1、将设备树中所有多供外设的状态默认配置为不加载;

S2、启动开机引导程序读取当前设备硬件的当前预设管脚电压,根据所述预设管脚电压与硬件版本的映射关系获取所述当前预设管脚电压所对应的当前硬件版本;

S3、根据所述当前硬件版本,将设备树中对应所述当前硬件版本的外设的状态设置为需要加载;

S4、实时操作系统加载所述设备树中状态为需要加载的外设所对应的驱动。

从上述描述可知,本发明的有益效果在于:本发明通过读取预设管脚的电压,根据电压的不同对设备树中的设备状态进行配置,以自动加载对应的设备驱动,实现了单软多硬,一套软件可以自动适配不同的硬件,缩短了开发周期、减少了工作量并避免了因项目多而烧写混淆的情况。

进一步的,所述步骤S2具体为:

启动开机引导程序uboot或BootLoader读取当前设备硬件的当前预设管脚电压作为ADC电压值,根据所述ADC电压值和HW Version的映射关系,获取所述ADC电压值对应的HWVersion的值,并根据所述ADC电压值对应的HW Version的值获取当前硬件版本。

由以上描述可知,开机引导程序使用uboot或BootLoader作为本发明的一种具体实施例;此外,预先将预设管脚电压的电压值和硬件版本进行一一对应,使得后续在判断硬件版本时,只需要根据预设管脚电压的电压值,就能够获取到对应的硬件版本,以实现单软多硬。

进一步的,所述当前设备硬件的当前预设管脚电压为所述当前设备硬件上两个电阻的分压,所述当前设备硬件上的两个电阻的阻值与其他硬件版本的设备硬件上的两个电阻的阻值不同。

由以上描述可知,不同硬件版本上的两个电阻阻值不同,从而生成不同的分压。即通过两个电阻的更换来输出不同的电压值,从而区分不同的硬件版本。

进一步的,所述步骤S4之后还包括:

S5、实时操作系统的启动函数读取所述HW Version的值,并根据所述HW Version的值进行实时操作系统驱动的细分化。

由以上描述可知,根据HW Version的值我们能够对驱动进行进一步的分化,如区分不同的标准。

进一步的,所述步骤S1中的设备树位于实时操作系统中,所述设备树描述的信息包括:CPU的数量和类别、内存基地址和大小、总线和桥、外设连接、中断控制器和中断使用情况、GPIO控制器和GPIO使用情况以及Clock控制器和Clock使用情况。

由以上描述可知,本发明的所述设备树中包含了外设连接信息等,作为本发明的一种具体实施例。

请参照图2,一种单软多硬实现终端,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

S1、将设备树中所有多供外设的状态默认配置为不加载;

S2、启动开机引导程序读取当前设备硬件的当前预设管脚电压,根据所述预设管脚电压与硬件版本的映射关系获取所述当前预设管脚电压所对应的当前硬件版本;

S3、根据所述当前硬件版本,将设备树中对应所述当前硬件版本的外设的状态设置为需要加载;

S4、实时操作系统加载所述设备树中状态为需要加载的外设所对应的驱动。

从上述描述可知,本发明的有益效果在于:本发明通过读取预设管脚的电压,根据电压的不同对设备树中的设备状态进行配置,以自动加载对应的设备驱动,实现了单软多硬,一套软件可以自动适配不同的硬件,缩短了开发周期、减少了工作量并避免了因项目多而烧写混淆的情况。

进一步的,所述步骤S2具体为:

启动开机引导程序uboot或BootLoader读取当前设备硬件的当前预设管脚电压作为ADC电压值,根据所述ADC电压值和HW Version的映射关系,获取所述ADC电压值对应的HWVersion的值,并根据所述ADC电压值对应的HW Version的值获取当前硬件版本。

由以上描述可知,开机引导程序使用uboot或BootLoader作为本发明的一种具体实施例;此外,预先将预设管脚电压的电压值和硬件版本进行一一对应,使得后续在判断硬件版本时,只需要根据预设管脚电压的电压值,就能够获取到对应的硬件版本,以实现单软多硬。

进一步的,所述当前设备硬件的当前预设管脚电压为所述当前设备硬件上两个电阻的分压,所述当前设备硬件上的两个电阻的阻值与其他硬件版本的设备硬件上的两个电阻的阻值不同。

由以上描述可知,不同硬件版本上的两个电阻阻值不同,从而生成不同的分压。即通过两个电阻的更换来输出不同的电压值,从而区分不同的硬件版本。

进一步的,所述处理器执行所述计算机程序时在所述步骤S4之后还包括:

S5、实时操作系统的启动函数读取所述HW Version的值,并根据所述HW Version的值进行实时操作系统驱动的细分化。

由以上描述可知,根据HW Version的值我们能够对驱动进行进一步的分化,如区分不同的标准。

进一步的,所述步骤S1中的设备树位于实时操作系统中,所述设备树描述的信息包括:CPU的数量和类别、内存基地址和大小、总线和桥、外设连接、中断控制器和中断使用情况、GPIO控制器和GPIO使用情况以及Clock控制器和Clock使用情况。

由以上描述可知,本发明的所述设备树中包含了外设连接信息等,作为本发明的一种具体实施例。

请参照图1、图3和图4,本发明的实施例一为:

一种单软多硬实现方法,包括:

S1、将设备树中所有多供外设的状态默认配置为不加载;

所述步骤S1中的设备树位于实时操作系统中,所述设备树描述的信息包括:CPU的数量和类别、内存基地址和大小、总线和桥、外设连接、中断控制器和中断使用情况、GPIO控制器和GPIO使用情况以及Clock控制器和Clock使用情况;

本实施例中,在实时操作系统kernel的设备树,即kernel中的dts文件,是一种描述硬件资源的数据结构,它通过开机引导程序将硬件资源传给内核,使得内核和硬件资源描述相对独立,设备树含有各种驱动设备节点,同时kernel也含有这些模块的代码。对于常更替换的器件,如显示屏、触摸屏、摄像头等器件,我们都配置status为disable,那么开机过程如果设备树对应驱动的status不是ok,kernel是不会加载这些驱动。

S2、启动开机引导程序读取当前设备硬件的当前预设管脚电压,根据所述预设管脚电压与硬件版本的映射关系获取所述当前预设管脚电压所对应的当前硬件版本;

所述步骤S2具体为:

启动开机引导程序uboot或BootLoader读取当前设备硬件的当前预设管脚电压作为ADC电压值,根据所述ADC电压值和HW Version的映射关系,获取所述ADC电压值对应的HWVersion的值,并根据所述ADC电压值对应的HW Version的值获取当前硬件版本;

所述当前设备硬件的当前预设管脚电压为所述当前设备硬件上两个电阻的分压,所述当前设备硬件上的两个电阻的阻值与其他硬件版本的设备硬件上的两个电阻的阻值不同;

S3、根据所述当前硬件版本,将设备树中对应所述当前硬件版本的外设的状态设置为需要加载;

S4、实时操作系统加载所述设备树中状态为需要加载的外设所对应的驱动;

本实施例中,开机时,开机引导程序uboot或BootLoader会读取设备硬件的adc管脚的值,其中Board_Rev是用于不同项目或不同板子,通过R47和R48两个电阻的更换而输出不同的电压值,然后Board_Rev的电压输给ADC,开机引导程序中读取的ADC值就是这个Board_Rev的电压,如图4所示,将1.8V的电压,划分为4种输出范围,对应4个项目,如下表格:

根据图4,Board_Rev硬件理论上输出=1.8V*12/(12+10)=0.982V=982mv,对应HW_Version为2的输出900~1350范围,即知道对应硬件版本为项目C,那么我们将设置HW_Version的值为2到系统中,并将设备树中对应项目C指定外设的status设置为ok,本实施例中,项目A/B/C/D使用的显示屏LCD厂家不一样,分别对应LCD_A/LCD_B/LCD_C/LCD_D,那么uboot引导程序开机过程只将设备树的LCD_C的status被设置为ok,其他还是disable不变;

kernel加载设备树中status为ok的各外设驱动;那么对应项目C只加载了LCD_C的显示屏驱动。

所述步骤S4之后还包括:

S5、实时操作系统的启动函数读取所述HW Version的值,并根据所述HW Version的值进行实时操作系统驱动的细分化。

例如,不同国家对应不同的耳机标准,如项目A是美国标准,项目B是欧洲标准。虽然项目A和项目B都是用了同一Audio厂家芯片,但是我们可以在audio的驱动里先通过HW_Verison的值判断是项目A还是项目B,然后根据HW_Version的值将项目A设置为美国标准,项目B设为欧洲标准。

请参照图2,本发明的实施例二为:

一种单软多硬实现终端1,包括处理器2、存储器3及存储在存储器3上并可在处理器2上运行的计算机程序,所述处理器2执行所述计算机程序时实现以上实施例一中的步骤。

综上所述,本发明提供的一种单软多硬实现方法及终端,通过读取ADC管脚,对设备树中的设备状态进行配置,使自动加载对应的设备驱动,实现了单软多硬,一套软件可以自动适配不同的硬件,缩短了开发周期、减少了工作量并避免了因项目多而烧写混淆的情况。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 一种单软多硬实现方法及终端
  • 一种通信终端多卡单待实现方法、通信终端和电采集设备
技术分类

06120112437886