本实用新型涉及计算机技术领域,尤其涉及一种硬件标识号的实现装置。
背景技术:
为了方便平台固件维护,在硬件开发时,经常会预留一些产品自身常规功能以外的外设用来做硬件版本更新。这样一来,一方面,每一种不同的硬件配置可以拥有唯一的标识(ID,Identifier)号;另一方面,软件维护时,可通过对硬件ID号读取进行简单的条件编译,便可实现同一平台多种外设配置的软件兼容。
目前,获取硬件ID号的常规方式有以下两种:
一种是电阻网络+GPIO(General Purpose Input Output,通用输入/输出)接口方式,通过电阻网络上下拉,然后通过GPIO外设读入的方式实现。如图1所示,通过n个GPIO接口上下拉,可获取2n个硬件ID号。
另一种是存储单元+主机接口方式,通过主机接口读取相应特征字节数据用作硬件ID号。如图2所示,通过IIC(Inter-Integrated Circuit,集成电路总线)接口,去读取含有EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)的模块特征字节。
对于第一种方式来说,对于一个新开发的平台,并不知晓后期到底会有多少不同硬件配置。如果n值取太大,会浪费过多的外设资源;如果n值取太小,则后期硬件ID号可能不够用。硬件外设开支较大,且获取的硬件ID数目太有限。
对于第二种方式来说,需要在不同硬件配置下,先把相应的ID号烧录到预设地址,才能固化到相应的存储单元中。增加了一个人工烧录环节,所需成本较高。
技术实现要素:
有鉴于此,本实用新型实施例提供一种硬件标识号的实现装置,能够以较低的成本获取较多的硬件标识号,实现简单。
第一方面,本实用新型实施例提供一种硬件标识号的实现装置,包括:模数控制器单元和分压电阻网络单元;其中,所述分压电阻网络单元包括第一电阻单元和第二电阻单元,所述第一电阻单元的第一端连接参考电源,所述第二电阻单元的第一端接地,所述第一电阻单元的第二端和所述第二电阻单元的第二端连接所述模数控制器单元;所述硬件标识号的实现装置能实现的硬件标识号为2n个,其中,n为所述模数控制器单元的位数。
结合第一方面,在第一方面的第一种实施方式中,所述第一电阻单元和所述第二电阻单元为单一的电阻器。
结合第一方面,在第一方面的第二种实施方式中,所述第一电阻单元和所述第二电阻单元为多个电阻器串联组成。
结合第一方面,在第一方面的第三种实施方式中,所述第一电阻单元和所述第二电阻单元为多个电阻器并联组成。
结合第一方面,在第一方面的第四种实施方式中,所述第一电阻单元的电阻值与所述第二电阻单元的电阻值相等。
本实用新型提供的硬件标识号的实现装置,包括模数控制器单元和分压电阻网络单元,分压电阻网络单元的第一电阻单元的第一端连接参考电源VCC,第二电阻单元的第一端接地,第一电阻单元的第二端和第二电阻单元的第二端连接模数控制器单元,可实现的硬件标识号为2n个,其中,n为所述模数控制器单元的位数。与现有技术相比,本实用新型通过主机模数外设资源,搭配一组电阻的分压电路即可满足用户需求,可获取的硬件标识号的个数只与模数的位数相关,从而能够以较低的成本获取较多的硬件标识号,实现简单。
附图说明
为了更清楚地说明本实用新型实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本实用新型的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为现有技术中通过电阻网络+GPIO方式获取硬件标识号的结构示意图;
图2为现有技术中通过存储单元+主机接口方式获取硬件标识号的结构示意图;
图3为本实用新型实施例提供的硬件标识号的实现装置的结构示意图。
具体实施方式
下面结合附图对本实用新型实施例进行详细描述。
应当明确,所描述的实施例仅仅是本实用新型一部分实施例,而不是全部的实施例。基于本实用新型中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本实用新型保护的范围。
图3为本实用新型硬件标识号的实现装置实施例一的结构示意图,如图3所示,本实施例的硬件标识号的实现装置可以包括:模数(AD,Analog to Digital,)控制器单元11和分压电阻网络单元12;其中,所述分压电阻网络单元12包括第一电阻单元R1和第二电阻单元R2,所述第一电阻单元R1的第一端连接参考电源(VCC),所述第二电阻单元R2的第一端接地,所述第一电阻单元R1的第二端和所述第二电阻单元R2的第二端连接所述AD控制器单元;所述硬件ID号的实现装置能实现的硬件ID号为2n个,其中,n为所述AD控制器单元的位数。
其中,所述第一电阻单元R1的第二端和所述第二电阻单元R2的第二端所输出的采样电压为VCC*R2/(R1+R2)。
可选地,所述第一电阻单元和所述第二电阻单元可以为单一的电阻器。
可选地,所述第一电阻单元和所述第二电阻单元可以为多个电阻器串联组成。
可选地,所述第一电阻单元和所述第二电阻单元可以为多个电阻器并联组成。
优选地,所述第一电阻单元的电阻值与所述第二电阻单元的电阻值相等。
从而,通过主机AD外设资源,搭配一组电阻的分压电路,理论可获取硬件ID号的个数只与AD的位数相关。例如,若外设平台集成AD为8bit,则可获取28个硬件ID号;若外设平台集成AD为10bit,则可获取210个硬件ID号;若外设平台集成AD为nbit,则可获取2n个硬件ID号。而现有的一些集成有AD平台芯片,一般AD都在8bit以上。对于一种未知新平台,本实用新型实施例提供的硬件ID号的实现装置,只需要使用一个AD管脚,搭配一组分压电阻即可满足用户对硬件ID号的需求。
具体地,如图3所示,当AD为8bit时,对于AD控制器单元11的管脚来说,可以产生28个设备地址,也即可以产生28个硬件ID号,分别为0~(28-1)。由于所述第一电阻单元R1的第二端和所述第二电阻单元R2的第二端所输出的采样电压为VCC*R2/(R1+R2),因此,通过设置第一电阻单元R1和第二电阻单元R2的阻值,可以得到28个不同的采样电压值,而当采样电压值不同时,对应的硬件ID号也不相同。
例如:设置R1+R2=256KΩ,设置R2=1KΩ,则所述第一电阻单元R1的第二端和所述第二电阻单元R2的第二端所输出的采样电压为(1/256)VCC,此时对应的硬件ID号为0;设置R2=2KΩ,则所述第一电阻单元R1的第二端和所述第二电阻单元R2的第二端所输出的采样电压为(2/256)VCC,此时对应的硬件ID号为1;以此类推,直至设置R2=256KΩ,则所述第一电阻单元R1的第二端和所述第二电阻单元R2的第二端所输出的采样电压为(256/256)VCC,此时对应的硬件ID号为255。
从而,通过设置第一电阻单元R1和第二电阻单元R2的阻值,可以得到256个不同的所述第一电阻单元R1的第二端和所述第二电阻单元R2的第二端所输出的采样电压值,对应地,在AD控制器单元11的管脚处,可以产生256个不同的ID号。也就是说,每个不同的所述第一电阻单元R1的第二端和所述第二电阻单元R2的第二端所输出的采样电压值,在AD控制器单元11的管脚处对应一个不同的ID号,从而,可以实现只需要使用一个AD管脚,搭配一组分压电阻即可满足用户对硬件ID号的需求。
本实用新型实施例提供的硬件标识号的实现装置,包括AD控制器单元和分压电阻网络单元,分压电阻网络单元的第一电阻单元的第一端连接参考电源VCC,第二电阻单元的第一端接地,第一电阻单元的第二端和第二电阻单元的第二端连接AD控制器单元,可实现的硬件ID号为2n个,其中,n为所述AD控制器单元的位数。与现有技术相比,本实用新型通过主机AD外设资源,搭配一组电阻的分压电路即可满足用户需求,可获取的硬件ID号的个数只与AD的位数相关,从而能够以较低的成本获取较多的硬件ID号,实现简单。
为了更详细地说明上述实施例提供的硬件标识号的实现装置,本实用新型实施例提供一种实现软件固件版本兼容的方法,主要包括以下几个步骤:
步骤S11、离线生成不同ID号下的硬件配置信息表。
步骤S12、根据不同的硬件配置,查询硬件配置信息表,映射出相应的硬件ID号。
步骤S13、有了2中的硬件ID号后,采用本实用新型实施例提供的硬件ID号的实现装置将步骤S12中所映射出的硬件ID号实现出来。
步骤S14、在CPU启动代码中,添加相应的条件编译功能。
具体地,可以采用如下的代码实现:
#ifdef ID1
{/*********
如果获取ID号为ID1,加载配置信息1
*******/
}
#else ifdef ID2
{/*********
如果获取ID号为ID2,加载配置信息2
*******/
}
……
#else ifdef IDn
{/*********
如果获取ID号为IDn,加载配置信息n
*******/
}
步骤S15、硬件平台上电启动后,在启动代码中获取硬件平台ID号,然后根据相应的硬件ID号加载相应的配置信息。
从而,通过在启动代码中,获取AD控制器上不同的AD值,即可实现对固件版本区分,实现简单,可使用的ID号充足。
本实用新型实施例还提供另外一种实现软件固件版本兼容的方法,将分压电阻网络单元的分压值接入到AD控制器单元中,使用AD转换值,作为硬件系统的ID值。在本实施例中,使用的平台单元集成AD接口为14bit的AD控制器,可实现硬件ID号为214个,R1=R2,则获取硬件ID=10000000000000B。
CPU在上电启动后,通过相应的AD控制器读取硬件ID号,实施例ID=10000000000000B,并进入相应的条件编译代码:
#ifdef ID1
{/*********
如果获取ID号为ID1,加载配置信息1
*******/
}
#else ifdef ID2
{/*********
如果获取ID号为ID2,加载配置信息2
*******/
}
……
#else ifdef 10000000000000B
{/*********
获取ID号为10000000000000B,加载10000000000000BID号下对应的配置信息。
*******/
}
如此一来,一个集成14bit的AD控制器CPU,搭配相应的电阻分压网络,可以实现214个配置信息。
以上所述,仅为本实用新型的具体实施方式,但本实用新型的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本实用新型揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本实用新型的保护范围之内。因此,本实用新型的保护范围应该以权利要求的保护范围为准。