一种电池信息的取得方法及取得模块的制作方法

文档序号:1370293阅读:266来源:国知局
专利名称:一种电池信息的取得方法及取得模块的制作方法
技术领域
本发明涉及一种电池信息的取得方法及取得模块,特别是涉及一种应用于便携式电子装置,以取得其电池信息的模块及其取得方法。
背景技术
虽然电池电源不一定是消费者在选择便携式电子装置(例如笔记本计算机等)时所考虑地主要功能,但由于便携式电子装置有时需完全依靠电池来运作,因此电池的性能足以影响整个电子装置的表现。所以不论是在生产过程中或是在日常生活中,了解电池的信息也就成为便携式电子装置在制造或使用上一项很重要的问题。
一般来说,操作系统均会提供取得电池信息的方法,举例来说,在微软所开发的操作系统-windows中,使用者可通过应用程序编程接口(ApplicaitonProgramming Interfaces;简称API)取得各项电池信息,例如电池的制造厂商、出厂日期、序列号等基本信息以及剩余电量、充放电次数等动态信息;但是针对一些特殊需求,例如电池充放电的控制等,操作系统并不会提供使用者任何有关这类信息的操作接口。而且,目前消费者对于新型便携式消费电子装置的功能要求越来越多,同时,也要求越来越长的可工作时间,因此,更全面了解电池相关信息以及系统的基本信息有助于提高便携式电子装置的功效。
然而,就笔记本计算机来看,用于储存和读取笔记本计算机的电池信息的格式会随着不同生产厂商而有不同设计,甚至同一家厂商所生产的笔记本计算机其电池信息的储存和读取格式也会根据不同机型的笔记本计算机而不同。因此,先前欲取得新机型便携式电子装置的电池信息来设计一测试程序时,一般都是根据下列步骤步骤110,首先与新型便携式电子装置的基本输入/输出控制系统(basic input/output system;简称BIOS)开发人员取得联系;步骤120,再向其询问有关新机型的系统结构、电池相关参数和设置方法等相关信息;步骤130,然后根据取得的相关信息设计测试方法;步骤140,将设计完成的测试方法执行于新机型的样品装置上,其中,步骤150,当执行过程中出现任何问题时,则需重复进行上述步骤120及步骤130,并再一次在新机型的样品装置上执行步骤140;步骤150,若在执行过程中仍然有问题产生,则重复进行上述循环直到执行过程中无任何问题产生为止;步骤160,最后再将执行成功的测试方法运用于测试程序里。
然而,通常能跟开发人员取得的电池的相关信息不多,并且通常取得的只是些基本信息,无法取得相当全面性的信息。并且根据这些信息设计出的测试方法都是在操作系统下执行,因此,实际上运用测试程序时,常常会出现与操作系统所发出的指令相冲突的现象。而此问题轻则导致程序中断,重则会造成死机等情况发生。
另外,由于笔记本计算机的电池信息储存和读取格式的设计常会因不同生产厂商或是不同机型而有所改变,因此通过此方法得到的测试程序其兼容性相当差。
而且,由于上述步骤在执行时需耗费相当多时间,因此整个生产效率也就相对较差,再加上在程序维护上成本高,以及稳定性很差,因此,需研究一更有效的方法以取得各种机型的电池相关信息。

