首页 / 专利库 / 电脑零配件 / 数据总线 / PCI总线 / 一种获取AHCI基地址寄存器值的方法

一种获取AHCI基地址寄存器值的方法

阅读:56发布:2020-05-11

专利汇可以提供一种获取AHCI基地址寄存器值的方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种获取AHCI基地址寄存器值的方法,其特征在于包括以下步骤:S100:枚举 PCI总线 的各个PCI设备并获取各个PCI设备的总线键值、设备键值及功能键值;S200:根据AHCI分类码的偏移地址、当前PCI设备的总线键值、设备键值及功能键值,计算输入值并向CPU输入端口输入当前输入值;S300:根据当前输入值获取CPU输出端口的当前输出值并判断当前输出值是否等于AHCI分类码,如果是,表示当前PCI设备为AHCI 控制器 ,执行步骤S500,否则,执行步骤S400;S400:获取下一PCI设备的总线键值、设备键值及功能键值,执行步骤S200;S500:根据基地址寄存器的偏移地址、所述步骤S200中当前PCI设备的总线键值、设备键值及功能键值,计算并获取AHCI基地址寄存器值。,下面是一种获取AHCI基地址寄存器值的方法专利的具体信息内容。

1.一种获取AHCI基地址寄存器值的方法,其特征在于包括以下步骤:
S100:枚举PCI总线的各个PCI设备并获取各个PCI设备的总线键值、设备键值及功能键值;
S200:根据AHCI分类码的偏移地址、当前PCI设备的总线键值、设备键值及功能键值,计算输入值并向CPU输入端口输入当前输入值;
S300:根据当前输入值获取CPU输出端口的当前输出值并判断当前输出值是否等于AHCI分类码,如果是,表示当前PCI设备为AHCI控制器,执行步骤S500,否则,执行步骤S400;
S400:获取下一PCI设备的总线键值、设备键值及功能键值,执行步骤S200;
S500:根据基地址寄存器的偏移地址、所述步骤S200中当前PCI设备的总线键值、设备键值及功能键值,计算并获取AHCI基地址寄存器值。
2.根据权利要求1所述的一种获取AHCI基地址寄存器值的方法,其特征在于,所述步骤S200包括以下步骤:
S201:将输入值赋初值为0x80000000;
S202:输入值=输入值+当前总线键值,其中的+代表加法运算符;
S203:输入值=输入值|0x8000,其中的|代表按位或运算符;
S204:输入值=输入值左移0x10位;
S205:当前设备键值=当前设备键值左移0x03位;
S206:输入值=输入值+(当前设备键值|当前功能键值)*0x100,其中的+代表加法运算符,|代表按位或运算符,*代表乘法运算符;
S207:输入值=输入值+(所述AHCI分类码的偏移地址&0xFC),其中的+代表加法运算符,&代表按位与运算符;
S208:向CPU输入端口输入当前输入值。
3.根据权利要求1所述的一种获取AHCI基地址寄存器值的方法,其特征在于,所述步骤S500包括以下步骤:
S501:读取所述步骤S200中当前PCI设备的总线键值、设备键值及功能键值;
S502:将输入值赋初值为0x80000000;
S503:输入值=输入值+当前总线键值,其中的+代表加法运算符;
S504:输入值=输入值|0x8000,其中的|代表按位或运算符;
S505:输入值=输入值左移0x10位;
S506:当前设备键值=当前设备键值左移0x03位;
S507:输入值=输入值+(当前设备键值|当前功能键值)*0x100,其中的+代表加法运算符,|代表按位或运算符,*代表乘法运算符;
S508:输入值=输入值+(基地址寄存器的偏移地址&0xFC),其中的+代表按加法运算符,&代表按位与运算符;
S509:向CPU输入端口输入当前输入值,获取CPU输出端口的当前输出值作为所述AHCI基地址寄存器值。
4.根据权利要求1的一种获取AHCI基地址寄存器值的方法,其特征在于,所述AHCI分类码为0x106。
5.根据权利要求1所述的一种获取AHCI基地址寄存器值的方法,其特征在于,所述AHCI分类码的偏移地址为0x08。
6.根据权利要求1所述的一种获取AHCI基地址寄存器值的方法,其特征在于,所述CPU输入端口的端口号为0xCF8,所述CPU输出端口的端口号为0xCFC。
7.根据权利要求1所述的一种获取AHCI基地址寄存器值的方法,其特征在于,所述基地址寄存器的偏移地址为0x24。

说明书全文

