一种多设备信息动态显示方法、电子设备及存储介质与流程
本发明涉及计算机固件,尤其涉及一种多设备信息动态显示方法、电子设备及存储介质。
背景技术:
1、nvme(non-volatile memory express)固态硬盘作为高速存储设备,通常需要通过option rom(option read-only memory,可选只读存储器)进行早期初始化。传统的nvmeoption rom主要关注于硬件的初始化和启动服务,缺乏向用户反馈设备详细状态信息的能力。虽然统一可扩展固件接口(unified extensible firmware interface,uefi)规范提供了人机接口基础架构协议(human interface infrastructure,hii)用于实现固件的图形化配置界面,但现有的nvme option rom在实现hii支持时存在以下显著缺陷:
2、缺乏动态适配能力,现有方案通常在编译时使用固定的guid(全局唯一标识符)注册hii表单。当系统中存在多个nvme驱动器时,由于guid冲突,会导致hii数据库中的表单被覆盖,存在显示多块硬盘的信息错误的问题;设备路径僵化,传统的option rom往往绑定固定的设备路径,无法在运行时根据实际检测到的nvme控制器动态生成对应的hii设备路径,导致开机运行时固件的图形化配置界无法准确定位和展示特定物理设备的信息;兼容性差,适配不同cpu厂商(如amd、intel平台或海光)的uefi实现对hii协议的支持细节存在差异,现有option rom缺乏针对不同uefi定制版本的兼容性适配策略,容易出现界面乱码或注册失败的问题。
技术实现思路
1、本发明的目的是为了解决现有技术中存在的多块同型号nvme硬盘在运行图形化配置界面中因guid冲突导致的信息覆盖或无法显示、无法根据运行时实际硬件状态动态构建设备路径,导致界面与物理设备无法精准绑定、不同厂商定制化uefi环境下兼容性差、易出现显示异常的问题,提出一种多设备信息动态显示方法、电子设备及存储介质。
2、为了实现上述目的,本发明采用了如下技术方案:
3、一方面,本发明提供一种多设备信息动态显示方法,该方法包括:
4、在系统启动阶段,读取nvme驱动器的硬件序列号,生成全局唯一的动态guid;
5、基于动态guid,构建标准hii设备路径;
6、在option rom初始化时,使用动态guid替换原始硬编码的guid字段,动态修补hii表单数据;
7、将修补后的hii表单数据及标准hii设备路径注册至uefi全局hii数据库,触发固件的图形化配置界面解析并独立显示每个nvme驱动器的只读属性信息。
8、作为本发明进一步优选的方案,在系统启动前,进行环境搭建和数据结构定义,方式如下:
9、在头文件xxxxxoptionromhii.h中定义核心数据结构,定义optionrom_dev结构体,用于存储每个nvme设备的私有数据,包括nvme驱动器的硬件序列号、nvme驱动器的硬件型号以及nvme驱动器专属guid和nvme驱动器路径。
10、作为本发明进一步优选的方案,所述生成全局唯一的动态guid的方式如下:
11、读取nvme驱动器的硬件序列号,利用crc32算法计算哈希值,并获取系统当前时间的纳秒级数值作为随机因子;
12、将哈希值与随机因子混合,填充至guid模板的data1和data4字段,生成全局唯一的动态guid。
13、作为本发明进一步优选的方案,所述利用crc32算法计算哈希值的过程包括:
14、初始化,将crc寄存器设置为初始值0xffffffff;
15、逐字节处理输入数据,对输入数据的每一个字节,执行以下操作:
16、将当前字节左移后,与crc寄存器进行异或运算,对该字节的比特位从最高位到最低位依次处理;
17、对每个比特位执行一次迭代,如果crc的最高位为1,将crc左移1位,然后与多项式0x04c11db7进行异或运算;如果crc的最高位为0,仅将crc左移1位;
18、将crc寄存器的值与0xffffffff进行异或运算,得到最终的crc32校验值。
19、作为本发明进一步优选的方案,所述构建标准hii设备路径的过程如下:
20、基于动态guid,复制全局模板mhiivendordevicepath,将模板中的vendordevicepath.guid替换为输入的动态guid,通过api使用安装协议接口将mhiivendordevicepath注册到系统中,构建以hardware_device_path开头、end_device_path结尾的标准hii设备路径。
21、作为本发明进一步优选的方案,所述动态修补hii表单数据包括:
22、遍历optionrombin文件中的hii表单数据,查找类型为efi_hii_package_forms的数据;
23、在hii表单数据中定位formset操作码;
24、使用内存拷贝将硬编码的原始guid字段替换动态guid;
25、调用hiiaddpackages或hiinewpackagelist将修补后的hii表单数据注册进hii数据库。
26、作为本发明进一步优选的方案,修补后的hii表单数据注册进hii数据库前,通过统一可扩展固件接口加载修补后的hii表单,探测当前统一可扩展固件接口固件厂商特征,若检测到内存受限环境,则调整hii字符串编码方式或简化hii表单数据结构。
27、另一方面,本发明提供一种电子设备,包括:至少一个处理器;至少一个存储器,用于存储至少一个程序;当至少一个所述程序被至少一个所述处理器执行时实现如前面所述的多设备信息动态显示方法。
28、另一方面,本发明还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行如前面所述的多设备信息动态显示方法。
29、与现有技术相比,本发明的有益效果是:本发明通过动态guid生成机制,确保即使插入多块同型号nvme硬盘,其动态guid也绝对唯一,实现多设备信息的独立完整显示,彻底解决多设备冲突问题;在运行时动态构建hii设备路径,路径精准绑定,使配置界面能够准确定位到具体的nvme硬盘,提升了固件配置界面的准确性,有效兼容标准uefi,实现高兼容性与稳定性,避免了界面乱码、注册失败等兼容性问题,降低了固件适配成本。
1.一种多设备信息动态显示方法,其特征在于,包括:
2.根据权利要求1所述的多设备信息动态显示方法,其特征在于,在系统启动前,进行环境搭建和数据结构定义,方式如下:
3.根据权利要求1所述的多设备信息动态显示方法,其特征在于,所述生成全局唯一的动态guid的方式如下:
4.根据权利要求3所述的多设备信息动态显示方法,其特征在于,所述利用crc32算法计算哈希值的过程包括:
5.根据权利要求1所述的多设备信息动态显示方法,其特征在于,所述构建标准hii设备路径的过程如下:
6.根据权利要求1所述的多设备信息动态显示方法,其特征在于,所述动态修补hii表单数据包括:
7.根据权利要求6所述的多设备信息动态显示方法,其特征在于,修补后的hii表单数据注册进hii数据库前,通过统一可扩展固件接口加载修补后的hii表单,探测当前统一可扩展固件接口固件厂商特征,若检测到内存受限环境,则调整hii字符串编码方式或简化hii表单数据结构。
8.一种电子设备,其特征在于,包括:
9.一种计算机可读存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令用于执行如权利要求1至7中任意一项所述的多设备信息动态显示方法。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com