首页 / 专利库 / 电脑零配件 / 固件 / 基本输入输出系统 / 计算机设备、程序写入方法及程序读取方法

计算机设备、程序写入方法及程序读取方法

阅读:1036发布:2020-05-13

专利汇可以提供计算机设备、程序写入方法及程序读取方法专利检索,专利查询,专利分析的服务。并且本 申请 公开了一种计算机设备、程序写入方法及程序读取方法,属于计算机技术领域。该计算机设备包括: 中央处理器 CPU、 基本输入输出系统 BIOS芯片、存储芯片和 可编程逻辑器件 PLD,CPU通过PLD与BIOS芯片相连,存储芯片与PLD相连;PLD用于接收CPU发送的BIOS程序;读取存储芯片中存储的字符串;根据字符串对BIOS程序进行转换以获得转换后的BIOS程序,将转换后的BIOS程序存储至BIOS芯片中,其中,转换后的BIOS程序不同于转换前的BIOS程序,解决了将原始的BIOS程序存储在BIOS芯片中,该原始的BIOS程序的安全性较低的问题,达到了提高BIOS芯片中的BIOS程序的安全性的效果。,下面是计算机设备、程序写入方法及程序读取方法专利的具体信息内容。

1.一种计算机设备,其特征在于,所述计算机设备包括:中央处理器CPU、基本输入输出系统BIOS芯片、存储芯片和可编程逻辑器件PLD,所述CPU通过所述PLD与所述BIOS芯片相连,所述存储芯片与所述PLD相连;
所述PLD,用于接收所述CPU发送的BIOS程序,所述BIOS程序用于供所述CPU执行以完成所述计算机设备的初始化;
所述PLD,还用于读取所述存储芯片中存储的字符串;
所述PLD,还用于根据所述字符串对所述BIOS程序进行转换以获得转换后的BIOS程序,将所述转换后的BIOS程序存储至所述BIOS芯片中,其中,所述转换后的BIOS程序不同于转换前的所述BIOS程序。
2.根据权利要求1所述的计算机设备,其特征在于,所述PLD将所述转换后的BIOS程序存储至所述BIOS芯片中,所述PLD具体用于:
获取所述CPU发送的所述BIOS程序在所述BIOS芯片中的预期存储地址;
将所述转换后的BIOS程序存储至所述预期存储地址。
3.根据权利要求1所述的计算机设备,其特征在于,所述PLD将所述转换后的BIOS程序存储至所述BIOS芯片中,所述PLD具体用于:
获取所述CPU发送的所述BIOS程序在所述BIOS芯片中的预期存储地址;
根据所述字符串对所述预期存储地址进行转换,得到转换后的存储地址;
将所述转换后的BIOS程序存储至所述转换后的存储地址,其中,所述转换后的存储地址不同于所述预期存储地址。
4.根据权利要求1所述的计算机设备,其特征在于,所述PLD根据所述字符串对所述BIOS程序进行转换以获得转换后的BIOS程序,所述PLD具体用于:
以所述字符串为第一索引,以所述BIOS程序包括的数据为第二索引,在程序映射表中查询所述转换后的BIOS程序;
其中,所述程序映射表是二维索引表,且存储有字符串和BIOS程序包括的数据对应的转换后的BIOS程序。
5.根据权利要求4所述的计算机设备,其特征在于,所述PLD以所述字符串为第一索引,以所述BIOS程序包括的数据为第二索引,在所述程序映射表中查询所述转换后的BIOS程序,所述PLD具体用于:
将所述BIOS程序划分为至少两段子程序;
从所述字符串中获取每段子程序对应的子字符串;
对于每段子程序,以所述子程序对应的子字符串为所述第一索引,以子程序包括的数据为所述第二索引,在所述程序映射表中查询转换后的子程序;
根据每段转换后的子程序确定所述转换后的BIOS程序。
6.根据权利要求3所述的计算机设备,其特征在于,所述PLD根据所述字符串对所述预期存储地址进行转换,所述PLD具体用于:
以所述字符串为第一索引,以所述预期存储地址包括的数据为第二索引,在地址映射表中查询所述转换后的存储地址;
其中,所述地址映射表是二维索引表,且存储有字符串和预期存储地址包括的数据对应的转换后的存储地址。
7.根据权利要求6所述的计算机设备,其特征在于,所述PLD以所述字符串为第一索引,以所述预期存储地址包括的数据为第二索引,在所述数据映射表中查询所述转换后的存储地址,所述PLD具体用于:
将所述预期存储地址划分为至少两段子地址;
从所述字符串中获取每段子地址对应的子字符串;
对于每段子地址,以所述子地址对应的子字符串为所述第一索引,以子地址包括的数据为所述第二索引,在所述数据映射表中查询转换后的子地址;
根据每段转换后的子地址确定所述转换后的存储地址。
8.根据权利要求1所述的计算机设备,其特征在于,所述PLD根据所述字符串对所述BIOS程序进行转换以获得转换后的BIOS程序,所述PLD具体用于:
从所述字符串中获取子字符串,所述子字符串的长度大于零,且小于等于所述字符串的长度;
对所述子字符串进行第一逻辑运算得到转换后的子字符串;利用所述转换后的子字符串对所述BIOS程序进行第二逻辑运算,得到所述转换后的BIOS程序;或者,对所述BIOS程序进行第三逻辑运算,利用所述子字符串对进行了所述第三逻辑运算的BIOS程序进行第四逻辑运算,得到所述转换后的BIOS程序;或者,
对所述子字符串进行第五逻辑运算,得到所述转换后的子字符串;对所述BIOS程序进行第六逻辑运算,利用所述转换后的子字符串对进行了所述第六逻辑运算的BIOS程序进行第七逻辑运算,得到所述转换后的BIOS程序;或者,
利用所述子字符串对所述BIOS程序进行第八逻辑运算,得到所述转换后的BIOS程序。
9.根据权利要求3所述的计算机设备,其特征在于,所述PLD根据所述字符串对所述预期存储地址进行转换,所述PLD具体用于:
从所述字符串中获取子字符串,所述子字符串的长度大于零,且小于等于所述字符串的长度;
对所述子字符串进行第一逻辑运算得到转换后的子字符串;利用所述转换后的子字符串对所述预期存储地址进行第二逻辑运算,得到所述转换后的存储地址;或者,对所述预期存储地址进行第三逻辑运算,利用所述子字符串对进行了所述第三逻辑运算的预期存储地址进行第四逻辑运算,得到所述转换后的存储地址;或者,对所述子字符串进行第五逻辑运算,得到所述转换后的子字符串;对所述预期存储地址进行第六逻辑运算,利用所述转换后的子字符串对进行了所述第六逻辑运算的预期存储地址进行第七逻辑运算,得到所述转换后的存储地址;或者,
利用所述子字符串对所述预期存储地址进行第八逻辑运算,得到所述转换后的存储地址。
10.一种计算机设备,其特征在于,所述计算机设备包括:中央处理器CPU、基本输入输出系统BIOS芯片、存储芯片和可编程逻辑器件PLD,所述CPU通过所述PLD与所述BIOS芯片相连,所述存储芯片与所述PLD相连;
所述PLD,用于接收所述CPU发送的BIOS程序和所述BIOS程序在所述BIOS芯片中的预期存储地址,所述BIOS程序用于供所述CPU执行以完成所述计算机设备的初始化;
所述PLD,还用于读取所述存储芯片中存储的字符串;
所述PLD,还用于根据所述字符串对所述预期存储地址进行转换以获得转换后的存储地址,其中,所述转换后的存储地址不同于所述预期存储地址;
所述PLD,还用于将所述BIOS程序存储至所述转换后的存储地址。
11.一种计算机设备,其特征在于,所述计算机设备包括:中央处理器CPU、基本输入输出系统BIOS芯片、存储芯片和可编程逻辑器件PLD,所述CPU通过所述PLD与所述BIOS芯片相连,所述存储芯片与所述PLD相连;
所述PLD,用于接收所述CPU发送的程序读取指令,所述程序读取指令用于从所述BIOS芯片中读取原始BIOS程序,所述原始BIOS程序用于供所述CPU执行以完成所述计算机设备的初始化;
所述PLD,还用于读取所述存储芯片中存储的字符串;
所述PLD,还用于从所述BIOS芯片中读取转换后的BIOS程序,并根据所述字符串对所述转换后的BIOS程序进行还原以获得还原后的BIOS程序,其中,所述转换后的BIOS程序是所述PLD根据所述字符串对所述原始BIOS程序进行转换并存储至所述BIOS芯片中的;所述转换后的BIOS程序不同于所述原始BIOS程序;
所述PLD,还用于将所述还原后的BIOS程序发送至所述CPU。
12.根据权利要求11所述的计算机设备,其特征在于,所述PLD从所述BIOS芯片中读取转换后的BIOS程序,所述PLD具体用于:
获取所述程序读取指令携带的预期存储地址;
读取存储在所述预期存储地址中的所述转换后的BIOS程序。
13.根据权利要求11所述的计算机设备,其特征在于,所述PLD从所述BIOS芯片中读取转换后的BIOS程序,所述PLD具体用于:
获取所述程序读取指令携带的预期存储地址;
根据所述字符串对所述预期存储地址进行转换,得到转换后的存储地址,其中,所述转换后的存储地址不同于所述预期存储地址;
读取存储在所述转换后的存储地址中的所述转换后的BIOS程序。
14.根据权利要求11所述的计算机设备,其特征在于,所述PLD根据所述字符串对所述转换后的BIOS程序进行还原以获得还原后的BIOS程序,所述PLD具体用于:
以所述字符串为第一索引,以所述转换后的BIOS程序包括的数据为第二索引,在程序映射表中查询所述还原后的BIOS程序;
其中,所述程序映射表是二维索引表,且存储有字符串和还原后的BIOS程序包括的数据对应的转换后的BIOS程序。
15.根据权利要求14所述的计算机设备,其特征在于,所述PLD以所述字符串为第一索引,以所述转换后的BIOS程序包括的数据为第二索引,在程序映射表中查询所述还原后的BIOS程序,所述PLD具体用于:
根据预设划分方式将所述转换后的BIOS程序划分为至少两段转换后的子程序,所述预设划分方式与所述PLD在向所述BIOS芯片写入所述BIOS程序时,将所述BIOS程序划分为至少两段子程序的划分方式相同;
从所述字符串中获取每段转换后的子程序对应的子字符串;
对于每段转换后的子程序,以所述转换后的子程序对应的子字符串为所述第一索引,以所述转换后的子程序包括的数据为所述第二索引,在所述程序映射表中查询还原后的子程序;
根据每段还原后的子程序确定所述还原后的BIOS程序。
16.根据权利要求13所述的计算机设备,其特征在于,所述PLD根据所述字符串对所述预期存储地址进行转换,所述PLD具体用于:
以所述字符串为第一索引,以所述预期存储地址包括的数据为第二索引,在地址映射表中查询所述转换后的存储地址;
其中,所述地址映射表是二维索引表,且存储有字符串和预期存储地址包括的数据对应的转换后的存储地址。
17.根据权利要求16所述的计算机设备,其特征在于,所述PLD以所述字符串为第一索引,以所述预期存储地址包括的数据为第二索引,在所述数据映射表中查询所述转换后的存储地址,所述PLD具体用于:
根据预设划分方式将所述预期存储地址划分为至少两段子地址,所述预设划分方式与所述PLD在向所述BIOS芯片写入所述BIOS程序时,将所述预期存储地址划分为至少两段子地址的划分方式相同;
从所述字符串中获取每段子地址对应的子字符串;
对于每段子地址,以所述子地址对应的子字符串为所述第一索引,以子地址包括的数据为所述第二索引,在所述地址映射表中查询转换后的子地址;
根据每段转换后的子地址确定所述转换后的存储地址。
18.根据权利要求11所述的计算机设备,其特征在于,所述PLD根据所述字符串对所述转换后的BIOS程序进行还原以获得还原后的BIOS程序,所述PLD具体用于:
从所述字符串中获取子字符串,所述子字符串的长度大于零,且小于等于所述字符串的长度;
对所述子字符串进行第一逻辑运算得到转换后的子字符串;利用所述转换后的子字符串对所述转换后的BIOS程序进行第二逻辑运算,得到所述还原后的BIOS程序;或者,对所述转换后的BIOS程序进行第三逻辑运算,利用所述子字符串对进行了所述第三逻辑运算的转换后的BIOS程序进行第四逻辑运算,得到所述还原后的BIOS程序;或者,对所述子字符串进行第五逻辑运算,得到所述转换后的子字符串;对所述转换后的BIOS程序进行第六逻辑运算,利用所述转换后的子字符串对进行了所述第六逻辑运算的转换后的BIOS程序进行第七逻辑运算,得到所述还原后的BIOS程序;或者,利用所述子字符串对所述转换后的BIOS程序进行第八逻辑运算,得到所述还原后的BIOS程序。
19.根据权利要求13所述的计算机设备,其特征在于,所述PLD根据所述字符串对所述预期存储地址进行转换,所述PLD具体用于:
从所述字符串中获取子字符串,所述子字符串的长度大于零,且小于等于所述字符串的长度;
对所述子字符串进行第一逻辑运算得到转换后的子字符串;利用所述转换后的子字符串对所述预期存储地址进行第二逻辑运算,得到所述转换后的存储地址;或者,对所述预期存储地址进行第三逻辑运算,利用所述子字符串对进行了所述第三逻辑运算的预期存储地址进行第四逻辑运算,得到所述转换后的存储地址;或者,对所述子字符串进行第五逻辑运算,得到所述转换后的子字符串;对所述预期存储地址进行第六逻辑运算,利用所述转换后的子字符串对进行了所述第六逻辑运算的预期存储地址进行第七逻辑运算,得到所述转换后的存储地址;或者,
利用所述子字符串对所述预期存储地址进行第八逻辑运算,得到所述转换后的存储地址。
20.一种计算机设备,其特征在于,所述计算机设备包括:中央处理器CPU、基本输入输出系统BIOS芯片、存储芯片和可编程逻辑器件PLD,所述CPU通过所述PLD与所述BIOS芯片相连,所述存储芯片与所述PLD相连;
所述PLD,用于接收所述CPU发送的程序读取指令,并获取所述程序读取指令携带的预期存储地址,所述程序读取指令用于从所述BIOS芯片中读取BIOS程序,所述BIOS程序用于供所述CPU执行以完成所述计算机设备的初始化;
所述PLD,还用于读取所述存储芯片中存储的字符串;
所述PLD,还用于根据所述字符串对所述预期存储地址进行转换以获得转换后的存储地址,从所述转换后的存储地址中读取所述BIOS程序,其中,所述转换后的存储地址不同于所述预期存储地址;
所述PLD,还用于将所述BIOS程序发送至所述CPU。
21.一种程序写入方法,其特征在于,所述方法包括:
计算机设备中的可编程逻辑器件PLD接收所述计算机设备中的中央处理器CPU发送的基本输入输出系统BIOS程序,所述BIOS程序用于供所述CPU执行以完成所述计算机设备的初始化;
所述PLD读取与所述PLD相连的存储芯片中存储的字符串;
所述PLD根据所述字符串对所述BIOS程序进行转换以获得转换后的BIOS程序,将所述转换后的BIOS程序存储至所述计算机设备中的BIOS芯片中,其中,所述转换后的BIOS程序不同于转换前的所述BIOS程序。
22.根据权利要求21所述的方法,其特征在于,所述PLD将所述转换后的BIOS程序存储至所述BIOS芯片中,包括:
所述PLD获取所述CPU发送的所述BIOS程序在所述BIOS芯片中的预期存储地址;
所述PLD将所述转换后的BIOS程序存储至所述预期存储地址。
23.根据权利要求21所述的方法,其特征在于,所述PLD将所述转换后的BIOS程序存储至所述BIOS芯片中,包括:
获取所述CPU发送的所述BIOS程序在所述BIOS芯片中的预期存储地址;
所述PLD根据所述字符串对所述预期存储地址进行转换,得到转换后的存储地址;
所述PLD将所述转换后的BIOS程序存储至所述转换后的存储地址,其中,所述转换后的存储地址不同于所述预期存储地址。
24.根据权利要求21所述的方法,其特征在于,所述PLD根据所述字符串对所述BIOS程序进行转换以获得转换后的BIOS程序,包括:
所述PLD以所述字符串为第一索引,以所述BIOS程序包括的数据为第二索引,在程序映射表中查询所述转换后的BIOS程序;
其中,所述程序映射表是二维索引表,且存储有字符串和BIOS程序包括的数据对应的转换后的BIOS程序。
25.根据权利要求23所述的方法,其特征在于,所述PLD根据所述字符串对所述预期存储地址进行转换,包括:
所述PLD以所述字符串为第一索引,以所述预期存储地址包括的数据为第二索引,在地址映射表中查询所述转换后的存储地址;
其中,所述地址映射表是二维索引表,且存储有字符串和预期存储地址包括的数据对应的转换后的存储地址。
26.一种程序写入方法,其特征在于,所述方法包括:
计算机设备中的可编程逻辑器件PLD接收所述计算机设备中的中央处理器CPU发送的基本输入输出系统BIOS程序和所述BIOS程序在所述BIOS芯片中的预期存储地址,所述BIOS程序用于供所述CPU执行以完成所述计算机设备的初始化;
所述PLD读取与所述PLD相连的存储芯片中存储的字符串;
所述PLD根据所述字符串对所述预期存储地址进行转换以获得转换后的存储地址,其中,所述转换后的存储地址不同于所述预期存储地址;
所述PLD将所述BIOS程序存储至所述转换后的存储地址。
27.一种程序读取方法,其特征在于,所述方法包括:
计算机设备中的可编程逻辑器件PLD接收所述计算机设备中的中央处理器CPU发送的程序读取指令,所述程序读取指令用于从所述计算机设备中的基本输入输出系统BIOS芯片中读取原始BIOS程序,所述原始BIOS程序用于供所述CPU执行以完成所述计算机设备的初始化;
所述PLD读取与所述PLD相连的存储芯片中存储的字符串;
所述PLD从所述BIOS芯片中读取转换后的BIOS程序,并根据所述字符串对所述转换后的BIOS程序进行还原以获得还原后的BIOS程序,其中,所述转换后的BIOS程序是所述PLD根据所述字符串对所述原始BIOS程序进行转换并存储至所述BIOS芯片中的;所述转换后的BIOS程序不同于所述原始BIOS程序;
所述PLD将所述还原后的BIOS程序发送至所述CPU。
28.根据权利要求27所述的方法,其特征在于,所述PLD从所述BIOS芯片中读取转换后的BIOS程序,包括:
所述PLD获取所述程序读取指令携带的预期存储地址;
所述PLD读取存储在所述预期存储地址中的所述转换后的BIOS程序。
29.根据权利要求27所述的方法,其特征在于,所述PLD从所述BIOS芯片中读取转换后的BIOS程序,包括:
所述PLD获取所述程序读取指令携带的预期存储地址;
所述PLD根据所述字符串对所述预期存储地址进行转换,得到转换后的存储地址,其中,所述转换后的存储地址不同于所述预期存储地址;
所述PLD读取存储在所述转换后的存储地址中的所述转换后的BIOS程序。
30.根据权利要求27所述的方法,其特征在于,所述PLD根据所述字符串对所述转换后的BIOS程序进行还原以获得还原后的BIOS程序,包括:
所述PLD以所述字符串为第一索引,以所述转换后的BIOS程序包括的数据为第二索引,在程序映射表中查询所述还原后的BIOS程序;
其中,所述程序映射表是二维索引表,且存储有字符串和还原后的BIOS程序包括的数据对应的转换后的BIOS程序。
31.根据权利要求29所述的方法,其特征在于,所述PLD根据所述字符串对所述预期存储地址进行转换,包括:
所述PLD以所述字符串为第一索引,以所述预期存储地址包括的数据为第二索引,在地址映射表中查询所述转换后的存储地址;
其中,所述地址映射表是二维索引表,且存储有字符串和预期存储地址包括的数据对应的转换后的存储地址。
32.一种程序读取方法,其特征在于,所述方法包括:
计算机设备中的可编程逻辑器件PLD接收所述计算机设备中的中央处理器CPU发送的程序读取指令,并获取所述程序读取指令携带的预期存储地址,所述程序读取指令用于从基本输入输出系统BIOS芯片中读取BIOS程序,所述BIOS程序用于供所述CPU执行以完成所述计算机设备的初始化;
所述PLD读取与所述PLD相连的存储芯片中存储的字符串;
所述PLD根据所述字符串对所述预期存储地址进行转换以获得转换后的存储地址,从所述转换后的存储地址中读取所述BIOS程序,其中,所述转换后的存储地址不同于所述预期存储地址;
所述PLD将所述BIOS程序发送至所述CPU。