发明内容
本发明所要解决的技术问题在于提供一种电池信息的取得方法及取得模块,应用于便携式电子装置,以取得其电池信息,从而解决先前技术所存在的很多限制与缺点。
为了实现上述目的,本发明提供了一种电池信息的取得方法,应用于一便携式电子装置中,以取得一个以上电池的电池信息,其中,该便携式电子装置中包含一BIOS,其特点在于,包括下列步骤步骤1,自该BIOS中取得相应该电池的多个机器语言,并将该机器语言转换成相应的多个汇编语言,其中该机器语言内建于该便携式电子装置的一基本输入/输出控制系统中;步骤2,在该相应的汇编语言中取得一个以上的方法指令,并找出该方法指令具体实现的多个汇编语言;步骤3,将该汇编语言转换成多个程序语言;以及步骤4,根据该汇编语言中的一个以上系统保护代码修改该程序语言。
上述电池信息的取得方法,其特点在于,该BIOS为一ACPI BIOS时,该机器语言为多个AML且该汇编语言为多个ASL。
上述电池信息的取得方法,其特点在于,该步骤1包括下列步骤步骤5,查找代表该电池的一个以上起始关键词;步骤6,根据该起始关键词而取得代表该电池的该机器语言;步骤7,根据取得的该机器语言查找代表该电池各项信息的一个以上的关键词;步骤8,根据该关键词而取得代表该电池各项信息的该机器语言;步骤9,解析所有该取得的机器语言,以得多个第一解析结果;以及步骤10,根据该第一解析结果将所有该取得的机器语言转换成相应的该汇编语言。
上述电池信息的取得方法,其特点在于,该取得的机器语言采用二进制模式。
上述电池信息的取得方法,其特点在于,该步骤1包括下列步骤步骤5,查找代表该电池的一起始关键词;步骤6,根据该起始关键词而取得代表该电池的该机器语言;步骤7,根据取得的该机器语言查找代表该电池各项信息的一关键词;步骤8,根据该关键词而取得代表该电池各项信息的该机器语言;步骤9,解析所有该取得的机器语言,以得多个第一解析结果;以及步骤10,根据该第一解析结果将所有该取得的机器语言转换成相应的该汇编语言;步骤11,重复执行该步骤7,其中,若查找不到该关键词则执行该步骤5;步骤12,重复该步骤6至11,直至查找不到该关键词;步骤13,重复执行该步骤5,其中,若查找不到该起始关键词则完成该步骤1;以及步骤14,重复该步骤2至13,直至查找不到该起始关键词。
上述电池信息的取得方法,其特点在于,该取得的机器语言采用二进制模式。
上述电池信息的取得方法,其特点在于,该步骤2包括下列步骤步骤15,在该相应的汇编语言中查找一个以上的方法指令,其中该方法指令代表相应该电池的一个以上的控制方法;步骤16,取得该方法指令,并将该方法指令转换回相应的多个机器语言,以作为一个以上的关键词;步骤17,查找在步骤16中取得的该关键词;步骤18,根据该关键词而取得该方法指令具体实施的多个机器语言;步骤19,解析该取得的机器语言,以得多个第二解析结果;步骤20,根据该第二解析结果将所有该取得的机器语言转换成相应的该汇编语言;步骤21,在该步骤19所得的该相应的汇编语言中查找一个以上的方法指令,并确认是否有该方法指令存在,其中,若有则重复该步骤16;以及步骤22,重复该步骤17至21,直至无该方法指令存在。
上述电池信息的取得方法,其特点在于,该步骤2中取得的该机器语言采用十六进制模式。
上述电池信息的取得方法,其特点在于,该十六进制的机器语言为多个内存信息。
上述电池信息的取得方法,其特点在于,该步骤4包括下列步骤步骤23,在该相应的汇编语言中查找一标识符;步骤24,根据该标识符而取得一标识符语句以及一范畴语句;步骤25,解析取得的该标识符语句及该范畴语句,以得多个第三解析结果;步骤26,根据该第三解析结果而找到一个以上的系统保护代码,其中该系统保护代码用以避免该程序语言所产生的指令冲突现象;以及步骤27,根据该系统保护代码修改该程序语言。
上述电池信息的取得方法,其特点在于,该标识符语句包括一操作区域名称参数、一操作区域空间参数、一相对操作区域空间基址偏移量参数,以及一操作区域长度参数。
上述电池信息的取得方法,其特点在于,该范畴语句跟随在该标识符语句之后,用以具体描述该标识符语句的一对应的操作区域。
上述电池信息的取得方法,其特点在于,该范畴语句包括一操作区域名称参数、一访问类型参数、一加锁规则参数、一更新规则参数,以及一范畴单元列表。
上述电池信息的取得方法,其特点在于,该系统保护代码为该便携式电子装置的一个以上的全局锁。
上述电池信息的取得方法,其特点在于,该机器语言采用二进制模式。
上述电池信息的取得方法,其特点在于,该程序语言为一C++。
本发明还提供一种电池信息的取得模块,应用于一便携式电子装置中,以取得一个以上的电池的电池信息,其中,该便携式电子装置中包含一BIOS,其特点在于,包括一第一转换模块,用以接收来自该BIOS的相应该电池的多个机器语言,并将该机器语言转换成多个汇编语言后输出;一比较模块,连接至该第一转换模块,用以接收该第一转换模块输出的该汇编语言,并自该汇编语言中取得一个以上的方法指令,然后找出该方法指令具体实现的多个汇编语言后输出所有的该汇编语言;一第二转换模块,连接至该比较模块,用以接收该比较模块输出的该汇编语言,并将该汇编语言转换成多个程序语言;以及一修改模块,连接至该第二转换模块,用以根据该汇编语言中的一个以上的系统保护代码修改该程序语言。
本发明的功效,在于应用于便携式电子装置,可取得其电池信息,从而解决先前技术所存在的诸多限制性问题与缺点。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。