一种获取AHCI基地址寄存器值的方法

技术领域

[0001] 本发明属于数据恢复与硬盘固件安全技术领域,涉及一种获取AHCI基地址寄存器值的方法。

背景技术

[0002] 在硬盘存储领域上,如何从底层实现对硬盘进行控制及数据恢复,现有技术中还没有涉及到类似的技术方案。随着硬盘技术的不断发展及硬盘使用量的扩大,如何更好的控制、监控硬盘及恢复硬盘数据都变得越发的重要。经研究发现:在硬盘AHCI的工作模式下,只有获取了PCI配置空间中AHCI基地址寄存器(AHCI Base Address Register)的值后,才可以进行控制硬盘、恢复硬盘数据等操作。

发明内容

[0003] 针对现有技术的不足,本发明提供了一种获取AHCI基地址寄存器值的方法,根据AHCI分类码的偏移地址及各键值,计算输入值并获取CPU输出端口的输出值,从而计算并获取AHCI基地址寄存器值。本发明申请包括以下步骤:
[0004] S100:枚举PCI总线的各个PCI设备并获取各个PCI设备的总线键值、设备键值及功能键值;
[0005] S200:根据AHCI分类码的偏移地址、当前PCI设备的总线键值、设备键值及功能键值,计算输入值并向CPU输入端口输入当前输入值;
[0006] S300:根据当前输入值获取CPU输出端口的当前输出值并判断当前输出值是否等于AHCI分类码,如果是,表示当前PCI设备为AHCI控制器,执行步骤S500,否则,执行步骤S400;
[0007] S400:获取下一PCI设备的总线键值、设备键值及功能键值,执行步骤S200;
[0008] S500:根据基地址寄存器的偏移地址、所述步骤S200中当前PCI设备的总线键值、设备键值及功能键值,计算并获取AHCI基地址寄存器值。
[0009] 优选地,所述步骤S200包括以下步骤:
[0010] S201:将输入值赋初值为0x80000000;
[0011] S202:输入值=输入值+当前总线键值,其中的+代表加法运算符;
[0012] S203:输入值=输入值|0x8000,其中的|代表按位或运算符;
[0013] S204:输入值=输入值左移0x10位;
[0014] S205:当前设备键值=当前设备键值左移0x03位;
[0015] S206:输入值=输入值+(当前设备键值|当前功能键值)*0x100,其中的+代表加法运算符,|代表按位或运算符,*代表乘法运算符;
[0016] S207:输入值=输入值+(所述AHCI分类码的偏移地址&0xFC),其中的+代表加法运算符,&代表按位与运算符;
[0017] S208:向CPU输入端口输入当前输入值。
[0018] 优选地,所述步骤S500包括以下步骤:
[0019] S501:读取所述步骤S200中当前PCI设备的总线键值、设备键值及功能键值;
[0020] S502:将输入值赋初值为0x80000000;
[0021] S503:输入值=输入值+当前总线键值,其中的+代表加法运算符;
[0022] S504:输入值=输入值|0x8000,其中的|代表按位或运算符;
[0023] S505:输入值=输入值左移0x10位;
[0024] S506:当前设备键值=当前设备键值左移0x03位;
[0025] S507:输入值=输入值+(当前设备键值|当前功能键值)*0x100,其中的+代表加法运算符,|代表按位或运算符,*代表乘法运算符;
[0026] S508:输入值=输入值+(基地址寄存器的偏移地址&0xFC),其中的+代表按加法运算符,&代表按位与运算符;
[0027] S509:向CPU输入端口输入当前输入值,获取CPU输出端口的当前输出值作为所述AHCI基地址寄存器值。
[0028] 优选地,所述AHCI分类码为0x106。
[0029] 优选地,所述AHCI分类码的偏移地址为0x08。
[0030] 优选地,所述CPU输入端口的端口号为0xCF8,所述CPU输出端口的端口号为0xCFC。
[0031] 优选地,所述基地址寄存器的偏移地址为0x24。
[0032] 本发明具有以下有益效果是:解决了现有技术中尚无一种获取AHCI基地址寄存器值的方法的技术问题。附图说明
[0033] 图1为本发明所提供的方法的总流程图
[0034] 图2为本发明的一个实施例中计算AHCI分类码的具体流程图;
[0035] 图3为本发明的一个实施例中计算并获取AHCI基地址寄存器值的具体流程图。

具体实施方式

