[发明专利]一种获取AHCI基地址寄存器值的方法有效
申请号: | 201911196214.X | 申请日: | 2019-11-29 |
公开(公告)号: | CN110928815B | 公开(公告)日: | 2023-05-05 |
发明(设计)人: | 梁效宁;董超;许超明;林华彦 | 申请(专利权)人: | 四川效率源科技有限责任公司 |
主分类号: | G06F13/16 | 分类号: | G06F13/16 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 641000 四川省成都市中国(四川)自由贸易*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 获取 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。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川效率源科技有限责任公司,未经四川效率源科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911196214.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用于海上发电装置的单向阀
- 下一篇:一种搅拌钻头