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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。& J0 [6 d, c) K+ T8 T
   希望大家一起交流交流。; Y4 [$ W/ D6 _5 ?9 ]5 p3 Z3 x
   这是最简单一个程序,在屏幕上显示:  "Hello World"
3 J$ Y  Q1 ?% O# F) ~' M   这是直接使用gST-Conout功能实现。
( S" o" `) a3 y8 h: C9 ^   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
9 }# I# h) B4 w0 R; C% n
9 S/ a5 d0 q  B. W6 f! {/ H   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
0 O6 s4 U/ ^; i. t0 V5 O   Out->OutputString (Out, L"Hello World");  //实现输出1 u' |, O/ l/ Q9 t' _
- @. i& q8 ?3 d* B
   小弟不知道如何调用EFI封装好的这些输出输入库。7 |, Z" `: J7 N4 D8 U
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1388

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。6 D2 h! K( g8 r  [2 h
加入这个PrintLibLite库后还是不行。* ?4 J. T6 W: b) q* N
编译执行不会有错,但他就是不显示。: w1 v! `5 S9 ^( z
现在我将print.c, print.h放到同一个目前,
6 ~3 q' n6 k& {! T1 p; n% R. c6 x直接写到make.inf中。就可以显示了。! F: V( ~% ~8 W' R" T
当然,print.h要改变一下,不然找不到函数的申明。
. d1 }3 v) t+ {: g
. y& B4 y# \& g4 v) c9 ?: Y明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
6 F3 r0 H* E% [0 |! F! p如果是生成PrintLibLite的inf文件部分。
6 G* [4 u8 q" @( y. d用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。3 y/ _0 ]7 o! s' ]4 D/ x+ @1 ^% B
[defines]
: ?' o- p% Y: b! m9 wBASE_NAME           = PrintLibLite
$ k$ m( x  s7 o6 E: ^COMPONENT_TYPE      = LIBRARY
6 S8 F" V% v9 Q# f* i: e: e' r. S
7 r6 ^7 a- ~9 c2 R; ]- h# Z3 ~[sources.common]
, P) Q* K7 Q1 }! ~  BoxDraw.c
# ]" E) b. o% @: J. h  Print.c: ~8 U3 k& U1 @- _# f- D2 `# u5 q- L
  Print.h( e2 L5 ~0 D# R0 y8 Z
  StdErr.c
. @: m4 X8 f: {, i* ^# }- i; {( q2 v  Unicode\PrintWidth.h3 T: }3 X( D6 x6 H" _1 b* y8 s
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1365

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz& b7 h5 v9 }9 j- C
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
3 l: ]3 E" U4 p% j2 x可能是其他原因,显示了但没有被看到,显示到其他的page中了。$ |! w0 Z; p% e0 q7 Z
重写一个print的东西,就可以输出。+ c  ?2 J4 v, x; f  @  S: D2 |
  P: |$ S" g0 k) ]
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
' f5 C& }2 M% zbuild...
) ~; h9 s9 z; b! R/ S$ G :error 7000:Failed to start command( _" \2 Q+ j( t$ a, c, a' @4 ~
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]- M3 F  g+ c( y
# M: T3 t! S/ }  C$ N2 z' \9 d
build...
9 K) A$ G( D1 S, o  : error F0002:Failed to build module
) l& }) Y: ?: [         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
$ E% H' r$ a$ J  o; A. \( X$ ?$ a9 H& k9 }! i/ z$ [- ]
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
+ R% o8 K, W0 J" Tlibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
! N: `+ q7 A6 Nokie referenced in function __Print- R$ H5 S! ^+ l: A: l9 O
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch, Z: o* f1 P4 `# N3 w
eck_cookie@4 referenced in function __Print
6 n6 s& C0 M' d4 cD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro: X1 n& t' t# V# ~5 G4 ^
r LNK1120: 2 unresolved externals6 t1 S4 X% p/ Y- c* I4 w
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
, t* n( c- U  ^; l\link.EXE"' : return code '0x460'1 `) {0 e/ a  ]* n: I% x; r& I$ Y, y
Stop.% t, i% e" |& A# l" U5 s
/ ^9 w3 N7 R) B
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-5 19:08 , Processed in 0.073805 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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