本发明涉及的是一种基于基板管理控制器的BIOS闪存数据读写系统及方法。
背景技术:
在现有技术中,公知的技术是BMC是服务器主板上的基板管理控制器,其作用是利用虚拟的键盘、界面、鼠标、电源等为服务器提供远程管理功能。用户利用BMC监视服务器的物理特征,如各部件的温度、电压、风扇工作状态、电源供应以及机箱入侵等。
BIOS是一组固化到服务器主板上一个ROM芯片上的程序,它保存着服务器最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。其主要功能是为服务器提供最底层的、最直接的硬件设置和控制。目前,BIOS已成为一些病毒和木马等攻击的目标,一旦BIOS被破坏,其后果不堪设想。,这是现有技术所存在的不足之处。
技术实现要素:
本发明的目的就是针对现有技术所存在的不足,而提供一种基于基板管理控制器的BIOS闪存数据读写系统及方法,实现对BIOS闪存(BIOS Flash)的操作,该方案基于BMC SPI接口的BIOS控制器的数据读写,在BMC中利用SPI接口的控制器与BIOS进行交互,进而由BMC读取BIOS代码进行完整性的验证,确保BIOS的完整性和没有被植入恶意代码,从而保证了系统平台执行环境的可信。
本方案是通过如下技术措施来实现的:一种基于基板管理控制器的BIOS闪存数据读写系统,包括ARM处理器,BIOS控制器,其特征在于:ARM处理器与先入先出堆栈模块连接,先入先出堆栈模块与BIOS控制器连接,BIOS控制器与BIOS闪存连接,
所述的先入先出堆栈模块包括:
命令寄存器,用于存放ARM处理器发出的命令;
地址寄存器,用于存放对BIOS闪存进行操作的起始地址;
长度寄存器,用于存放对BIOS闪存进行操作的具体字节数;
写入数据寄存器,用于存放待写入BIOS闪存的具体数据;
读取数据寄存器,用于存放从BIOS闪存读取的具体数据;
所述的BIOS控制器与BIOS闪存通过SPI接口连接。
ARM处理器与先入先出堆栈模块通过AMBA总线连接。
一种基于基板管理控制器的BIOS闪存数据读写方法,包括如下步骤:
1)启动BIOS控制器;
2)ARM处理器把操作命令、地址、长度发送到先入先出堆栈模块;
3)BIOS控制器读取先入先出堆栈模块的命令,判断是对BIOS闪存的具体操作,确定是擦除、写入或者读取,并获取操作BIOS闪存的起始地址和操作BIOS闪存的数据长度;如果是写入,则进入步骤4),如果是擦除或者读取则进入步骤5)
4)BIOS控制器读取先入先出堆栈模块中的待写入BIOS闪存的具体数据,然后进入步骤5);
5)BIOS控制器把从先入先出堆栈模块获取的命令、起始地址和数据长度转换成按bit位方式发送到BIOS闪存,如果是读取操作则进入步骤6);如果是擦除或者写入操作, BIOS控制器进行延时等待BIOS闪存操作完成,然后进入步骤8);
6)BIOS控制器把读取的BIOS闪存数据由bit位转换为字节的格式,发送回先入先出堆栈模块;
7)ARM处理器从先入先出堆栈模块取回数据;
8)操作结束。
本方案的有益效果可根据对上述方案的叙述得知,由于在该方案中有先入先出堆栈模块,先入先出堆栈模块包括:命令寄存器,用于存放ARM处理器发出的命令;地址寄存器,用于存放对BIOS闪存进行操作的起始地址;长度寄存器,用于存放对BIOS闪存进行操作的具体字节数;写入数据寄存器,用于存放待写入BIOS闪存的具体数据;读取数据寄存器,用于存放从BIOS闪存读取的具体数据;这样就可以实现BMC对BIOS闪存进行数据读写的完整性,提高了可信性。由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
图1为本发明具体实施方式的结构示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过一个具体实施方式,并结合其附图,对本方案进行阐述。
通过附图可以看出,本方案的基于基板管理控制器的BIOS闪存数据读写系统,包括ARM处理器,BIOS控制器,其特征在于:ARM处理器与先入先出堆栈模块FIFO连接,先入先出堆栈模块与BIOS控制器连接,BIOS控制器与BIOS闪存连接,其中BIOS控制器的SCLK脚与BIOS闪存的CLK引脚连接,BIOS控制器的SDO脚与BIOS闪存的WR引脚连接;BIOS控制器的SDI脚与BIOS闪存的RD引脚连接;BIOS控制器的CS脚与BIOS闪存的SEL引脚连接;SCLK:输出信号,作为SPI总线的时钟输出信号,控制BIOS Flash的时序;SDO:输出信号,作为SPI总线的数据输出信号,向BIOS Flash发送数据;SDI:输入信号,作为SPI总线的数据输入信号,从BIOS Flash接收数据;CS:输出信号,作为SPI总线的使能信号,用于选中BIOS Flash,使数据操作有效。
所述的先入先出堆栈模块包括:命令寄存器,用于存放ARM处理器发出的命令;地址寄存器,用于存放对BIOS闪存进行操作的起始地址;长度寄存器,用于存放对BIOS闪存进行操作的具体字节数;写入数据寄存器,用于存放待写入BIOS闪存的具体数据;读取数据寄存器,用于存放从BIOS闪存读取的具体数据;所述的BIOS控制器与BIOS闪存通过SPI接口连接。ARM处理器与先入先出堆栈模块通过AMBA总线连接。
一种基于基板管理控制器的BIOS闪存数据读写方法,包括如下步骤:
1)启动BIOS控制器;
2)ARM处理器把操作命令、地址、长度发送到先入先出堆栈模块;
3)BIOS控制器读取先入先出堆栈模块的命令,判断是对BIOS闪存的具体操作,确定是擦除、写入或者读取,并获取操作BIOS闪存的起始地址和操作BIOS闪存的数据长度;如果是写入,则进入步骤4),如果是擦除或者读取则进入步骤5)
4)BIOS控制器读取先入先出堆栈模块中的待写入BIOS闪存的具体数据,然后进入步骤5);
5)BIOS控制器把从先入先出堆栈模块获取的命令、起始地址和数据长度转换成按bit位方式发送到BIOS闪存,如果是读取操作则进入步骤6);如果是擦除或者写入操作, BIOS控制器进行延时等待BIOS闪存操作完成,然后进入步骤8);
6)BIOS控制器把读取的BIOS闪存数据由bit位转换为字节的格式,发送回先入先出堆栈模块;
7)ARM处理器从先入先出堆栈模块取回数据;
8)操作结束。
本发明并不仅限于上述具体实施方式,本领域普通技术人员在本发明的实质范围内做出的变化、改型、添加或替换,也应属于本发明的保护范围。