说明书全文

计算机设备、程序写入方法及程序读取方法

技术领域

[0001] 本申请涉及计算机技术领域,特别涉及一种计算机设备、程序写入方法及程序读取方法。

背景技术

[0002] 计算机设备通常包含中央处理器(Central Processing Unit,CPU)、内存储器、外存储器、网络接口等组件。各种组件安装在主板的特定位置上,通过总线相互通信。主板通常为矩形电路板,主板上安装了组成计算机设备的主要电路系统,例如基本输入输出系统(Basic Input Output System,BIOS)芯片、I/O(Input/Output)控制芯片、指示灯插接件、扩充插槽、直流电源供电接插件等元件。BIOS芯片具有断电后存储的数据不丢失的特性,可以是只读存储器(Read-Only Memory,ROM)芯片或闪存(Flash)芯片。BIOS芯片中存储有BIOS程序。BIOS程序也被称为引导程序(bootloader),BIOS程序具体包括用于对计算机设备的基本输入输出系统进行配置的程序、开机后硬件自检程序和操作系统自启动程序。BIOS程序能够从互补式金属化物半导体(Complementary Metal-Oxide-Semiconductor,CMOS)中读取计算机设备最基本的启动信息。BIOS程序的主要功能是为计算机设备提供最底层的、最直接的硬件设置和控制。
[0003] 在现有主流的计算机体系架构下,当计算机设备上电后,CPU首先从BIOS芯片中读取BIOS程序完成计算机设备的硬件初始化过程。由于计算机设备在操作系统初始化完成之前不具备计算能,例如不能对数据进行解密,因此为了能够成功进行初始化,BIOS程序通常未经过加密地存储在BIOS芯片中。
[0004] 正是由于现有的BIOS程序未经过加密地存储在BIOS芯片中,为非法用户提供了可乘之机。例如黑客可以通过物理手段将存储有BIOS程序的Flash芯片取下,通过Flash编程器读取其中的内容,并对得到的内容进行逆向分析获知BIOS程序的功能模,然后在合适的地方植入后程序。黑客可以通过植入的后门程序在计算机设备初始化过程中获取计算机设备中的数据,并将获取的数据发送给预先通过后门程序设置的接收者,从而造成计算机设备中的数据被盗取。更为严重的是,与植入在应用程序中的一般的后门程序相比,由于BIOS芯片中的数据下电不丢失的特性,植入在BIOS程序中的后门程序长久有效。可见,现有的BIOS程序的存储方式存在安全隐患。发明内容
[0005] 为了解决BIOS芯片中存储的BIOS程序的安全性不高的问题,本申请实施例提供了一种计算机设备、程序写入方法及程序读取方法。
[0006] 第一方面,提供了一种程序写入方法,该方法包括:计算机设备中的可编程逻辑器件(Programmable Logic Device,PLD)接收计算机设备中的中央处理器(Central Processing Unit,CPU)发送的BIOS程序,该BIOS程序用于供CPU执行以完成计算机设备的初始化;然后,PLD读取与该PLD相连的存储芯片中存储的字符串;然后,PLD根据该字符串对BIOS程序进行转换以获得转换后的BIOS程序,并将该转换后的BIOS程序存储至计算机设备中的BIOS芯片中,其中,转换后的BIOS程序不同于转换前的BIOS程序。
[0007] 通过PLD根据存储芯片中存储的字符串对BIOS程序进行转换,并在得到转换后的BIOS程序后将该转换后的BIOS程序存储至BIOS芯片中,使得BIOS芯片中存储的BIOS程序是经过转换后的BIOS程序,这样,除了开发人员之外的人员无法通过获取BIOS芯片来获取到原始的BIOS程序,解决了BIOS芯片中存储原始的BIOS程序,导致该原始的BIOS程序的安全性不高的问题,达到了提高BIOS芯片中存储的BIOS程序的安全性的效果。
[0008] 可选的,PLD将转换后的BIOS程序存储至BIOS芯片中,包括:PLD获取CPU发送的BIOS程序在BIOS芯片中的预期存储地址;PLD将转换后的BIOS程序存储至预期存储地址。
[0009] 可选的,PLD将转换后的BIOS程序存储至BIOS芯片中,包括:PLD获取CPU发送的BIOS程序在所述BIOS芯片中的预期存储地址;;PLD根据字符串对预期存储地址进行转换,得到转换后的存储地址;PLD将转换后的BIOS程序存储至转换后的存储地址,其中,转换后的存储地址不同于预期存储地址。
[0010] 通过PLD根据存储芯片中的字符串对BIOS程序的预期存储地址进行转换,并在得到转换后的存储地址后将转换后的BIOS程序存储至该转换后的存储地址,使得每条转换后的BIOS程序散列地存储在BIOS芯片中,提高了非法用户获取到BIOS芯片后还原BIOS程序的难度,提高了BIOS芯片中的BIOS程序的安全性。
[0011] 可选的,PLD根据字符串对预期存储地址进行转换,得到转换后的存储地址,包括:获取BIOS芯片的位宽和存储容量;根据该位宽和存储容量确定该预期存储地址的转换位数i;根据该字符串对该预期存储地址中的最后i位进行转换,得到转换后的存储地址。其中,i为正整数。
[0012] 通过确定预期存储地址的转换位数i,并对该预期存储地址中的最后i位进行转换,与对预期存储地址的所有位进行转换相比,减少了PLD在对预期存储地址进行转换时消耗的处理资源,提高了PLD对预期存储地址进行转换的效率。
[0013] 可选的,PLD根据字符串对BIOS程序进行转换以获得转换后的BIOS程序,包括:PLD以字符串为第一索引,以BIOS程序包括的数据为第二索引,在程序映射表中查询转换后的BIOS程序;其中,程序映射表是二维索引表,且存储有字符串和BIOS程序包括的数据对应的转换后的BIOS程序。
[0014] 可选的,PLD以字符串为第一索引,以BIOS程序包括的数据为第二索引,在程序映射表中查询转换后的BIOS程序,包括:PLD将BIOS程序划分为至少两段子程序;从字符串中获取每段子程序对应的子字符串;对于每段子程序,以子程序对应的子字符串为第一索引,以子程序包括的数据为第二索引,在程序映射表中查询转换后的子程序;根据每段转换后的子程序确定转换后的BIOS程序。
[0015] 通过将BIOS程序划分为至少两段子程序,PLD分别根据每段子程序和每段子程序对应的子字符串,在程序映射表中查找每段转换后的子程序,根据每段转换后的子程序确定转换后的BIOS程序。此时,由于同一条BIOS程序进行了多次转换,因此,提高了非法用户还原每条BIOS程序的难度。
[0016] 可选的,PLD根据字符串对预期存储地址进行转换,包括:PLD以字符串为第一索引,以预期存储地址包括的数据为第二索引,在地址映射表中查询转换后的存储地址;其中,地址映射表是二维索引表,且存储有字符串和预期存储地址包括的数据对应的转换后的存储地址。
[0017] 可选的,PLD以字符串为第一索引,以预期存储地址包括的数据为第二索引,在数据映射表中查询转换后的存储地址,包括:PLD将存储地址划分为至少两段子地址;从字符串中获取每段子地址对应的子字符串;对于每段子地址,以子地址对应的子字符串为第一索引,以子地址包括的数据为第二索引,在地址映射表中查询转换后的子地址;根据每段转换后的子地址确定转换后的存储地址。
[0018] 通过将BIOS程序的预期存储地址划分为至少两段子地址,PLD分别根据每段子地址和每段子地址对应的子字符串,在地址映射表中查找每段转换后的子地址,根据每段转换后的子地址确定转换后的存储地址,此时,由于同一条BIOS程序的预期存储地址进行了多次转换。因此,提高了非法用户还原每条BIOS程序的预期存储地址的难度。
[0019] 可选的,PLD根据字符串对BIOS程序进行转换以获得转换后的BIOS程序,包括:PLD从字符串中获取子字符串,子字符串的长度大于零,且小于等于字符串的长度;PLD对子字符串进行第一逻辑运算得到转换后的子字符串;利用转换后的子字符串对BIOS程序进行第二逻辑运算,得到转换后的BIOS程序;或者,PLD对BIOS程序进行第三逻辑运算,利用子字符串对进行了第三逻辑运算的BIOS程序进行第四逻辑运算,得到转换后的BIOS程序;或者,PLD对子字符串进行第五逻辑运算,得到转换后的子字符串;对BIOS程序进行第六逻辑运算,利用转换后的子字符串对进行了第六逻辑运算的BIOS程序进行第七逻辑运算,得到转换后的BIOS程序;或者,PLD利用子字符串对BIOS程序进行第八逻辑运算,得到转换后的BIOS程序。
[0020] 通过将字符串与BIOS程序进行逻辑运算,为PLD对该BIOS程序进行转换提供了另一种实现方式。
[0021] 可选的,PLD根据字符串对预期存储地址进行转换,包括:PLD从字符串中获取子字符串,子字符串的长度大于零,且小于等于字符串的长度;PLD对子字符串进行第一逻辑运算得到转换后的子字符串;利用转换后的子字符串对预期存储地址进行第二逻辑运算,得到转换后的存储地址;或者,PLD对预期存储地址进行第三逻辑运算,利用子字符串对进行了第三逻辑运算的预期存储地址进行第四逻辑运算,得到转换后的存储地址;或者,PLD对子字符串进行第五逻辑运算,得到转换后的子字符串;对预期存储地址进行第六逻辑运算,利用转换后的子字符串对进行了第六逻辑运算的预期存储地址进行第七逻辑运算,得到转换后的存储地址;或者,PLD利用子字符串对预期存储地址进行第八逻辑运算,得到转换后的存储地址。
[0022] 通过将字符串与BIOS程序的预期存储地址进行逻辑运算,为PLD对该预期存储地址进行转换提供了另一种实现方式。
[0023] 第二方面,提供了一种程序写入方法,该方法包括:计算机设备中的PLD接收计算机设备中的CPU发送的BIOS程序和该BIOS程序在BIOS芯片中的预期存储地址,BIOS程序用于供CPU执行以完成计算机设备的初始化;PLD读取与PLD相连的存储芯片中存储的字符串;PLD根据字符串对预期存储地址进行转换以获得转换后的存储地址,其中,转换后的存储地址不同于预期存储地址;PLD将BIOS程序存储至转换后的存储地址。
[0024] 通过PLD仅将BIOS程序的预期存储地址进行转换,使得BIOS程序散列地存储在BIOS芯片中,既提高了BIOS芯片中的BIOS程序的安全性,还节省了PLD同时对BIOS程序和预期存储地址进行转换时所消耗的资源。
[0025] 第三方面,提供了一种程序读取方法,该方法包括:计算机设备中的PLD接收计算机设备中的CPU发送的程序读取指令,该程序读取指令用于从计算机设备中的BIOS芯片中读取原始BIOS程序,该原始BIOS程序用于供CPU执行以完成计算机设备的初始化;然后,PLD读取与PLD相连的存储芯片中存储的字符串;PLD从BIOS芯片中读取转换后的BIOS程序,并根据字符串对转换后的BIOS程序进行还原以获得还原后的BIOS程序,并将还原后的BIOS程序发送至CPU。其中,转换后的BIOS程序是PLD根据字符串对原始BIOS程序进行转换并存储至BIOS芯片中的;转换后的BIOS程序不同于原始BIOS程序。
[0026] 通过PLD在接收到CPU发送的程序读取指令时,读取存储芯片中的字符串以及BIOS芯片中的转换后的BIOS程序,并根据该字符串对该转换后的BIOS程序进行还原,在得到还原后的BIOS程序后将该还原后的BIOS程序发送给CPU,使得CPU可以运行该BIOS程序以完成计算机设备的初始化,这样,计算机设备在每次上电后既可以正常地完成初始化,又解决了BIOS芯片中存储的BIOS程序的安全性不高的问题,达到了在不影响计算机设备的初始化的前提下,提高BIOS芯片中的BIOS程序的安全性的效果。
[0027] 可选的,PLD从BIOS芯片中读取转换后的BIOS程序,包括:PLD获取程序读取指令携带的预期存储地址;PLD读取存储在预期存储地址中的转换后的BIOS程序。
[0028] 可选的,PLD从BIOS芯片中读取转换后的BIOS程序,包括:PLD获取程序读取指令携带的预期存储地址;PLD根据字符串对预期存储地址进行转换,得到转换后的存储地址,其中,转换后的存储地址不同于预期存储地址;PLD读取存储在转换后的存储地址中的转换后的BIOS程序。
[0029] 由于PLD在写入BIOS程序时可能将BIOS程序的预期存储地址进行了转换,因此,为了能够准确地还原CPU请求读取的BIOS程序,PLD在接收到CPU发送的程序存储指令时,需要对该程序存储指令携带的预期存储地址进行转换,以读取该CPU请求读取的BIOS程序,从而保证还原BIOS程序的准确性。
[0030] 可选的,PLD根据字符串对预期存储地址进行转换,得到转换后的存储地址,包括:PLD获取BIOS芯片的位宽和存储容量;根据该位宽和存储容量确定该预期存储地址的转换位数i;根据该字符串对该预期存储地址中的最后i位进行转换,得到转换后的存储地址。其中,i为正整数。
[0031] 可选的,PLD根据字符串对转换后的BIOS程序进行还原以获得还原后的BIOS程序,包括:PLD以字符串为第一索引,以转换后的BIOS程序包括的数据为第二索引,在程序映射表中查询还原后的BIOS程序;其中,程序映射表是二维索引表,且存储有字符串和还原后的BIOS程序包括的数据对应的转换后的BIOS程序。
[0032] 可选的,PLD以字符串为第一索引,以转换后的BIOS程序包括的数据为第二索引,在程序映射表中查询还原后的BIOS程序,包括:PLD根据预设划分方式将转换后的BIOS程序划分为至少两段转换后的子程序,其中,预设划分方式与PLD在向BIOS芯片写入BIOS程序时,将BIOS程序划分为至少两段子程序的划分方式相同;PLD从字符串中获取每段转换后的子程序对应的子字符串;对于每段转换后的子程序,该PLD以转换后的子程序对应的子字符串为第一索引,以转换后的子程序包括的数据为第二索引,在程序映射表中查询还原后的子程序;PLD根据每段还原后的子程序确定还原后的BIOS程序。
[0033] 可选的,PLD根据字符串对预期存储地址进行转换,包括:PLD以字符串为第一索引,以预期存储地址包括的数据为第二索引,在地址映射表中查询转换后的存储地址;其中,地址映射表是二维索引表,且存储有字符串和预期存储地址包括的数据对应的转换后的存储地址。
[0034] 可选的,PLD以所述字符串为第一索引,以预期存储地址包括的数据为第二索引,在数据映射表中查询转换后的存储地址,包括:PLD根据预设划分方式将预期存储地址划分为至少两段子地址,其中,预设划分方式与PLD在向BIOS芯片写入BIOS程序时,将预期存储地址划分为至少两段子地址的划分方式相同;从字符串中获取每段子地址对应的子字符串;对于每段子地址,PLD以子地址对应的子字符串为第一索引,以子地址包括的数据为第二索引,在地址映射表中查询转换后的子地址;PLD根据每段转换后的子地址确定转换后的存储地址。
[0035] 可选的,根据字符串对转换后的BIOS程序进行还原以获得还原后的BIOS程序,包括:从字符串中获取子字符串,子字符串的长度大于零,且小于等于字符串的长度;对子字符串进行第一逻辑运算得到转换后的子字符串;利用转换后的子字符串对转换后的BIOS程序进行第二逻辑运算,得到还原后的BIOS程序;或者,对转换后的BIOS程序进行第三逻辑运算,利用子字符串对进行了第三逻辑运算的转换后的BIOS程序进行第四逻辑运算,得到还原后的BIOS程序;或者,对子字符串进行第五逻辑运算,得到转换后的子字符串;对转换后的BIOS程序进行第六逻辑运算,利用转换后的子字符串对进行了第六逻辑运算的转换后的BIOS程序进行第七逻辑运算,得到还原后的BIOS程序;或者,利用子字符串对转换后的BIOS程序进行第八逻辑运算,得到还原后的BIOS程序。可选的,根据字符串对预期存储地址进行转换,包括:从字符串中获取子字符串,该子字符串的长度大于零,且小于等于字符串的长度;对子字符串进行第一逻辑运算得到转换后的子字符串;利用转换后的子字符串对预期存储地址进行第二逻辑运算,得到转换后的存储地址;或者,对预期存储地址进行第三逻辑运算,利用子字符串对进行了第三逻辑运算的预期存储地址进行第四逻辑运算,得到转换后的存储地址;或者,对子字符串进行第五逻辑运算,得到转换后的子字符串;对预期存储地址进行第六逻辑运算,利用转换后的子字符串对进行了第六逻辑运算的预期存储地址进行第七逻辑运算,得到转换后的存储地址;或者,利用子字符串对预期存储地址进行第八逻辑运算,得到转换后的存储地址。
[0036] 第四方面,提供了一种程序读取方法,该方法包括:计算机设备中的PLD接收计算机设备中的CPU发送的程序读取指令,并获取程序读取指令携带的预期存储地址,该程序读取指令用于从BIOS芯片中读取BIOS程序,该BIOS程序用于供CPU执行以完成计算机设备的初始化;然后,PLD读取与该PLD相连的存储芯片中存储的字符串;PLD根据该字符串对预期存储地址进行转换以获得转换后的存储地址,从转换后的存储地址中读取BIOS程序,并将该BIOS程序发送至CPU其中,转换后的存储地址不同于预期存储地址。
[0037] 通过PLD在接收到CPU发送的程序读取指令时,从存储芯片中读取字符串,并根据该字符串对读取指令携带的预期存储地址进行转换,从BIOS芯片中的转换后的存储地址中读取BIOS程序,使得PLD可以准确地在BIOS芯片中读取到CPU请求读取的BIOS程序,从而可以运行该BIOS程序以完成计算机设备的初始化,这样,计算机设备在每次上电后既可以正常地完成初始化,又解决了BIOS芯片中存储的BIOS程序的安全性不高的问题,达到了在不影响计算机设备的初始化的前提下,提高BIOS芯片中的BIOS程序的安全性的效果。
[0038] 第五方面,提供了一种程序写入装置,该装置包括至少一个单元,该至少一个单元用于实现上述第一方面或第二方面所提供的程序写入方法。
[0039] 第六方面,提供了一种程序读取装置,该装置包括至少一个单元,该至少一个单元用于实现上述第三方面或第四方面所提供的程序读取方法。
[0040] 第七方面,提供了一种计算机设备,该计算机设备包括:CPU、BIOS芯片、存储芯片和PLD,CPU通过PLD与BIOS芯片相连,存储芯片与PLD相连;
[0041] 该PLD被配置为由CPU控制,并用于实现上述第一方面或第二方面所提供的程序写入方法,以及,第三方面或第四方面所提供的程序读取方法。附图说明
[0042] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0043] 图1A是本申请一个实施例提供设备的结构图;
[0044] 图1B是本申请一个实施例提供程序写入方法的场景图;
[0045] 图1C是本申请一个实施例提供程序读取方法的场景图;
[0046] 图2是本申请一实施例提供的第一种程序读写方法的流程图
[0047] 图3是本申请一实施例提供的滑动窗口的示意图;
[0048] 图4是本申请一实施例提供的第一种转换的示意图;
[0049] 图5是本申请一实施例提供的第二种转换的示意图;
[0050] 图6是本申请一实施例提供的第三种转换的示意图;
[0051] 图7是本申请一实施例提供的第四种转换的示意图;
[0052] 图8是本申请一实施例提供的第五种转换的示意图;
[0053] 图9是本申请一实施例提供的第二种程序读写方法的流程图;
[0054] 图10是本申请一实施例提供的第三种程序读写方法的流程图;
[0055] 图11是本申请一个实施例提供的程序写入装置的框图
[0056] 图12是本申请一个实施例提供的程序读取装置的框图。