图1为现有技术的流程图2为本发明一实施例的电池信息的取得方法的流程图3为本发明另一实施例的电池信息的取得方法流程图4为图3中步骤300的一实施例的流程图5为图3中步骤300的另一实施例的流程图6为图3中步骤320的一实施例的流程图7为图3中步骤360的一实施例的流程图8为本发明另一实施例的起始步骤的流程图9为图8中取得的AML示意图10为图9的AML解析示意图11为图8中相应于ASL中一方法指令具体实施的内存信息示意图12为图11的内存信息解析示意图;以及
图13为本发明一实施例的电池信息取得模块的结构图。
其中,附图标记
10-取得模块,12-BIOS
20-第一转换模块,30-比较模块
40-第二转换模块,50-修正模块
ML-机器语言,SL-汇编语言
SL’-汇编语言,CL-程序语言
CL’-修改过的程序语言
步骤110-与开发人员取得联系
步骤120-询问并取得相关信息
步骤130-设计测试方法
步骤140-执行
步骤150-是否有问题产生?
步骤160-运用于测试程序
步骤200-自BIOS中取得机器语言并转换为汇编语言
步骤220-取得方法指令并找出其具体实施的汇编语言
步骤240-将汇编语言转换成程序语言
步骤260-修改程序语言
步骤300-在ACPI BIOS中取得AML并转换为ASL
步骤320-自ASL中取得方法指令并找出其具体实施的ASL
步骤340-将ASL转换成程序语言
步骤360-修改程序语言
步骤402-查找“起始关键词”
步骤404-取得AML
步骤406-查找“关键词”
步骤408-取得AML
步骤410-解析AML
步骤412-转换为ASL
步骤502-查找“起始关键词”
步骤503-是否找到?
步骤504-取得AML
步骤506-查找“关键词”
步骤507-是否找到?
步骤508-取得AML
步骤510-解析AML
步骤512-转换为ASL
步骤622-在ASL中查找“方法指令”
步骤623-是否找到?
步骤624-取得方法指令并转回AML
步骤626-查找以AML作为的“关键词”
步骤628-取得AML
步骤630-解析AML
步骤632-转换为ASL
步骤762-在ASL中查找“标识符”
步骤764-取得标识符语句以及范畴语句
步骤766-解析
步骤768-取得系统保护代码
步骤770-修改程序语言
步骤802-查找“起始关键词”
步骤804-取得AML
步骤806-查找“关键词A,B,C”
步骤808-取得AML
步骤810-解析AML
步骤812-转为ASL
具体实施例方式
参照图2,本实施例,步骤200,首先读取BIOS中相关电池信息的机器语言,并将取得的机器语言转换为相对应的汇编语言;步骤220,在相应的汇编语言中取得方法指令,并找出方法指令具体实现的汇编语言;步骤240,根据汇编语言转换成程序语言;步骤260,根据汇编语言中的系统保护代码修改程序语言。
其中,BIOS内建于计算机中,用以控制输出、输入(键盘、屏幕及软硬盘等装置)及各项基本功能(开机、配备设定及自我检查等)的系统。
然而,一台便携式电子装置有时可支持多个电池,因此即可自BIOS取得多组相应电池信息的机器语言,例如目前一台笔记本计算机最多可支持四个电池,此时,即可自BIOS取得四组相应电池信息的机器语言。
在此,将本发明应用于取得笔记本计算机的电池信息为例,参照图3,步骤300,首先从先进结构电源接口标准(Advanced Configuration and PowerInterface;简称ACPI)BIOS中取得相应电池的ACPI机器语言(ACPI MachineLanguage;简称AML),将取得的AML转换为相对应的ACPI原始语言(ACPISource Language;简称ASL);步骤320,自转换的ASL中取得代表电池相关信息的控制方法的方法指令,并找出具体实现步骤所对应的ASL;步骤340,将ASL转换为相应的通用程序语言,例如C++;步骤360,以及在ASL中找出相应电池的系统保护代码,并根据系统保护代码修改程序语言,用以避免因系统指令冲突而造成死机等问题产生。
其中,此AML为提供给笔记本计算机的操作系统的一二进制低级语言,因此,即先根据ACPI对于操作系统上各种原件的定义分析出代表电池相关信息的二进制ACPI机器语言。
请参照图4,在步骤300中一实施方式包括下列步骤步骤402,在ACPIBIOS中查找代表电池的“起始关键词”;步骤404,根据起始关键词而取得代表电池的AML;步骤406,根据取得的AML查找代表电池各项信息的“关键词”;步骤408,根据关键词而取得代表电池各项信息的AML;步骤410,解析取得的AML,以得第一解析结果;步骤412,根据第一解析结果而将取得的AML转换成“相应的ACPI原始语言”。
另外,参照图5,本实施例在步骤300中,其另一实施方式包括下列步骤步骤502,在ACPI BIOS中查找代表电池的“起始关键词”;步骤504,根据起始关键词而取得代表电池的AML;步骤506,根据取得的AML查找代表电池各项信息的“关键词”;步骤508,根据关键词而取得代表电池各项信息的AML;步骤510,解析取得的AML,以得第一解析结果;步骤512,根据第一解析结果而将取得的AML转换成“相应的ACPI原始语言”;反复执行上述步骤506至步骤512,直至查找不到代表电池各项信息的“关键词”;以及反复执行上述步骤502至步骤512,直至查找不到代表电池的“起始关键词”。
简单来说由于此关键词“41 DO OC OA”是电池用以找到电池的对象,因此从ACPI BIOS中查找起始关键词“41 DO OC OA”,再通过此起始关键词的AML查找其它代表电池各项信息的“关键词”,然而,取得的AML是由多组字节所组成,并且各个位均有其代表的意义(bit),因此需根据其代表的意义进行取得AML的解析,最后,再根据解析的结果转换成对应的ASL,即将“41DO OC OA”转换成“PNPOCOA”。
其中,代表电池各项信息的AML也就是关键词组合。然而,由于一台笔记本计算机中可能不只具有一电池,所以通常会得到几组关键词组合,每一组都代表一电池的各项信息。目前,有些笔记本计算机最多可支持四块电池,因此,从其中最多可取得四组关键词组合。
并且,每一组关键词组合,是由多个代表电池相关名称及相关控制方法的对象(object)所组成,例如可用于找到电池的标识(Hardware ID)、此电池的索引号(unique persistent ID)、电池的描述、用以描述电池的普通状态的对象、用以表示电池的静态信息、用以表示电池的当前状态、用以表示设置电池的失误点(也就是当电池电量达一设定值时,产生一系统控制中断(System Control Interrupt;简称SCI)信号以通知操作系统)、及用以表示电池的供电设备的指针列表等对象,而各个对象有其代表的关键词。另外,有些对象在一些机型中并不会设置,例如用以表示设置电池的失误点的对象在某些厂商机型中并未定义。
在关键词中第一个字节是操作码,操作码是信息格式的起始关键词,即不同的操作码对应不同的信息格式,也就是用以区别其是代表电池相关名称的对象还是代表电池相关控制方法的对象。举例来说,在关键词中,其开头的第一字节为“14”,此代表的ASL操作码为“方法”,即解析表示“MethodOp”。接在操作码后的第二字节“XX”是代表“封包引导字节(Package LeadByte)”,用以标识此对象描述部分的字节的长度。然后,由第三字节开始是代表“方法(Method)”的两个参数,第一参数是关键词的“对象名称字符串”,至此为关键词部分。在关键词之后,是“对象”的第二个参数,其具有一个字节,其中,每一个位表示如下位0-2代表“参数个数(0-7)”,位3代表“连载旗帜(SerializeFlag)”,值“0”表示“不连载(NotSerialized)”,值“1”表示”连载(Serialized)”,位4-7代表“参数标识(SyncLevel(0x00-0x0f))”。参数描述的后面即是此方法的具体实现步骤。实现部分通常只是列出返回的相关对象的名称字符串。如果此对象有参数,参数前会有参数标识0x0a、0x0b、0x0c、0x0e、0x0d分别表示参数的数据类型为byte、WORD、DWORD、QWORD、String。
其中,电池的索引号即为每个电池特有的识别码;静态信息即表示电池的模块数量、产品序列号、设计电压等信息;当前状态即为电池的动态信息,如此电池目前是为充电还是放电的状态以及此电池目前的剩余电池容量等信息;设置电池的失误点也就是当电池电量达一设定值时,产生一系统控制中断信号以通知操作系统,通过调控此方法可以实现电池的充放电控制,如果剩余电池电量低于最后一次的设定值则开始充电,而当电池充电至电量上升到此设定值时,将会向操作系统发出通知,由操作系统完成控制动作如停止充电,同样地,如果剩余电量高于最后一次设定值时则开始放电,而当电池放电至电量下降到此设定值时,将通知操作系统,由操作系统完成相应动作,如发出警告等动作。
其中,参照图6,在步骤320中包括下列步骤步骤622,查找在ASL中的方法指令,其中方法指令是代表相应电池的控制方法;步骤624,取得方法指令并将其转换回相应的AML,以作为一关键词;步骤626,查找关键词;步骤628,根据关键词而取得方法指令的具体实施的AML;步骤630,解析取得的AML,以得第二解析结果;步骤632,根据第二解析结果而将取得的AML转换成相应的ASL;以及重复进行上述步骤622至步骤632,以取得完整的具体实施步骤的AML。
其中,在此所取得的AML为十六进制的记忆信息。
另外,可通过标识符“OperationRegion”查找取得电池设备各个方法的实现步骤,以得相关电池的系统保护代码。
然而,一般电池属于系统管理总线功能(SMBus)的设备,通过位于嵌入式控制器(Embedded Controller)内部的SMBus主控制器(SMBus HostController;SMB HC)来实现电池的控制。
并且,通常在得到的ASL中搜索标识符“OperationRegion”可得一标识符语句,此语句的第二个参数则标明实现步骤。此语句的基本格式为OperationRegion(RegionName(),RegionSpace,Offset,Length)。
其中,RegionName()为操作区域名称;RegionSpace为操作区域空间,也就是实现的途径;Offset为相对操作区域空间基址偏移量,为一整数;以及Length为操作区域长度,为一整数。
举例来说,在ASL中搜索“OperationRegion”可以得到下列语句OperationRegion(COFC(Path\_SB_.C001.C002.C003.COFC),EmbeddedControl,0x00,0Xff)。根据语句基本格式可以解释为操作区域“COFC”属于SMBus设备,位于Embedded Controller区域空间访问,EmbeddedController区域占用256个字节即0x00~0xFF。
紧跟在标识符语句之后的是范畴(Field)语句。此语句是用以具体描述对应的操作区域,即说明一系列的已命名的数据对象的值以及排列次序。其基本格式为Field(RegionName,AccessType,LockRule,UpdateRule){FieldUnitList}。
其中RegionName代表操作区域名称,即标识符语句的操作区域名称;AccessType代表访问类型;LockRule代表加锁规则;UpdateRule代表更新规则;以及FieldUnitList代表范畴单元列表。
举例来说,紧跟在上述的标识符语句之后有一范畴语句如下
Field(COFC,ByteAcc,NoLock,Preserve)
{
0ffset(0x80),
Offset(0x81),
……
C106,4,
……
}
根据语句基本格式可以解释为区域对象名称“COFC”,“ByteAcc”表示访问方式为位组,“NoLock”表示访问域内对象时无全局锁(Global Lock),“Preserve”预留,以及“C106”位于对象“C11D”所在区域偏移0x84个字节后四位(即0~7中的4~7)。
在此,通过分析标识符语句中的对象的LockRule参数的描述以确定是否有必要在读取电池状态时获得“全局锁”。此“全局锁”用于防止在获取电池信息时因指令冲突导致死机等情况的发生,即“全局锁”可以用来保护Embedded Controler接口。换句话说,在某一个时刻,操作系统电源管理(Operation System Power Management;简称OSPM)环境和外部控制器环境(如SMI)同步访问共享硬件资源时,然而,此锁(Lock)只能由OSPM或其它固件独占,因此,当锁的所有权被申请时,也就是其已被其它设备占用时,在此情况下,其它申请环境则先退出并且等待锁的所有权释放的信号发出。
因此,参照图7,在步骤360中包括下列步骤步骤762,在ASL中查找一标识符;步骤764,取得一标识符语句以及一范畴语句;步骤766,解析取得的标识符语句及范畴语句,以得第三解析结果;步骤768,根据第三解析结果而取得的系统保护代码;步骤770,以及根据取得的系统保护代码修改程序语言。
其中,标识符语句具有操作区域名称、操作区域空间、相对操作区域空间基址偏移量,以及操作区域长度四个参数。
而范畴语句是跟随在标识符语句之后,用以具体描述对应的操作区域,其具有操作区域名称、访问类型、加锁规则、更新规则等四个参数。另外,范畴语句还包括范畴单元列表。
将本发明应用于取得HP系列笔记本计算机的Aspen机型ACPI BIOS中相应电池的机器语言进而得一测试程序时。
参照图8,首先,步骤802,自取得的机器语言中查找起始关键词(41 DOOC OA),步骤804,以得到可用于找到电池的标识;步骤806,向前查找一关键词A(5B 82 XX),步骤808,以得到电池的描述;步骤806,再向后查找一关键词B(14 XX),步骤808,以得到方法(用以表示电池的普通状态)的实现;步骤806,向后继续查找关键词B(14 XX),步骤808,以得到用以表示电池的当前状态的实现方法;步骤806,向后继续查找关键词C(14 XX),步骤808,以得到用以表示设置电池的失误点;步骤806,最后向后查找一关键词C(12 XX),步骤808,以得到对象(用以表示电池的供电设备的指针列表)的实现。
步骤804、808,通过上述关键词查找可得关键词组合,如图9中所示的实线框部分,步骤810,此关键词组合可如图10进行解析,图中的长虚线框代表ACPI关键词,而短虚线框表示变量数值或是对象名称,步骤812,进而得对应的ASL(步骤812)如下
  Device(C149(Path\_SB_.C149))  {  Name(_HID(Path\_SB_.C149._HID),EisaId(″PNPOCOA″))  Name(_UID(Path\_SB_.C149._UID),0x01)  Method(_STA(Path\_SB_.C149._STA),0,NotSerialized)<!-- SIPO <DP n="12"> --><dp n="d12"/>  {  Return(\_SB.C001.C002.C003.C13D(0x01))   }   Method(_BIF(Path\_SB_.C149._BIF),0,NotSerialized)   {  Return(C13F(0x00))   }   Method(_BST(Path\_SB_.C149._BST),0,NotSerialized)   {  Return(C143(0x00))   }   Name(_PCL(Path\_SB_.C149._PCL),Package(0x01)   {  \_SB   })  }
