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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
# J+ n: F4 ~" L0 ]6 n  |2 T   希望大家一起交流交流。4 _9 {% v0 y, r: Z
   这是最简单一个程序,在屏幕上显示:  "Hello World"5 ^7 @6 N& x8 e2 b1 B& d& ~
   这是直接使用gST-Conout功能实现。
7 s4 Q) _( o* s. Z   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。0 V) V4 M- p, O' }7 _7 L& Z, e

* Z  [- J) \5 f7 W+ j+ M   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
5 Y; x, _# O, `; ^1 [5 g) g* h) }   Out->OutputString (Out, L"Hello World");  //实现输出
: w3 l3 ^  l& n3 J$ ~% U7 d
, P9 J! x6 w! k0 z1 c8 c9 F, \# j   小弟不知道如何调用EFI封装好的这些输出输入库。; ]! o& f0 g6 O1 u$ n7 G
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 966

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。/ i/ z4 o  Y' W
加入这个PrintLibLite库后还是不行。3 F" y6 t. f8 Q! W. m
编译执行不会有错,但他就是不显示。
/ {& a1 m. h  @( {4 a, d2 M现在我将print.c, print.h放到同一个目前,
* }7 \- x! c/ V6 v0 n& t9 P2 z直接写到make.inf中。就可以显示了。* p2 a* w: t2 }% a; I6 T
当然,print.h要改变一下,不然找不到函数的申明。
) e+ d& T& Y1 O6 V) S
0 D2 n2 t2 t6 L- k6 _7 s7 m明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
$ Z7 C' Q5 j1 p( u( I8 {* }- g如果是生成PrintLibLite的inf文件部分。" R/ _5 d' G( U3 p- ?
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
, K5 i& N' f1 w" T7 M0 E2 f[defines]1 C6 Z$ D7 Y; u; V* R
BASE_NAME           = PrintLibLite
+ Z8 @7 l1 ^5 E( H1 s% e% r; aCOMPONENT_TYPE      = LIBRARY
+ k9 s! g, ?1 N7 {- f. i" |& N  J! r5 h: Y$ h/ z
[sources.common]1 v* |( f  `& J+ r
  BoxDraw.c
2 ]# |$ D( W  X2 W; {" T2 Y  Print.c' j2 h  ?. U' a$ ]0 r+ x
  Print.h
+ r9 x  V. t& z  f1 V; \1 I) |  q  StdErr.c
9 x* h7 U: w2 m  Unicode\PrintWidth.h* J6 _/ \/ |' d, c/ E( e9 v: C4 A
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 976

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz8 i( B; R) O# n( C  u
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,% S2 d- G  r0 t
可能是其他原因,显示了但没有被看到,显示到其他的page中了。
) B  z+ w# J2 h# h! ]5 v# X/ V" D重写一个print的东西,就可以输出。
" n8 O  `* R8 |: h& b
" ]6 x% ]; c' W9 P: }' X* M3 aprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
% h3 o0 g5 [/ @( s  Qbuild.../ M. E) ]: i% P; m* V% w- t0 r
:error 7000:Failed to start command
- D. V, }3 j4 M5 U( S2 L5 o7 y% w                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]# N. s: v" X( H5 I; g) x
- ~2 i: @: f3 m" P; `! i
build...; g. `# Q( k+ \
  : error F0002:Failed to build module
' F' Y/ F. d# e0 Z$ K5 t" C         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]# H/ {. Q& a. S2 j6 Q0 m% h- k
  M  T: d# E9 ~3 X% v
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
( D* X$ X! N; {libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
5 ?6 a- O" P0 ~9 B8 tokie referenced in function __Print
! b$ j7 T8 ?% v: M( K& Qlibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch5 C$ J3 S! S/ @+ e% F: H! J
eck_cookie@4 referenced in function __Print  P. `& U: ]' U' D+ g
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
% F/ p- `, l5 t7 ]# s  k. dr LNK1120: 2 unresolved externals. w) e5 I* [5 L7 s6 X
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
# i; e0 Y: x, O* h, g' \1 F" ]\link.EXE"' : return code '0x460'
, D. G3 K/ @5 N9 PStop.) h! ~2 }9 w& @! t- }3 v

2 |$ p4 I; C7 @2 I+ [1 G5 C请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 09:46 , Processed in 0.150258 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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