具体实施方式

[0057] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0058] 在本文中提及的“单元”是指按照逻辑划分的功能性结构,该“单元”可以由纯硬件实现,或者,软硬件的结合实现。
[0059] 请参考图1A,其示出了本申请一个示例性实施例提供的计算机设备100的结构示意图。该计算机设备100可以是移动电话(cellphone),智能手机(smartphone),计算机(computer),平板电脑(tablet computer),可穿戴设备(wearable device),个人数码助理(Personal Digital Assistant,PDA),移动互联网设备(Mobile Internet Device,MID)和电子书阅读器(e-book reader)、服务器等。
[0060] 该计算机设备100包括:CPU 120、BIOS芯片140、存储芯片160和PLD180,其中,CPU120通过PLD180与BIOS芯片140相连,存储芯片160与PLD180相连。
[0061] CPU120是计算机设备100的控制中心,用于通过PLD180向BIOS芯片140写入BIOS程序。在计算机设备100上电后,该CPU120还用于向PLD180发送程序读取指令以获得BIOS芯片140中的BIOS程序来完成该计算机设备100的初始化。其中,计算机设备100的初始化包括显卡的初始化、内存的初始化等,本实施例不作限定。
[0062] PLD180可以是复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD),现场可编程逻辑门阵列(Field-Programmable Gate Array,FPGA),通用阵列逻辑(Generic Array Logic,GAL)或其任意组合。可选的,PLD180可以与CPU120集成在同一物理芯片中。PLD180用于接收CPU120发送的待写入到BIOS芯片140中的BIOS程序,并通过PLD180与存储芯片160之间的两线式串行接口(Inter-Integrated Circuit,I2C)从存储芯片160中读取字符串,并将读取到的字符串保存在该PLD180中的寄存器中。
[0063] PLD180读取到字符串后,在第一种情况下,利用该字符串对接收到的BIOS程序进行转换,将转换后的BIOS程序写入到BIOS芯片140中。此时,在计算机设备100上电后,该PLD180还用于接收CPU120发送的程序读取指令,并根据该程序读取指令携带的预期存储地址从BIOS芯片140中读取转换后的BIOS程序,并对该转换后的BIOS程序进行还原,在得到还原后的BIOS程序后将该还原后的BIOS程序发送给CPU120。具体地,请参考图2所示的方法实施例。
[0064] 在第二种情况下,PLD180获取该BIOS程序预期存储在BIOS芯片140中的预期存储地址,利用该字符串对该预期存储地址进行转换,在得到转换后的存储地址后将接收到的BIOS程序写入到BIOS芯片140中。此时,在计算机设备100上电后,该PLD180还用于接收CPU120发送的程序读取指令,并对该程序读取指令携带的预期存储地址进行转换,在得到转换后的存储地址后,根据该转换后的存储地址从BIOS芯片140中读取BIOS程序,将读取到的BIOS程序发送给CPU120。具体地,请参考图9所示的方法实施例。
[0065] 在第三种情况下,PLD180利用该字符串对该BIOS程序和该BIOS程序的预期存储地址均进行转换,并将转换后的BIOS程序存储至转换后的存储地址。此时,在计算机设备100上电后,该PLD180还用于接收CPU120发送的程序读取指令,并对该程序读取指令携带的预期存储地址进行转换,在得到转换后的存储地址后,根据该转换后的存储地址从BIOS芯片140中读取转换后的BIOS程序,然后,根据该字符串对转换后的BIOS程序进行还原,在得到还原后的BIOS程序后,将该还原后的BIOS程序发送给CPU120。具体地,请参考图10所示的方法实施例。
[0066] 需要说明的是,本文中所提及的BIOS程序可以是完整的BIOS程序,也可是BIOS程序中的一段程序用于供CPU完成计算机设备100初始化的程序,本实施例不作限定。
[0067] BIOS芯片140用于存储BIOS程序。BIOS芯片140为非易失性存储器(non-volatile memory)。非易失性存储器可以为ROM,例如可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)。非易失性存储器也可以为快闪存储器(flash memory),磁存储器,例如磁带(magnetic tape),软盘(floppy disk),硬盘。非易失性存储器也可以为光盘。
[0068] 存储芯片160用于存储字符串,该字符串用于供PLD对BIOS程序,和/或,BIOS程序的预期存储地址进行转换。该字符串的内容是随机的,具体可以为开发者预存在该存储芯片160中的一串随机字符,也可以为计算机设备100的生产厂商在设备出厂时写入的电子序列号(Electronic Serial Number,ESN),本实施例不作限定。ESN的长度可以为16字节。该存储芯片160可以为EEPROM,也为非易失性存储器。该存储芯片160的类型可以与BIOS芯片140的类型相同,也可以与BIOS芯片140的类型不同,本实施例不作限定。
[0069] 可选的,计算机设备100还可以包括北桥(North Bridge,NB)芯片(图中未示出),该NB芯片还可以称为主桥(host bridge)芯片。北桥芯片位于CPU120与PLD之间,是与CPU120距离最近的芯片。北桥芯片用来处理CPU120与PLD180之间的通信。可选的,北桥芯片可以与CPU120集成在同一物理芯片中。
[0070] 请参考图1B,其示出了本申请一个示例性实施例提供的计算机设备100在写入BIOS程序时的场景图。图1B中以PLD为CPLD、BIOS芯片为ROM、存储芯片为EEPROM,且CPLD对BIOS程序和BIOS程序的预期存储地址均进行转换为例进行说明。当CPLD接收到CPU发送的待写入到ROM中的BIOS程序A时,读取EEPROM中的字符串B,该CPLD根据B对A进行转换后,得到转换后的BIOS程序C;根据B对预期存储地址D进行转换后,得到转换后的存储地址E,CPLD将C储在ROM中E指示的存储空间中。
[0071] 相应地,请参考图1C,其示出了本申请一个示例性实施例提供的计算机设备100在读取BIOS程序时的场景图。在CPLD根据图1B所示的流程写入BIOS程序A之后,若该CPLD接收到CPU发送的请求读取BIOS程序的程序读取指令,则读取EEPROM中的字符串B,利用B将该读取指令携带的预期存储地址D进行转换,得到转换后的存储地址E,从ROM中E指示的存储空间读取得到转换后的BIOS程序C,对C进行还原得到还原后的BIOS程序A,将A发送给CPU。
[0072] 请参考图2,其示出了本申请一实施例提供的第一种程序读写方法的流程图,该程序读写方法可以应用于图1A所示的计算机设备中,该程序读写方法包括以下步骤:
[0073] 步骤201,计算机设备中的PLD接收该计算机设备中的CPU发送的BIOS程序,该BIOS程序用于供CPU执行以完成计算机设备的初始化。
[0074] 计算机设备在出厂前需要由开发人员通过CPU在BIOS芯片中写入CPU在每次上电后运行的BIOS程序,此时,安装在该计算机设备中的PLD会在BIOS芯片之前接收到该BIOS程序,该BIOS程序用于供CPU运行以完成设备的初始化。通常BIOS程序的数量为至少一条。
[0075] 步骤202,PLD读取与该PLD相连的存储芯片中存储的字符串。
[0076] PLD通过与存储芯片之间的I2C(Inter-Integrated Circuit)接口,读取与该PLD相连的存储芯片中存储的字符串,并将读取到的字符串存储在该PLD中的寄存器中。其中,字符串可以为十六进制的一串字符、也可以为十进制的一串字符、还可以为二进制的一串字符,本实施例不对字符串的字符形式作限定。
[0077] 当存储芯片中存储了一条字符串时,PLD读取存储芯片中存储的该条字符串,这是最为简便的方式。当存储芯片中存储了至少两条字符串时,PLD获取当前一条BIOS程序对应的字符串可以为:PLD根据预设规则读取至少两条字符串中的一条字符串。
[0078] 预设规则包括但不限于以下实现方式:
[0079] 在第一种实现方式中,PLD根据接收到的每条BIOS程序的顺序从至少两条字符串中读取一条字符串。比如:当PLD接收到的第一条BIOS程序时,从至少两条字符串中读取第一条字符串;当PLD接收到第二条BIOS程序时,从至少两条字符串中读取第二条字符串。
[0080] 在第二种实现方式中,PLD从至少两条字符串中读取指定的一条字符串。比如:PLD读取至少两条字符串中的第一条字符串。
[0081] 步骤203,PLD根据字符串对BIOS程序进行转换以获得转换后的BIOS程序。
[0082] 可选地,PLD在对BIOS程序进行转换之前需要从字符串中获取该BIOS程序对应的子字符串,根据该子字符串对该BIOS程序进行转换以获得转换后的BIOS程序。
[0083] 在一种实现方式中,PLD获取该BIOS程序对应的子字符串,包括:PLD从字符串中获取当前一条BIOS程序对应的一条子字符串。
[0084] PLD从字符串中获取当前一条BIOS程序对应的一条子字符串的实现方式包括但不限于以下实现方式:
[0085] 在第一种实现方式中,PLD从CPU发来的BIOS程序的预期存储地址中截取最后n位。确定该最后n位数据自身的取值,并进而确定预设窗口长度的滑动窗口的起始位置为寄存器中上述最后n位数据表示的值所指示的地址。通过该滑动窗口从寄存器中该地址指示的字符开始截取一段位数为该预设窗口长度的子字符串。其中n为正整数,例如4,32等等。其中,预期存储地址是CPU在发送BIOS程序是发送的。
[0086] 请参考图3,假设BIOS程序的预期存储地址为0x000000000001,最后四位数据为0001,其表示的值为1,则滑动窗口的起始位置为寄存器中的地址1,若该滑动窗口的预设窗口长度为4为字符,则根据图3可知,PLD从地址1指示的字符0开始截取到的4位子字符串为
1000,即,该BIOS程序对应的子字符串为1000。
[0087] 在第二种实现方式中,PLD根据抽取规则从字符串中抽取当前一条BIOS程序对应的一条子字符串。
[0088] 抽取规则可以为PLD从字符串的起始字符开始,沿着预设方向每隔预设位数抽取一位字符,直到得到的字符的位数与BIOS程序的位数相同时为止。其中,预设位数远小于字符串的位数,起始字符的位置是根据上一条BIOS程序对应的子字符串的最后一位字符的位置确定的,若当前一条的BIOS程序是第一条BIOS程序,则该起始字符可以为字符串的第一位,或者,字符串的最后一位,或者,字符串的任意一位。
[0089] 假设PLD中的寄存器中的字符串如图3所示,当PLD第一次接收到BIOS程序时,PLD从字符串的最后一位字符开始,沿着字符串的排列方向由后向前每间隔2位抽取一个字符,得到该BIOS程序对应的子字符串0110,然后,PLD将间隔两位对应的字符作为下一条BIOS程序的起始字符。当PLD第二次接收到BIOD程序时,逻辑阵列从起始字符开始每间隔2位抽取一个字符,得到该BIOS程序对应的子字符串1100。
[0090] 在另一种实现方式中,PLD获取该BIOS程序对应的子字符串,包括:PLD从字符串中获取当前一条BIOS程序对应的多条子字符串。其中,该多条子字符串与当前一条BIOS程序包括的至少两段子程序一一对应,该至少两段子程序是PLD对该当前一条的BIOS程序进行划分得到的。
[0091] PLD在将BIOS程序划分为至少两段子程序时,划分得到的子程序的位数可以相同也可以不同,本实施例不对PLD划分子程序的方式,以及,划分得到的子程序的位数作限定。
[0092] PLD从字符串中获取每段子程序对应的一条子字符串的实现方式包括但不限于以下实现方式:
[0093] 在第一种实现方式中,PLD确定预设窗口长度的滑动窗口的起始位置,利用该滑动窗口从字符串中截取当前一段子程序对应的子字符串,所截取的子字符串的位数与预设窗口长度相等,然后,PLD将该滑动窗口按照字符串由低位到高位的顺序滑动预设步长。其中,滑动窗口的起始位置可以为字符串的最后一位,也可以为该字符串的任意一位,本实施例不作限定。
[0094] 假设PLD中的寄存器中的字符串如图3所示,PLD第一次接收到的BIOS程序为0x000000000001,PLD将该BIOS程序划分为第一段子程序0001、第二段子程序0000、第三段子程序0000,滑动窗口的起始位置为字符串的最后一位,若该滑动窗口的预设窗口长度为4位字符,预设步长为1位字符,则根据图3可知,PLD从字符0开始截取到的第一段子程序对应的4位子字符串为1000;第二段子程序对应的4位字符串为;第二段子程序对应的4位字符串为0100;第三段子程序对应的4位子字符串为0010。
[0095] 在第二种实现方式中,PLD根据抽取规则从字符串中抽取每段子程序对应的一条子字符串。
[0096] 抽取规则可以为PLD从字符串的起始字符开始,沿着预设方向每隔预设位数抽取一位字符,直到得到的字符的位数与子程序的位数相同时为止。其中,预设位数远小于字符串的位数,起始字符的位置是根据上一段子程序对应的子字符串的最后一位字符的位置确定的,若当前一段的子程序是第一条BIOS程序中的第一段子程序,则该起始字符可以为字符串的第一位,或者,字符串的最后一位,或者,字符串的任意一位。
[0097] 假设PLD中的寄存器中的字符串如图3所示,当PLD第一次接收到BIOS程序,且该BIOS程序的第一段子程序为4位时,PLD从字符串的最后一位字符开始,沿着字符串的排列方向由后向前每间隔2位抽取一个字符,得到该子程序对应的子字符串0110,然后,PLD将间隔两位对应的字符作为下一段子程序的起始字符。
[0098] 步骤204,PLD获取CPU发送的BIOS程序在BIOS芯片中的预期存储地址。
[0099] 步骤205,PLD将转换后的BIOS程序存储至BIOS芯片中的预期存储地址。
[0100] 步骤206,计算机设备中的PLD接收该计算机设备中的CPU发送的程序读取指令,该程序读取指令用于从该计算机设备中的BIOS芯片中读取原始BIOS程序,该原始BIOS程序用于供CPU执行以完成该计算机设备的初始化。
[0101] 步骤207,PLD读取与该PLD相连的存储芯片中存储的字符串。
[0102] 需要说明的是,为了保证PLD能够准确地还原存储在BIOS芯片中的BIOS程序,本步骤中PLD读取字符串的方式应当与步骤202中PLD读取字符串的方式相同。
[0103] 步骤208,PLD获取程序读取指令携带的预期存储地址。
[0104] CPU发送的程序读取指令中携带有要读取的BIOS程序预期存储在BIOS芯片中的预期存储地址,PLD获取该预期存储地址。
[0105] 步骤209,PLD读取存储在预期存储地址中的转换后的BIOS程序,并根据字符串对转换后的BIOS程序进行还原以获得还原后的BIOS程序。
[0106] 步骤210,PLD将还原后的BIOS程序发送至CPU。
[0107] 需要说明的是,步骤201-205可单独实现为程序写入方法的实施例;步骤206-210可单独实现为程序读取方法的实施例,本实施例不作限定。
[0108] 综上所述,本申请实施例提供的程序读写方法,通过PLD根据字符串对BIOS程序进行转换以获得转换后的BIOS程序,并将转换后的BIOS程序存储至BIOS芯片中,使得BIOS芯片中存储的BIOS程序是经过转换后的BIOS程序,这样,除了开发人员之外的人员无法通过获取BIOS芯片来获取到原始的BIOS程序,解决了BIOS芯片中存储原始的BIOS程序,导致该原始的BIOS程序的安全性不高的问题,达到了提高BIOS芯片中存储的BIOS程序的安全性的效果。
[0109] 下面对PLD对BIOS程序进程转换时的具体转换过程作描述:
[0110] 在步骤203中PLD获取到BIOS程序对应的子字符串后,根据该子字符串对BIOS程序进行转换,具体包括:PLD以子字符串为第一索引,以BIOS程序包括的数据为第二索引,在程序映射表中查询转换后的BIOS程序;其中,程序映射表是二维索引表,且存储有字符串和BIOS程序包括的数据对应的转换后的BIOS程序。该程序映射表是通过硬件编程语言固化在该PLD中的。
[0111] 需要说明的是,为了保证CPU在请求读取存储器中的BIOS程序时,PLD能够将转换后的BIOS程序准确地还原为原始的BIOS程序,不同的BIOS程序对应的转换后的BIOS程序不同。
[0112] 当PLD将BIOS程序划分为至少两段子程序时,PLD以子字符串为第一索引,以BIOS程序包括的数据为第二索引,在程序映射表中查询转换后的BIOS程序,包括:对于每段子程序,以该子程序对应的子字符串为第一索引,以该子程序包括的数据为第二索引,在程序映射表中查询转换后的子程序,根据每段转换后的子程序确定转换后的BIOS程序。
[0113] 假设PLD中的程序映射表如下表一所示,第一行表示每段子程序包括的数据,第一列表示子字符串,且为了保证PLD能够将转换后的BIOS程序准确地还原为原始的BIOS程序,表一中每一行转换后的子程序之间互不重复。在PLD接收到的BIOS程序中的一段子程序包括的数据为0x7,且获取到该子程序对应的子字符串为0x1时,查表可知转换后的子程序为0x0。其中,0x是指十六进制。需要说明的是,在实际实现时,子字符串和子程序包括的数据可以为其他进制数,比如:二进制、十进制等,本实施例不作限定。
[0114] 表一:
[0115]
[0116] 相应地,PLD对转换后的BIOS程序进行还原时的具体还原过程如下:
[0117] 在一种实现方式中,当PLD从字符串中获取当前一条BIOS程序对应的一条子字符串时,PLD根据该子字符串对转换后的BIOS程序进行还原以获得还原后的BIOS程序,包括:PLD从字符串中获取当前一条程序读取指令对应的一条字符串,利用该子字符串对转换后的BIOS程序进行还原以获得还原后的BIOS程序。
[0118] 其中,PLD从字符串中获取当前一条程序读取指令对应的一条子字符串的获取方式与步骤203中PLD从字符串中获取当前一条BIOS程序对应的一条子字符串的获取方式相同,在此不作赘述。
[0119] 在另一种实现方式中,当PLD从字符串中获取当前一条BIOS程序对应的多条子字符串时,PLD根据子字符串对BIOS程序进行转换以获得转换后的BIOS程序,包括:PLD根据预设划分方式将转换后的BIOS程序划分为至少两段转换后的子程序,从字符串中获取每段转换后的子程序对应的子字符串;对于每段转换后的子程序,根据该段转换后的子程序对应的子字符串对该段转换后的子程序进行还原,得到还原后的子程序;将每段还原后的子程序合并得到还原后的BIOS程序。
[0120] 其中,PLD从字符串中获取每段转换后的子程序对应的字符串的获取方式与步骤203中PLD从字符串中获取每段子程序对应的字符串的获取方式相同。预设划分方式与步骤
203中PLD将BIOS程序划分为至少两段子程序的划分方式相同,在此不作赘述。
[0121] 需要说明的是,本步骤中PLD对转换后的BIOS程序进行还原的还原方式也是根据步骤203中PLD对BIOS程序进行转换的转换方式确定的。
[0122] 具体的,当PLD以BIOS程序对应的一条子字符串为第一索引,以该BIOS程序包括的数据为第二索引,在程序映射表中查询转换后的BIOS程序时,PLD就以当前一条程序读取指令对应的一条子字符串为第一索引,以转换后的BIOS程序为第二索引,在该程序映射表中查询还原后的BIOS程序。当PLD以BIOS程序包括的子程序对应的子字符串为第一索引,以该子程序包括的数据为第二索引,在程序映射表中查询转换后的子程序时,PLD就以转换后的BIOS程序包括的转换后的子程序对应的子字符串为第一索引,以该转换后的子程序为第二索引,在该程序映射表中查询还原后的子程序,根据每段还原后的子程序确定还原后的BIOS程序。
[0123] 假设PLD中的程序映射表如上表一所示,在PLD读取到的转换后的BIOS程序中的一段转换后的子程序包括的数据为0x0,且获取到该转换后的子程序对应的子字符串为0x1时,查表可知还原后的子程序为0x7。
[0124] 可选的,步骤202中在PLD获取到字符串后,可以从字符串中获取子字符串,该子字符串的长度大于零,且小于等于字符串的长度。该子字符串的获取方式请参考步骤203中的描述,在此不作赘述。此时,PLD根据该字符串对BIOS程序进行转换,还可包括以下转换方式:
[0125] 在第一种转换方式中,PLD对子字符串进行第一逻辑运算得到转换后的子字符串;利用转换后的子字符串对BIOS程序进行第二逻辑运算,得到转换后的BIOS程序。
[0126] 附图4是第一种转换方式的示例。请参考图4,假设CPU向PLD发送的BIOS程序为0b1000,PLD获取到该BIOS程序对应的子字符串为0b0010,PLD首先对该子字符串0b0010进行取反得到转换后的子字符串0b1101,利用0b1101与BIOS程序0b1000进行异或运算,得到转换后的BIOS程序0b0101。其中,0b用于表示二进制。
[0127] 相应地,步骤209中,PLD在接收到CPU发送的程序读取指令时,从该程序读取指令携带的预期存储地址中读取转换后的BIOS程序,根据该第一种转换方式对该转换后的BIOS程序进行还原,得到还原后的BIOS程序。
[0128] 假设当PLD接收到CPU发送的程序读取指令时,从该程序读取指令携带的存储地址中读取得到转换后的BIOS程序为0b0101,获取到的子字符串为0b0010。PLD首先对该子字符串0b0010进行取反得到转换后的字符串0b1101,利用0b1101与转换后的BIOS程序0b0101进行异或运算,得到还原后的BIOS程序0b1000。
[0129] 在第二种转换方式中,PLD对BIOS程序进行第三逻辑运算,利用子字符串对进行了第三逻辑运算的BIOS程序进行第四逻辑运算,得到转换后的BIOS程序。
[0130] 附图5是第二种转换方式的示例。请参考图5,假设CPU向PLD发送的BIOS程序为0b1000,PLD获取到该BIOS程序对应的子字符串为0b0010,该子字符串表示的数值为2。PLD首先对0b1000取反得到0b0111,对0b0111循环左移子字符串表示的数值,得到转换后的BIOS程序0b1101。
[0131] 相应地,步骤209中,PLD在接收到CPU发送的程序读取指令时,从该程序读取指令携带的预期存储地址中读取转换后的BIOS程序,根据该第二种转换方式对该转换后的BIOS程序进行还原,得到还原后的BIOS程序。
[0132] 假设当PLD接收到CPU发送的程序读取指令时,从该程序读取指令携带的存储地址中读取得到转换后的BIOS程序为0b1101,获取到子字符串为0b0010。PLD首先对0b1101取反得到0b0010,将0b0010循环右移子字符串表示的数值,得到还原后的BIOS程序0b1000。
[0133] 在第三种转换方式中,PLD对子字符串进行第五逻辑运算,得到转换后的子字符串;对BIOS程序进行第六逻辑运算,利用转换后的子字符串对进行了第六逻辑运算的BIOS程序进行第七逻辑运算,得到转换后的BIOS程序。
[0134] 附图6是第三种转换方式的示例。请参考图6,假设CPU向PLD发送的BIOS程序为0b1000,PLD获取到该BIOS程序对应的子字符串为0b0010。PLD对该子字符串进行取反得到
0b1101,对BIOS程序循环左移2位得到0b0010,对0b1101和0b0010进行异或得到转换后的BIOS程序0b1111。
[0135] 相应地,步骤209中,PLD在接收到CPU发送的程序读取指令时,从该程序读取指令携带的预期存储地址中读取转换后的BIOS程序,根据该第三种转换方式对该转换后的BIOS程序进行还原,得到还原后的BIOS程序。
[0136] 假设当PLD接收到CPU发送的程序读取指令时,从该程序读取指令携带的存储地址中读取得到转换后的BIOS程序为0b1111,获取到的子字符串为0b0010。PLD首先对0b0010取反得到0b1101,将0b1111与0b1101进行异或得到0b0010,将0b0010循环右移2为得到还原后的BIOS程序0b1000。
[0137] 在第四种转换方式中,PLD利用子字符串对BIOS程序进行第八逻辑运算,得到转换后的BIOS程序。
[0138] 附图7是第四种转换方式的示例。请参考图7,假设CPU向PLD发送的BIOS程序为0b1000,PLD获取到该BIOS程序对应的子字符串为0b0010。PLD对0b1000和0b0010进行异或得到转换后的BIOS程序0b1010。
[0139] 相应地,步骤209中,PLD在接收到CPU发送的程序读取指令时,从该程序读取指令携带的预期存储地址中读取转换后的BIOS程序,根据该第四种转换方式对该转换后的BIOS程序进行还原,得到还原后的BIOS程序。
[0140] 假设当PLD接收到CPU发送的程序读取指令时,从该程序读取指令携带的存储地址中读取得到转换后的BIOS程序为0b1010,获取到的子字符串为0b0010。PLD将0b1010与0b0010进行异或得到还原后的BIOS程序0b1000。
[0141] 在第五种转换方式中,PLD采用第一种转换方式、第二种转换方式、第三种转换方式、第四种转换方式中的至少两种对BIOS程序进行转换,得到转换后的BIOS程序。
[0142] 附图8是第五种转换方式的示例。请参考图8,假设CPU向PLD发送的BIOS程序为0b1000,PLD获取到该BIOS程序对应的子字符串为0b0010,该子字符串表示的数值为2,则PLD对0b1000循环左移字符串表示的数值得到0b0010,对0b0010取反得到转换后的BIOS程序0b1101。
[0143] 相应地,步骤209中,PLD在接收到CPU发送的程序读取指令时,从该程序读取指令携带的预期存储地址中读取转换后的BIOS程序,根据该第五种转换方式对该转换后的BIOS程序进行还原,得到还原后的BIOS程序。
[0144] 假设当PLD接收到CPU发送的程序读取指令时,从该程序读取指令携带的存储地址中读取得到转换后的BIOS程序为0b1101,获取到的子字符串为0b0010。PLD将0b1101取反得到0b0010,将0b0010循环右移子字符串报时的数值,得到还原后的BIOS程序0b1000。
[0145] 需要说明的是,当PLD在CPU写入BIOS程序时,对该BIOS程序进行了循环左移,则PLD在读取到转换后的BIOS程序后,需要对该转换后的BIOS程序进行循环右移,以还原该转换后的BIOS程序;当PLD在CPU写入BIOS程序时,对该BIOS程序进行了循环右移,则PLD在读取到转换后的BIOS程序后,需要对该转换后的BIOS程序进行循环左移,以还原该转换后的BIOS程序。
[0146] 请参考图9,其示出了本申请一实施例提供的第二种程序读写方法的流程图,该程序读写方法可以应用于图1A所示的计算机设备中,该程序读写方法包括以下步骤:
[0147] 步骤901,计算机设备中的PLD接收计算机设备中的CPU发送的BIOS程序和该BIOS程序在BIOS芯片中的预期存储地址,该BIOS程序用于供CPU执行以完成计算机设备的初始化。
[0148] 具体地,请参考步骤201中的描述,在此不作赘述。
[0149] 步骤902,PLD读取与PLD相连的存储芯片中存储的字符串。
[0150] 具体地,请参考步骤202中的描述,在此不作赘述。
[0151] 步骤903,PLD根据字符串对预期存储地址进行转换以获得转换后的存储地址,其中,转换后的存储地址不同于预期存储地址。
[0152] 可选的,PLD在对预期存储地址进行转换时,可以先确定该预期存储地址的转换位数i,对该预期存储地址中的最后i位进行转换,得到转换后的存储地址。其中,i为正整数。这样,PLD无需对预期存储地址包括的所有数据进行转换,节省了PLD对预期存储地址进行转换时所消耗的处理资源。
[0153] 其中,PLD确定预期存储地址的转换位数,包括:PLD获取BIOS芯片的位宽和存储容量;根据该位宽和存储容量确定该预期存储地址的转换位数i;或者,PLD获取固化在该PLD中的转换位数i。
[0154] 具体地,PLD获取BIOS芯片的位宽和存储容量,包括:PLD通过与BIOS芯片之间的公共接口获取BIOS芯片的块大小、块数量和位宽,根据该块大小和该块数量计算该BIOS芯片的存储容量。其中,块数量通常为2的整数次幂。假设BIOS芯片的块大小是128千字字节(K),块数量为26=64,则该BIOS芯片的存储容量为128K*64=213K=8兆字节(M)。
[0155] 需要说明的是,为了描述方便,下文中将预期存储地址中的最后i位描述为待转换的预期存储地址。
[0156] 可选地,PLD在对待转换的预期存储地址进行转换之前需要从字符串中获取BIOS程序对应的子字符串,根据该子字符串对该待转换的预期存储地址进行转换以获得转换后的存储地址。
[0157] PLD获取该BIOS程序对应的子字符串,包括:PLD从字符串中获取当前一条BIOS程序对应的一条子字符串;或者,PLD从字符串中获取当前一条BIOS程序对应的多条子字符串。
[0158] 其中,PLD从字符串中获取当前一条BIOS程序对应的一条子字符串的描述参见步骤203中的描述,在此不作赘述。
[0159] 当PLD从字符串中获取当前一条BIOS程序对应的多条子字符串时,PLD将待转换的预期存储地址划分为至少两段子地址,从字符串中获取每段子地址对应的一条子字符串。PLD在将待转换的预期存储地址划分为至少两段子地址时,划分得到的子地址的位数可以相同也可以不同,本实施例不对PLD划分子地址的方式,以及,划分得到的子地址的位数作限定。
[0160] PLD从字符串中获取每段子地址对应的一条子字符串的实现方式包括但不限于以下实现方式:
[0161] 在第一种实现方式中,PLD确定预设窗口长度的滑动窗口的起始位置,利用该滑动窗口从字符串中截取当前一段子地址对应的子字符串,所截取的子字符串的位数与预设窗口长度相等,然后,PLD将该滑动窗口按照字符串由低位到高位的顺序滑动预设步长。其中,滑动窗口的起始位置可以为字符串的最后一位,也可以为该字符串的任意一位,本实施例不作限定。
[0162] 假设PLD中的寄存器中的字符串如图3所示,PLD第一次接收到的BIOS程序的待转换的预期存储地址为0x000000000001,PLD将该待转换的预期存储地址划分为第一段子地址0001、第二段子地址0000、第三段子地址0000,滑动窗口的起始位置为字符串的最后一位,若该滑动窗口的预设窗口长度为4位字符,预设步长为1位字符,则根据图3可知,PLD从字符0开始截取到的第一段子地址对应的4位子字符串为1000;第二段子地址对应的4位字符串为0100;第三段子地址对应的4位子字符串为0010。
[0163] 在第二种实现方式中,PLD根据抽取规则从字符串中抽取每段子地址对应的一条子字符串。
[0164] 抽取规则可以为PLD从字符串的起始字符开始,沿着预设方向每隔预设位数抽取一位字符,直到得到的字符的位数与子地址的位数相同时为止。其中,预设位数远小于字符串的位数,起始字符的位置是根据上一段子地址对应的子字符串的最后一位字符的位置确定的,若当前一段的子地址是第一条BIOS程序的待转换的预期存储地址中的第一段子地址,则该起始字符可以为字符串的第一位,或者,字符串的最后一位,或者,字符串的任意一位。
[0165] 假设PLD中的寄存器中的字符串如图3所示,当PLD第一次接收到BIOS程序,且该BIOS程序的待转换的预期存储地址的第一段子地址为4位时,PLD从字符串的最后一位字符开始,沿着字符串的排列方向由后向前每间隔2位抽取一个字符,得到该子地址对应的子字符串0110,然后,PLD将间隔两位对应的字符作为下一段子地址的起始字符。
[0166] 步骤904,PLD将BIOS程序存储至转换后的存储地址。
[0167] 步骤905,计算机设备中的PLD接收计算机设备中的CPU发送的程序读取指令,并获取程序读取指令携带的预期存储地址,程序读取指令用于从BIOS芯片中读取BIOS程序。
[0168] 步骤906,PLD读取与PLD相连的存储芯片中存储的字符串。
[0169] 需要说明的是,为了保证PLD能够准确地还原存储在BIOS芯片中的BIOS程序,本步骤中PLD读取字符串的方式应当与步骤902中PLD读取字符串的方式相同。
[0170] 步骤907,PLD根据字符串对预期存储地址进行转换以获得转换后的存储地址,从转换后的存储地址中读取BIOS程序。
[0171] 其中,PLD根据字符串对预期存储地址进行转换的描述与步骤903中PLD根据字符串对预期存储地址进行转换的描述相同,在此不作赘述。
[0172] 步骤908,PLD将BIOS程序发送至CPU。
[0173] 需要说明的是,步骤901-904可单独实现为程序写入方法的实施例;步骤905-908可单独实现为程序读取方法的实施例,本实施例不作限定。
[0174] 综上所述,本申请实施例提供的程序读写方法,通过PLD根据字符串对BIOS程序的预期存储地址进行转换以获得转换后的存储地址,并将BIOS程序存储至转换后的存储地址,使得BIOS芯片中存储的BIOS程序经过地址散列处理,这样,除了开发人员之外的人员无法通过获取BIOS芯片来获取到原始的BIOS程序,解决了BIOS芯片中存储原始的BIOS程序,导致该原始的BIOS程序的安全性不高的问题,达到了提高BIOS芯片中存储的BIOS程序的安全性的效果。
[0175] 下面对PLD对待转换的预期存储地址进行转换时的具体转换过程作描述:
[0176] 在步骤903中PLD获取到BIOS程序对应的子字符串后,根据该子字符串对待转换的预期存储地址进行转换,具体包括:PLD以子字符串为第一索引,以待转换的预期存储地址包括的数据为第二索引,在地址映射表中查询转换后的存储地址;其中,地址映射表是二维索引表,且存储有字符串和待转换的预期存储地址包括的数据对应的转换后的存储地址。该地址映射表是通过硬件编程语言固化在该PLD中的。需要说明的是,该地址映射表可以与图2所示的实施例中的程序映射表相同,也可以与该程序映射表不同,本本实施例不作限定。
[0177] 需要说明的是,为了保证CPU在请求读取存储器中的BIOS程序时,PLD能够准确地获取原始的BIOS程序,不同的待转换的预期存储地址对应的转换后的存储地址不同。
[0178] 当PLD将待转换的预期存储地址划分为至少两段子地址时,PLD以子字符串为第一索引,以待转换的预期存储地址包括的数据为第二索引,在地址映射表中查询转换后的存储地址,包括:对于每段子程序,以该子地址对应的子字符串为第一索引,以该子地址包括的数据为第二索引,在地址映射表中查询转换后的子地址,根据每段转换后的子地址确定转换后的存储地址。
[0179] 假设PLD中的地址映射表如上表一所示,此时,表一中的第一行表示每段子地址包括的数据,第一列表示子字符串,且为了保证PLD能够准确地获取到BIOS程序,表一中每一行转换后的子地址之间互不重复。在PLD接收到的待转换的存储地址中的一段子地址包括的数据为0x7,且获取到该子地址对应的子字符串为0x1时,查表可知转换后的子地址为0x0。需要说明的是,在实际实现时,子字符串和子地址包括的数据可以为其他进制数,比如:二进制、十进制等,本实施例不作限定。
[0180] 相应地,PLD在接收到CPU发送的程序读取指令时,对该程序读取指令中的预期存储地址进行转换的过程与PLD在写入BIOS程序,对该BIOS程序的预期转换地址进行转换的过程相同,在此不作赘述。
[0181] 可选的,步骤903中在PLD获取到BIOS程序对应的子字符串后,PLD根据该子字符串对待转换的预期存储地址进行转换,还可包括以下转换方式:
[0182] 在第一种转换方式中,PLD对子字符串进行第一逻辑运算得到转换后的子字符串;利用转换后的子字符串对待转换的预期存储地址进行第二逻辑运算,得到转换后的存储地址。
[0183] 在第二种转换方式中,PLD对待转换的预期存储地址进行第三逻辑运算,利用子字符串对进行了第三逻辑运算的待转换的预期存储地址进行第四逻辑运算,得到转换后的存储地址。
[0184] 在第三种转换方式中,PLD对子字符串进行第五逻辑运算,得到转换后的子字符串;对待转换的预期存储地址进行第六逻辑运算,利用转换后的子字符串对进行了第六逻辑运算待转换的预期存储地址进行第七逻辑运算,得到转换后的存储地址。
[0185] 在第四种转换方式中,PLD利用子字符串对待转换的预期存储地址进行第八逻辑运算,得到转换后的存储地址。
[0186] 在第五种转换方式中,PLD采用第一种转换方式、第二种转换方式、第三种转换方式、第四种转换方式中的至少两种对待转换的预期存储地址进行转换,得到转换后的存储地址。
[0187] 需要说明的是,PLD在接收到CPU发送的程序读取指令时,对该程序读取指令中的预期存储地址进行转换的过程与PLD在写入BIOS程序,对该BIOS程序的预期转换地址进行转换的过程相同,在此不作赘述。
[0188] 请参考图10,其示出了本申请一实施例提供的第三种程序读写方法的流程图,该程序读写方法可以应用于图1A所示的计算机设备中,该程序读写方法包括以下步骤:
[0189] 步骤1001,计算机设备中的PLD接收该计算机设备中的CPU发送的BIOS程序和该BIOS程序在BIOS芯片中的预期存储地址,该BIOS程序用于供CPU执行以完成计算机设备的初始化。
[0190] 具体地,详见步骤201,在此不作赘述。
[0191] 步骤1002,PLD读取与该PLD相连的存储芯片中存储的字符串。
[0192] 具体地,详见步骤202,在此不作赘述。
[0193] 步骤1003,PLD根据字符串对BIOS程序进行转换以获得转换后的BIOS程序。
[0194] 具体地,PLD根据字符串对BIOS程序进行转换以获得转换后的BIOS程序的描述与图2所述的实施中PLD根据字符串对BIOS程序进行转换以获得转换后的BIOS程序的描述相同,在此不作赘述。
[0195] 步骤1004,PLD根据字符串对预期存储地址进行转换以获得转换后的存储地址。
[0196] 具体地,PLD根据字符串对预期存储地址进行转换以获得转换后的存储地址的描述与图9所述的实施中PLD根据字符串对预期存储地址进行转换以获得转换后的存储地址的描述相同,在此不作赘述。
[0197] 步骤1005,PLD将转换后的BIOS程序存储至转换后的存储地址。
[0198] 步骤1006,计算机设备中的PLD接收计算机设备中的CPU发送的程序读取指令,并获取程序读取指令携带的预期存储地址,程序读取指令用于从BIOS芯片中读取BIOS程序。
[0199] 步骤1007,PLD读取与PLD相连的存储芯片中存储的字符串。
[0200] 本步骤中PLD读取字符串的方式与步骤1002中PLD读取字符串的方式相同。
[0201] 步骤1008,PLD根据字符串对预期存储地址进行转换以获得转换后的存储地址。
[0202] 本步骤中PLD根据字符串对预期存储地址进行转换的方式,与步骤1004中PLD根据字符串对预期存储地址进行转换的方式相同,在此不作赘述。
[0203] 步骤1009,从转换后的存储地址中读取转换后的BIOS程序,并根据字符串对转换后的BIOS程序进行还原以获得还原后的BIOS程序。
[0204] 具体地,PLD根据字符串对转换后的BIOS程序进行还原以获得还原后的BIOS程序的描述与图2所述的实施中PLD根据字符串对BIOS程序进行还原以获得转换后的BIOS程序的描述相同
[0205] 步骤1010,PLD将还原后的BIOS程序发送至CPU。
[0206] 需要说明的是,步骤1001-1005可单独实现为程序写入方法的实施例;步骤1006-1010可单独实现为程序读取方法的实施例,本实施例不作限定。
[0207] 综上所述,本申请实施例提供的程序读写方法,通过PLD根据字符串对BIOS程序和该BIOS程序的预期存储地址均进行转换,并将转换后的BIOS程序存储至转换后的存储地址,提高了除开发人员之外的人员还原BIOS程序的难度,达到了进一步提高BIOS芯片中存储的BIOS程序的安全性的效果。
[0208] 请参考图11,其示出了本申请一个实施例提供的程序写入装置的框图。该程序写入装置可以通过软件、硬件或者两者的结合实现成为计算机设备的全部或者一部分。该程序写入装置可以包括:接收单元1110、读取单元1120、转换单元1130、存储单元1140。
[0209] 接收单元1110,用于接收计算机设备中的CPU发送的BIOS程序,该BIOS程序用于供CPU执行以完成计算机设备的初始化。
[0210] 读取单元1120,用于读取与PLD相连的存储芯片中存储的字符串。
[0211] 转换单元1130,用于根据字符串对BIOS程序进行转换以获得转换后的BIOS程序,其中,转换后的BIOS程序不同于转换前的BIOS程序。。
[0212] 存储单元1140,用于将转换后的BIOS程序存储至计算机设备中的BIOS芯片中。
[0213] 相关细节可结合参考图2所述的方法实施例。
[0214] 需要说明的是,上述的接收单元1110、读取单元1120、转换单元1130、存储单元1140可以通过计算机设备中的PLD来实现。
[0215] 可选的,接收单元1110,还用于接收计算机设备中的CPU发送的BIOS程序和BIOS程序在BIOS芯片中的预期存储地址。
[0216] 读取单元1120,还用于读取与PLD相连的存储芯片中存储的字符串。
[0217] 转换单元1130,还用于根据字符串对预期存储地址进行转换以获得转换后的存储地址,其中,转换后的存储地址不同于预期存储地址。
[0218] 存储单元1140,还用于将BIOS程序存储至转换后的存储地址。
[0219] 相关细节可结合参考图9的方法实施例。
[0220] 可选的,接收单元1110,还用于接收计算机设备中的CPU发送的BIOS程序和BIOS程序在BIOS芯片中的预期存储地址。
[0221] 读取单元1120,还用于读取与PLD相连的存储芯片中存储的字符串。
[0222] 转换单元1130,还用于根据字符串对预期存储地址进行转换以获得转换后的存储地址,并根据字符串对BIOS程序进行转换以获得转换后的BIOS程序,其中,转换后的存储地址不同于预期存储地址;转换后的BIOS程序不同于转换前的BIOS程序。
[0223] 存储单元1140,还用于将转换后的BIOS程序存储至转换后的存储地址。
[0224] 相关细节可结合参考图10的方法实施例。
[0225] 请参考图12,其示出了本申请一个实施例提供的程序读取装置的框图。该程序读取装置可以通过软件、硬件或者两者的结合实现成为计算机设备的全部或者一部分。该程序读取装置可以包括:接收单元1210、读取单元1220、还原单元1230、发送单元1240。
[0226] 接收单元1210,用于接收计算机设备中的CPU发送的程序读取指令,该程序读取指令用于从计算机设备中的BIOS芯片中读取原始BIOS程序,该原始BIOS程序用于供CPU执行以完成计算机设备的初始化。
[0227] 读取单元1220,用于读取与PLD相连的存储芯片中存储的字符串,并从BIOS芯片中读取转换后的BIOS程序。
[0228] 还原单元1230,用于根据字符串对转换后的BIOS程序进行还原以获得还原后的BIOS程序,其中,转换后的BIOS程序是PLD根据字符串对原始BIOS程序进行转换并存储至BIOS芯片中的;转换后的BIOS程序不同于原始BIOS程序。
[0229] 发送单元1240,用于将还原后的BIOS程序发送至CPU。
[0230] 相关细节可结合参考图2所述的方法实施例。
[0231] 需要说明的是,上述的接收单元1210、读取单元1220、还原单元1230、发送单元1240可以通过计算机设备中的PLD来实现。
[0232] 可选的,接收单元1210,还用于接收计算机设备中的CPU发送的程序读取指令,并获取程序读取指令携带的预期存储地址。
[0233] 读取单元1220,还用于读取与PLD相连的存储芯片中存储的字符串。
[0234] 该程序读取装置可以包括:转换单元1250,用于根据字符串对预期存储地址进行转换以获得转换后的存储地址,其中,转换后的存储地址不同于预期存储地址。
[0235] 读取单元1220,还用于从转换后的存储地址中读取BIOS程序。
[0236] 发送单元1240,还用于将BIOS程序发送至CPU。
[0237] 相关细节可结合参考图9的方法实施例。
[0238] 需要说明的是,上述的转换单元1250可以通过计算机设备中的PLD来实现。
[0239] 可选的,接收单元1210,还用于接收计算机设备中的CPU发送的程序读取指令,并获取程序读取指令携带的预期存储地址。
[0240] 读取单元1220,还用于读取与PLD相连的存储芯片中存储的字符串。
[0241] 转换单元1250,还用于根据字符串对预期存储地址进行转换以获得转换后的存储地址。
[0242] 该读取单元1220,还用于从转换后的存储地址中读取转换后的BIOS程序。
[0243] 还原单元1230,还用于根据字符串对转换后的BIOS程序进行还原以获得还原后的BIOS程序。
[0244] 发送单元1240,还用于将还原后的BIOS程序发送至CPU。
[0245] 相关细节可结合参考图10的方法实施例。
[0246] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
[0247] 本领域普通技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0248] 在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0249] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0250] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