之后,再根据各个方法的关键词中找出所有方法指令的具体实现步骤。
由于查找每一方法指令的具体实现步骤均相仿,在此仅以上例中的一方法指令(对象一用以表示电池的普通状态的实现步骤)的具体实现步骤查找方法进行详述。
用以表示电池的普通状态的方法对象所对应的ASL如下
Method(_STA(Path\_SB_.C149._STA),0,NotSerialized)
{
Return(\_SB.C001.C002.C003.C13D(0x01))
}
将其转换回AML,可得相应方法对象的一关键词“14 XX 43 31 33 44”,查找此关键词可得图11的内存信息,图中的实线框表示具体实施的十六进制机器语言,再根据图11进行解析,图中的长虚线框代表ACPI关键词而短虚线框表示变量数值或是对象名称,从而得对应的ASL如下
Method(C13D(Path\_SB_.C001.C002.C003.C13D),1,Serialized)
{
C13C(0x01)
Store(
,Local0)
Store(0x0F,Local1)
If(And(Local0,Arg0))
{
Store(0xlF,Local1)
}
Return(Local1)
}
其中,可根据同样方法得到方法“C0F8”所对应的ASL如下
C0F8(Path\_SB_.C001.C002.C003.C0F8),0,Serialized)
{
Acquire(C13A,0xFFFF)
If(And(C133,0x02))
{
And(C133,0x05,C133)
Release(C13A)
Acquire(C0F3,0xFFFF)
If(C0F5)
{
Store(
C135)
}
Release(C0F3)
}
Else
{
Release(C13A)
}
Return(C135)
}
其中,可再根据同样方法得到方法“C106”所对应的ASL如下
OperationRegion(C0FC(Path\_SB_.C001.C002.C003.C0FC),
EmbeddedControl,0x00,0xFF)
Field(C0FC,ByteAcc,NoLock,Preserve)
{
Offset(0x80),
Offset(0x81),
,4,
C0FD,4,
,1,
C0FE,1,
,1,
,1,
,1,
,1,
C0FF,1,
C100,1,
,1,
,1,
,1,
,1,
C101,1,
C102,1,
C103,1,
C104,1,
,1,
,1,
C105,1,
4,
……
}
将解析关键词所获取的电池相关参数及控制方法对应的ASL,编制出相应C++代码。根据上列结果转换成相应的C++程序语言代码,转换方式如下表
  int BatteryStatus(0);  {   while(C13A)Sleep(0xFFFF);   C13A=TRUE;   if(C133 &amp; 0x02)   {   C133&amp;=0x05;   C13A=FALSE;   while(C0F3)Sleep(0xFFFF);   C0F3=TRUE;   if(C0F5)   {   C135=C106;   }   C0F3=FALSE;   }   esle   {   C13A=FALSE;   }   return C135;  }