[0036] 图1示出了本发明所提供的方法的总流程图。如图1所示,包括以下步骤:
[0037] S100:枚举PCI总线的各个PCI设备并获取各个PCI设备的总线键值、设备键值及功能键值。现有技术中,枚举PCI总线的各个PCI设备并获取各个PCI设备的总线键值、设备键值及功能键值的方法较多,不再赘述。下述为本发明实施例中枚举PCI总线的各个PCI设备:
[0038] Bus 02,Device 00,Function 00-VMware Inc.UHCI USB Controller[0039] Bus 02,Device 01,Function 00-Intel Corporation Ethernet Controller[0040] Bus 02,Device 02,Function 00-VMware InC.HD Audio Device[0041] Bus 02,Device 03,Function 00-VMware Inc.EHCl USB Controller[0042] Bus 02,Device 05,Function 00-VMware Inc.AHCl Controller[0043] Bus 03,Device 00,Function 00-LSI Logic 53C810 Devlce Mass Storage Controller
[0044] 从上述枚举PCI的总线的各个PCI设备中可以获取AHCI对应的总线(bus)键值为0x2、设备(device)键值为0x5,功能(function)键值为0x00。
[0045] S200:根据AHCI分类码的偏移地址、当前PCI设备的总线键值、设备键值及功能键值,计算输入值并向CPU输入端口输入当前输入值。
[0046] 图2示出了本发明的一个实施例中计算AHCI分类码的具体流程图。如图2所示,包括以下步骤:
[0047] S201:将输入值赋初值为0x80000000;
[0048] S202:输入值=输入值+当前总线键值,其中的+代表加法运算符;即,输入值=0x80000000+0x2=0x80000002;
[0049] S203:输入值=输入值|0x8000,其中的|代表按位或运算符;即,输入值=0x80000002|0x8000=0x80008002;
[0050] S204:输入值=输入值左移0x10位;即,输入值=0x80008002<<0x10=0x80020000;
[0051] S205:当前设备键值=当前设备键值左移0x03位;即,当前设备键值=(0x5<<0x3);
[0052] S206:输入值=输入值+(当前设备键值|当前功能键值)*0x100,其中的+代表加法运算符,|代表按位或运算符,*代表乘法运算符;即,输入值=0x80020000+((0x5<<0x3)|0x00)*0x100==0x80022800;
[0053] S207:输入值=输入值+(AHCI分类码的偏移地址&0xFC),其中的+代表加法运算符,&代表按位与运算符;即,输入值=0x80022800+(0x8&0xFC)=0x80022808;
[0054] S208:向CPU输入端口输入当前输入值0x80022808。
[0055] S300:根据当前输入值获取CPU输出端口的当前输出值并判断当前输出值是否等于AHCI分类码,如果是,表示当前PCI设备为AHCI控制器,执行步骤S500,否则,执行步骤S400;
[0056] 本发明实施例中,根据当前输入值0x80022808,获取CPU输出端口的当前输出值为AHCI分类码0x106,即,表示当前PCI设备为AHCI控制器,执行步骤S500;
[0057] S400:获取下一PCI设备的总线键值、设备键值及功能键值,执行步骤S200;
[0058] S500:根据基地址寄存器的偏移地址、步骤S200中当前PCI设备的总线键值、设备键值及功能键值,计算并获取AHCI基地址寄存器值。
[0059] 图3示出了本发明的一个实施例中计算并获取AHCI基地址寄存器值的具体流程图。如图3所示,包括以下步骤:
[0060] S501:读取步骤S200中当前PCI设备的总线键值、设备键值及功能键值;
[0061] S502:将输入值赋初值为0x80000000;
[0062] S503:输入值=输入值+当前总线键值,其中的+代表加法运算符;
[0063] S504:输入值=输入值|0x8000,其中的|代表按位或运算符;
[0064] S505:输入值=输入值左移0x10位;
[0065] S506:当前设备键值=当前设备键值左移0x03位;
[0066] S507:输入值=输入值+(当前设备键值|当前功能键值)*0x100,其中的+代表加法运算符,|代表按位或运算符,*代表乘法运算符;
[0067] S508:输入值=输入值+(基地址寄存器的偏移地址&0xFC),其中的+代表按加法运算符,&代表按位与运算符;
[0068] 步骤S502至S508的运算方法与步骤S201至S207同,不再赘述。
[0069] S509:向CPU输入端口输入当前输入值,获取CPU输出端口的当前输出值作为AHCI基地址寄存器值。
[0070] 通过本发明提供的方法,解决了现有技术中尚无一种获取AHCI基地址寄存器值的方法的技术问题。
[0071] 应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