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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。' u* z8 M: r$ z
   希望大家一起交流交流。" b4 A1 W! q9 ~3 T$ ]2 N
   这是最简单一个程序,在屏幕上显示:  "Hello World"+ s$ @& k1 P# Z' N  {7 a  j
   这是直接使用gST-Conout功能实现。+ C, S! B: M! ~5 L( @% C* X" ?. y
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
, Y& A. m9 w! t1 e4 q5 m; d- \' f( T/ i3 H% H
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 05 {  O1 Q4 O" c8 }/ N
   Out->OutputString (Out, L"Hello World");  //实现输出
( [8 E) }, [+ G6 J  c* f/ M/ F9 M- r: U) e
   小弟不知道如何调用EFI封装好的这些输出输入库。7 D+ {9 H) `% b# V7 ?
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 513

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。+ j% l. d/ [$ V2 f. O& T- g! m9 t
加入这个PrintLibLite库后还是不行。' P1 B$ P, W8 r% B
编译执行不会有错,但他就是不显示。
# W: `, Q" P! J5 r4 ?现在我将print.c, print.h放到同一个目前,
) |  T" q4 d6 i( F( Q/ Z( ?* L直接写到make.inf中。就可以显示了。! q) m* F7 ~- o( ]& ]  _$ `
当然,print.h要改变一下,不然找不到函数的申明。
; w1 O0 {' N" {
& w* R% e( [! z8 q% g# A0 ~明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
1 S7 ?3 _5 X9 T5 t% _如果是生成PrintLibLite的inf文件部分。) H+ b+ U% a7 ]) `" d  b  }
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
: m# z+ Y3 I& c( i2 A[defines]
) e, m# W8 y1 }+ m. o5 o* UBASE_NAME           = PrintLibLite9 y* i1 V; Z+ z
COMPONENT_TYPE      = LIBRARY
' J- Y# O* l$ Q# f6 c
3 t9 T- G+ d: ~0 G# S[sources.common]: g0 M3 `! o2 `( x
  BoxDraw.c: E9 ?$ q. g. [6 |1 x& Y% ]! H
  Print.c
0 G! |3 c2 X* w: X+ J  Print.h
+ Y  Y6 H( k$ I0 q: {% A  StdErr.c
. _+ ^$ x3 p+ {- M! I% ]  Unicode\PrintWidth.h
( s# D3 |8 y4 {& V; J' Q  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 513

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz- W2 [& F2 U4 Z+ [
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
+ Z9 t& ~  [: ^4 d# e+ x可能是其他原因,显示了但没有被看到,显示到其他的page中了。8 Q' a% }" k# i, u) a' o
重写一个print的东西,就可以输出。  g, Y+ s) q1 j7 Z; j: L
% K. b: Q! E4 e4 j) I* ?9 `3 P
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
1 S2 l2 F- ^! N; g! a6 s* zbuild...
0 S% b  e4 Q- i1 Y, m+ a2 L :error 7000:Failed to start command
0 t4 |0 ^% {: {                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]9 v1 Q4 k- @0 ^4 j

+ }& k# }' ^5 Z! N; }: gbuild..." r8 ]) i1 W* H. J5 Y
  : error F0002:Failed to build module
' b' ?# W6 X: E! |$ _         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]- h) A9 a* c$ f7 R5 T) ^

4 Z( c+ T) |) D) b0 j请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
; h7 ]! l. `) Zlibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co3 v) u8 G( u* P4 \- G
okie referenced in function __Print* n9 }3 f* {* k0 T: c3 J
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch& K4 L1 R9 C7 ]: C2 [- [' H
eck_cookie@4 referenced in function __Print* l1 M" P% l0 O, k$ n  s: w
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro+ \+ l  }. x7 u/ Y  A
r LNK1120: 2 unresolved externals* B8 H, U9 Y8 ], \0 _
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
( @$ X0 Q+ m8 L\link.EXE"' : return code '0x460'5 W" f2 a' X: H# I. s4 e+ i
Stop.0 D# o7 f( q! w( o: U

! {# Z5 s" h: |4 D请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 06:04 , Processed in 0.023301 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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