其中,C13A、C133、C0F5和C135为全局变量,即互斥体标识对象,也就是在同一时刻时系统只能有一个此对象的拥有者。
上述的互斥体变量判断代码即为系统保护代码,暂时忽略后的C++代码为
int BatteryStatus()
{
outportb(0x66,0x84);
char cVar=inportb(0x62)& 0x0f;
return(int)cVar;
}
其中,Embedded Controller端口值即0x66、0x62,同样可通过上述的找出关键词相应的具体实现步骤获取,因此在此不再重复说明。
虽然上面只详述电池的一种方法对象的C++程序语言的获取过程,不过由于其它方法对象的C++程序语言的获取过程与此方法类似,因此只需采用相同的方式即可以得到全部方法的C++程序语言,从而可取得全面性的电池信息。
综上所述,上述的方法可通过一电池信息的取得模块来执行。参照图13,为为本发明一实施例的电池信息的取得模块10,应用于一便携式电子装置中,以取得一个以上电池的电池信息,包括一第一转换模块20;一比较模块30;一第二转换模块40;以及一修改模块50。
其中,第一转换模块20从便携式电子装置的BIOS 12中取得相应电池的机器语言ML,并将取得的机器语言ML转换成相应的汇编语言SL。比较模块30从来自第一转换模块20的汇编语言SL中的取得方法指令,并找出此些方法指令具体实现的汇编语言,然后将所有的汇编语言SL’输出。第二转换模块40,将来自比较模块30的汇编语言SL’编制成程序语言CL。修改模块50,自汇编语言SL’中取得系统保护代码,并根据系统保护代码修改程序语言CL。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明权利要求的保护范围。
权利要求
1、一种电池信息的取得方法,应用于一便携式电子装置中,以取得一个以上电池的电池信息,其中,该便携式电子装置中包含一BIOS,其特征在于,包括下列步骤
步骤1,自该BIOS中取得相应该电池的多个机器语言,并将该机器语言转换成相应的多个汇编语言,其中该机器语言内建于该便携式电子装置的—基本输入/输出控制系统中;
步骤2,在该相应的汇编语言中取得一个以上的方法指令,并找出该方法指令具体实现的多个汇编语言;
步骤3,将该汇编语言转换成多个程序语言;以及
步骤4,根据该汇编语言中的一个以上系统保护代码修改该程序语言。
2、根据权利要求1所述的电池信息的取得方法,其特征在于,该BIOS为一ACPI BIOS时,该机器语言为多个AML且该汇编语言为多个ASL。
3、根据权利要求1所述的电池信息的取得方法,其特征在于,该步骤1包括下列步骤
步骤5,查找代表该电池的一个以上起始关键词;
步骤6,根据该起始关键词而取得代表该电池的该机器语言;
步骤7,根据取得的该机器语言查找代表该电池各项信息的一个以上的关键词;
步骤8,根据该关键词而取得代表该电池各项信息的该机器语言;
步骤9,解析所有该取得的机器语言,以得多个第一解析结果;以及
步骤10,根据该第一解析结果将所有该取得的机器语言转换成相应的该汇编语言。
4、根据权利要求3所述的电池信息的取得方法,其特征在于,该取得的机器语言采用二进制模式。
5、根据权利要求1所述的电池信息的取得方法,其特征在于,该步骤1包括下列步骤
步骤5,查找代表该电池的一起始关键词;
步骤6,根据该起始关键词而取得代表该电池的该机器语言;
步骤7,根据取得的该机器语言查找代表该电池各项信息的一关键词;
步骤8,根据该关键词而取得代表该电池各项信息的该机器语言;
步骤9,解析所有该取得的机器语言,以得多个第一解析结果;以及
步骤10,根据该第一解析结果将所有该取得的机器语言转换成相应的该汇编语言;
步骤11,重复执行该步骤7,其中,若查找不到该关键词则执行该步骤5;
步骤12,重复该步骤6至11,直至查找不到该关键词;
步骤13,重复执行该步骤5,其中,若查找不到该起始关键词则完成该步骤1;以及
步骤14,重复该步骤2至13,直至查找不到该起始关键词。
6、根据权利要求5所述的电池信息的取得方法,其特征在于,该取得的机器语言采用二进制模式。
7、根据权利要求1所述的电池信息的取得方法,其特征在于,该步骤2包括下列步骤
步骤15,在该相应的汇编语言中查找一个以上的方法指令,其中该方法指令代表相应该电池的一个以上的控制方法;
步骤16,取得该方法指令,并将该方法指令转换回相应的多个机器语言,以作为一个以上的关键词;
步骤17,查找在步骤16中取得的该关键词;
步骤18,根据该关键词而取得该方法指令具体实施的多个机器语言;
步骤19,解析该取得的机器语言,以得多个第二解析结果;
步骤20,根据该第二解析结果将所有该取得的机器语言转换成相应的该汇编语言;
步骤21,在该步骤19所得的该相应的汇编语言中查找一个以上的方法指令,并确认是否有该方法指令存在,其中,若有则重复该步骤16;以及
步骤22,重复该步骤17至21,直至无该方法指令存在。
8、根据权利要求7所述的电池信息的取得方法,其特征在于,该步骤2中取得的该机器语言采用十六进制模式。
9、根据权利要求8所述的电池信息的取得方法,其特征在于,该十六进制的机器语言为多个内存信息。
10、根据权利要求1所述的电池信息的取得方法,其特征在于,该步骤4包括下列步骤
步骤23,在该相应的汇编语言中查找一标识符;
步骤24,根据该标识符而取得一标识符语句以及一范畴语句;
步骤25,解析取得的该标识符语句及该范畴语句,以得多个第三解析结果;
步骤26,根据该第三解析结果而找到一个以上的系统保护代码,其中该系统保护代码用以避免该程序语言所产生的指令冲突现象;以及
步骤27,根据该系统保护代码修改该程序语言。
11、根据权利要求10所述的电池信息的取得方法,其特征在于,该标识符语句包括一操作区域名称参数、一操作区域空间参数、一相对操作区域空间基址偏移量参数,以及一操作区域长度参数。
12、根据权利要求11所述的电池信息的取得方法,其特征在于,该范畴语句跟随在该标识符语句之后,用以具体描述该标识符语句的一对应的操作区域。
13、根据权利要求12所述的电池信息的取得方法,其特征在于,该范畴语句包括一操作区域名称参数、一访问类型参数、一加锁规则参数、一更新规则参数,以及一范畴单元列表。
14、根据权利要求10所述的电池信息的取得方法,其特征在于,该系统保护代码为该便携式电子装置的一个以上的全局锁。
15、根据权利要求1所述的电池信息的取得方法,其特征在于,该机器语言采用二进制模式。
16、根据权利要求1所述的电池信息的取得方法,其特征在于,该程序语言为一C++。
17、一种电池信息的取得模块,应用于一便携式电子装置中,以取得一个以上的电池的电池信息,其中,该便携式电子装置中包含一BIOS,其特征在于,包括
一第一转换模块,用以接收来自该BIOS的相应该电池的多个机器语言,并将该机器语言转换成多个汇编语言后输出;
一比较模块,连接至该第一转换模块,用以接收该第一转换模块输出的该汇编语言,并自该汇编语言中取得一个以上的方法指令,然后找出该方法指令具体实现的多个汇编语言后输出所有的该汇编语言;
一第二转换模块,连接至该比较模块,用以接收该比较模块输出的该汇编语言,并将该汇编语言转换成多个程序语言;以及
一修改模块,连接至该第二转换模块,用以根据该汇编语言中的一个以上的系统保护代码修改该程序语言。
全文摘要
本发明涉及一种电池信息的取得方法,应用于一便携式电子装置中,以取得一个以上电池的电池信息,其中,该便携式电子装置中包含一BIOS,包括下列步骤自该BIOS中取得相应该电池的多个机器语言,并将该机器语言转换成相应的多个汇编语言,其中该机器语言内建于该便携式电子装置的一基本输入/输出控制系统中;在该相应的汇编语言中取得一个以上的方法指令,并找出该方法指令具体实现的多个汇编语言;将该汇编语言转换成多个程序语言;以及根据该汇编语言中的一个以上系统保护代码修改该程序语言。本发明应用于便携式电子装置,可取得其电池信息,从而解决现有技术所存在的诸多限制性问题与缺点。
文档编号G06F9/445GK1763724SQ20041008379
公开日2006年4月26日 申请日期2004年10月22日 优先权日2004年10月22日
发明者宋建福, 刘文涵, 刘萍, 胡幸, 刘一波 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1