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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
- d7 h. C9 [# a: ~% M   希望大家一起交流交流。
! P) g+ d; l9 j+ U- L) u   这是最简单一个程序,在屏幕上显示:  "Hello World"
8 n- {, @! m: V   这是直接使用gST-Conout功能实现。
- }1 `/ @, R0 }9 ~* v5 P   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。2 U) X/ ~) S3 P/ F8 Q' a
' K& G$ B. V7 L9 z4 z/ O8 V
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
" q% {, z9 D; c( [+ M; J9 b   Out->OutputString (Out, L"Hello World");  //实现输出
, Q" }  O% N4 T7 F3 m2 i9 s* S  _& F/ \; v- w% j
   小弟不知道如何调用EFI封装好的这些输出输入库。
0 D  H/ I* e- i: y) j3 g0 ]9 M* B, d   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1522

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
# z9 q  m- m- X- v: ?( R* Z# K, h加入这个PrintLibLite库后还是不行。
+ l: ~6 F! }: ]7 J编译执行不会有错,但他就是不显示。
8 l+ @$ {. C" Z! X4 D现在我将print.c, print.h放到同一个目前,
8 g4 m# M3 [7 e+ P3 Z直接写到make.inf中。就可以显示了。$ g' }7 r  C$ |, q* F7 e
当然,print.h要改变一下,不然找不到函数的申明。
2 N- R7 L- ?. |( H; K+ p
: J: g- I1 }. c; |明天了如何输入,但不明白为什么用printliblite不能得到输入功能。1 J" O! n1 I7 k% y3 }( \
如果是生成PrintLibLite的inf文件部分。
4 N6 r5 c, T  M2 [用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
" g' E. _/ a1 K' S. u0 V[defines]2 P/ \" z( S6 E- c$ Y+ P5 R/ P
BASE_NAME           = PrintLibLite" P1 D8 ]) N# F# B* k& C
COMPONENT_TYPE      = LIBRARY
2 |- A9 Y; f6 z2 \9 x
1 N+ |8 o9 P8 p, F[sources.common]# _' V% j* J, f0 K8 f
  BoxDraw.c9 r. w/ f2 @8 k3 |" j% r( W1 C
  Print.c
1 H% W# \, T- f. m+ i/ y  Print.h
+ {' k& J7 V( L, L  StdErr.c1 R3 [4 b3 n% _2 v' w. ~6 i
  Unicode\PrintWidth.h
3 T6 t5 u: z" o, Z) p1 W& G: ^  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1521

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz7 h' O  V( I) b* B! X7 U' w7 }
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,' V  w) q' _, x' x3 r
可能是其他原因,显示了但没有被看到,显示到其他的page中了。
4 i8 W! b+ ]; ~  p' i- L- g$ O重写一个print的东西,就可以输出。+ d9 J7 Q+ C+ y3 n. ?; T: L
# v/ Z9 X4 u9 P  f" ~7 {
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
  m+ h* Z6 X5 V( H1 C* l2 r' Ubuild...
7 G6 ~1 ^4 S+ I6 w :error 7000:Failed to start command
$ i, |3 u) d( A! [                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]% S( h/ ]; `' z. U

- W' @  I' [* a9 Cbuild..., p; |& m$ V7 _+ b* N: l$ x; f
  : error F0002:Failed to build module9 w2 g: W! K! u0 e$ q# w# Z
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
  a& h9 i( G7 E$ ?$ u* ~& \4 c
. u; y$ J0 Q1 V: V0 N- k请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
8 z# P" r  e3 K' p" p3 f6 glibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co6 M3 Y% F. ~/ p( x0 j
okie referenced in function __Print
! a) Z( [8 b. u3 f3 Q# U% Z0 b8 @libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch! h" x: Y1 f2 S# n( b# {, Y# K
eck_cookie@4 referenced in function __Print
: _1 r) R, ^! ~8 b" F' ID:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
: D* P/ c5 n* u$ _5 _r LNK1120: 2 unresolved externals/ ]- I5 M; O/ ]1 m7 w
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
+ Y7 S" e+ r& D\link.EXE"' : return code '0x460'
8 R6 V4 R* t8 ^/ CStop.: o0 P6 U" B# T' y2 l' M

; w" I  f: {' L8 w- Y请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-18 19:15 , Processed in 0.063551 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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