我的BIOS之行4-setup中建立选项
前言
目前我在使用的是AMI的visualeBIOS做开发,主要做笔记本的BIOS研发工作,前期一直在学习中,BSP的工作放在了一边,今天主要是向大家介绍如何在最新的UEFI2.0中加入相关setup选项
新建一个module
作为老司机,应该自己建立一个module来解释,那么你可以自己在veb文件中添加一个module,当然也可以直接用IDE自带的进行新建,components(右击)->add component->new->components->empty component wizard
在这个过程中需要建立的是sdl文件,cif文件就可以了,不用建其他的,当然你也可以建立起来,到时候删除也是可以的。
如下图
我们需要建的是一个uni文件,用于解释item的名字说明。sd文件来添加setup选项。在这里不解释这2个文件的具体含义了,如果有机会,会单独出一文来具体说明这些文件在我们的BIOS中是如何工作的
首先我们先来看我所创建的SDL文件(不理解这些文件的可以到第2篇文章去找)
sdl中添加sd\uni文件
TOKEN
Name = "HomeWork_SUPPORT"
Value = "1"
Help = "Main switch to enable HomeWork support in Project"
TokenType = Boolean
TargetEQU = Yes
TargetMAK = Yes
Master = Yes
End
PATH
Name = "HomeWork_DIR"
End
ELINK
Name = "$(HomeWork_DIR)/HomeWork.sd"
Parent = "SETUP_DEFINITIONS"
Priority = 9
InvokeOrder = AfterParent
End
ELINK
Name = "$(HomeWork_DIR)/HomeWork.uni"
Parent = "SetupStringFiles"
InvokeOrder = AfterParent
End
"HomeWork_DIR"是你module所在的文件位置, 然后你需要添加Elink来将你的uni与sd加到一个SetupDefinitions.h中去,这边定义了所有的sd文件。
如何添加sd文件描述
你可以在你的module中右击->add component->选uni文件类型即可
添加如下内容:
#include "VFR.uni"
#string STR_HOMEWORK_FORM #language eng "Devices ID xxxx"
#string STR_HOMEWORK_FORM_HELP #language eng "it is my homework"
#string STR_MODULE_ITEM_PROMPT #language eng "HomeWork module select"
#string STR_MODULE_ITEM_HELP #language eng "it is homework select"
#string STR_HOMEWORK_VALUE0 #language eng "value 1"
#string STR_HOMEWORK_VALUE1 #language eng "value 2"
#string STR_HOMEWORK_VALUE2 #language eng "value 3"
这样你就已经将几个string的字符设置完成了。
同时你在sd文件中添加一个setup的define(HomeWorkoption),当然还有其他的方式可以添加,在后面会慢慢解释
#ifdef SETUP_DATA_DEFINITION
UINT8 HomeWorkoption;
#endif
#ifdef ADVANCED_FORM_SET
#ifdef FORM_SET_GOTO
// Define goto commands for the forms defined in this file
grayoutif ideqval SYSTEM_ACCESS.Access == SYSTEM_PASSWORD_USER;
oneof varid = SETUP_DATA.HomeWorkoption,
prompt=STRING_TOKEN(STR_MODULE_ITEM_PROMPT),
help=STRING_TOKEN(STR_MODULE_ITEM_HELP),
option text=STRING_TOKEN(STR_HOMEWORK_VALUE0),value=0,flags=DEFAULT|RESET_REQUIRED;
option text=STRING_TOKEN(STR_HOMEWORK_VALUE1),value=1,flags=RESET_REQUIRED;
option text=STRING_TOKEN(STR_HOMEWORK_VALUE2),value=1,flags=RESET_REQUIRED;
endoneof;
endif;
#endif //FORM_SET_FORM
#endif //end ADVANCED_FORM_SET
ifdef ADVANCED_FORM_SET这个呢就是告知BIOS你想把item放在哪个大的from set底下,如(BIOS选项中的Main Advanced Boot等),这样就成功的将一个可以修改setup选项的module添加进来了。
作者:King_Alex【The Horizon Blog】
出处:http://www.cnblogs.com/samuelwnb/
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
出处:http://www.cnblogs.com/samuelwnb/
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任