找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 28205|回复: 6

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
: l% l- k- m. {. J   希望大家一起交流交流。! v- J: |$ K/ x$ n
   这是最简单一个程序,在屏幕上显示:  "Hello World"" N, c& w+ r9 x) V# H" x3 p  Q
   这是直接使用gST-Conout功能实现。- `( e1 G/ q5 v& T$ d& T
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
+ `$ G+ t( A& W4 s0 P0 T, e8 S
! v3 c- @" L& |1 s/ K   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
) }& d, ]8 ?+ g5 t: s   Out->OutputString (Out, L"Hello World");  //实现输出$ \: c" m  U$ L! N& d( q0 P( X
$ W& N" f- ~0 n' U! h/ k( K; Z3 n
   小弟不知道如何调用EFI封装好的这些输出输入库。9 @* o8 A' T) i* @9 l* f5 ?; {9 o
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1374

EFI Hello World

发表于 2008-6-24 16:38:48 | 显示全部楼层
PrintXY是EfiPrintLib里的东西,看看你的程序的inf文件,有没有把EfiPrintLib加进来。
回复

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
2 L! E" B2 m/ y加入这个PrintLibLite库后还是不行。6 V! j$ U1 n1 p! j3 Z8 U
编译执行不会有错,但他就是不显示。# }# d$ `# x8 L
现在我将print.c, print.h放到同一个目前,) g2 T  H+ A1 @% Z+ F; n
直接写到make.inf中。就可以显示了。. d& r8 T0 V6 y
当然,print.h要改变一下,不然找不到函数的申明。8 y+ t# v: b+ X

. Q7 C) f* }( l9 _/ J) z明天了如何输入,但不明白为什么用printliblite不能得到输入功能。/ U* V3 j' m9 M$ M  w3 `
如果是生成PrintLibLite的inf文件部分。
8 Q8 {; s! q* J& }0 \用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。% b1 _' a; l4 b+ X$ A2 Z
[defines]+ k2 B6 Z3 I) N# S% i' O
BASE_NAME           = PrintLibLite' T  Q  G! s% R7 X5 m  K; v. a+ _
COMPONENT_TYPE      = LIBRARY- c. B: H" h0 y1 L4 D, z1 y. o5 G
3 K# v2 f1 m4 _1 s! j
[sources.common]
) F/ ?( h$ o4 H9 g+ a% B  BoxDraw.c
0 F3 T: X' C- E( D7 E  Print.c# d( ]$ A1 c. Q2 a
  Print.h
8 Y( P$ w( f' o1 U. b  StdErr.c; U- [" h! r' O3 E1 U  p
  Unicode\PrintWidth.h
, R) |0 M7 ?, w( S  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1349

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz  L1 H& M1 p3 t! y1 q# r
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,. M: W! g& l# u- t
可能是其他原因,显示了但没有被看到,显示到其他的page中了。
6 {$ W6 F/ J  Z4 {9 p重写一个print的东西,就可以输出。/ T& i. A( C2 P) r+ T8 Y

- ]% I+ W* _. E) Hprint()是在grouph,可以正常使用。
回复

使用道具 举报

发表于 2012-4-25 16:51:59 | 显示全部楼层

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
1 G$ P/ ~0 E$ _0 |% Ubuild...7 @% L, k/ @) t5 X. J& ^5 O5 V6 _
:error 7000:Failed to start command
! g. g. R1 N& s" b4 _                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]9 ]7 o3 ^, w+ O5 U9 m; m5 f8 s
( z  g$ @( F1 s) u3 D0 L
build...& E" ]" m$ ^* n5 }% x3 O0 F
  : error F0002:Failed to build module
- l" r8 o! w+ `- s) {/ B0 l9 C0 {         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]. t. V4 J2 ?( V6 T
6 i, N# Y2 _' T8 w$ y
请指教啊
回复

使用道具 举报

发表于 2012-4-28 07:56:32 | 显示全部楼层

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
% |/ H9 w* v. mlibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
/ o' X( ~8 v: h. _( A2 Y0 u( }okie referenced in function __Print
" N6 T0 n9 I! o9 M! y% [% vlibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
8 Y9 n& P9 `$ ^" \% r+ E- s* Feck_cookie@4 referenced in function __Print9 w4 f: d6 Y7 J- n! }7 o6 ]
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro; @/ R4 H8 P9 M
r LNK1120: 2 unresolved externals0 O/ b" z" `8 B) }6 C5 L% {
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
+ [6 [, a6 F2 A+ h6 Q\link.EXE"' : return code '0x460'
8 P+ O& E) v( M. N- U7 NStop.
4 t# |; A; f) T! M3 g/ h$ U* a3 @* K' r
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2026-2-24 09:03 , Processed in 0.062368 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表