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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
/ \2 |* S4 v' ^8 V* I2 d   希望大家一起交流交流。; {' E6 f3 I1 k1 ]3 w, P0 o
   这是最简单一个程序,在屏幕上显示:  "Hello World"5 j# S5 a/ W/ X  Z/ ?  L, d8 O* u
   这是直接使用gST-Conout功能实现。
/ {( M. F7 H6 P- m, b. S$ l/ |   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。0 z% `0 r- b9 h( p* |, f; ?
3 B2 X/ P+ i1 b* [( V+ c) }
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
9 y2 b/ {* B5 x2 E   Out->OutputString (Out, L"Hello World");  //实现输出8 h' H- \$ a* ]+ _" s

, e& A' a; X, I; C   小弟不知道如何调用EFI封装好的这些输出输入库。' g8 \. }, e. `) ~; j  k& F
   希望大侠指点一下。

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 | 显示全部楼层
问题解决了。
* N9 d; B4 P, M+ D加入这个PrintLibLite库后还是不行。
7 C/ f3 C8 D( z/ ~1 d' ~; I% u5 H- H编译执行不会有错,但他就是不显示。
. @; i4 I: f. G) g! ^9 X现在我将print.c, print.h放到同一个目前,
2 T% k( k, [5 t) q& E直接写到make.inf中。就可以显示了。) t4 o8 s9 v1 U% s+ U( H* v
当然,print.h要改变一下,不然找不到函数的申明。
7 [, W) B% n5 P9 }% L4 f) F
. V' v% P! S4 G明天了如何输入,但不明白为什么用printliblite不能得到输入功能。9 i9 i2 I% l7 ?# t
如果是生成PrintLibLite的inf文件部分。
+ U% q4 u7 \  b+ K" r, ^用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
4 d* W' W' `6 ]: R- F[defines]8 Q( f/ v9 d3 w
BASE_NAME           = PrintLibLite1 u( `# X- a9 |- `/ v  g6 _) P
COMPONENT_TYPE      = LIBRARY
7 E# F* |% e* n, i; H) L, |% m) h* r" Z" {7 [/ u, o8 \
[sources.common]
: ]% F. D( |! {8 J% f& T  BoxDraw.c2 V0 e2 f. |$ I2 X& g( R  z6 @, X
  Print.c& [) z) s" E" E. a/ Q! M+ I2 M- b( z
  Print.h
& m5 `# {) S4 ]; }7 C2 K4 m6 e  StdErr.c! V) B; N# [5 w1 Q, D
  Unicode\PrintWidth.h
+ F/ c- a; O& @) S  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 513

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
2 a7 [3 x' Q+ `' d你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
/ `4 Z9 z6 E# Y- M可能是其他原因,显示了但没有被看到,显示到其他的page中了。% j9 h  `0 C( _/ _# W# V
重写一个print的东西,就可以输出。
3 L" p: E9 V5 [, \% q6 R8 d& p4 B+ l! t2 z% e/ F& l+ a
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
7 m4 \  A) r6 _build..." C8 F* U7 M; p+ b
:error 7000:Failed to start command
# T& z, Z/ E* k7 s/ z9 t1 D6 f                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
& I9 T+ g( @9 ~4 g7 }8 a; H9 I+ U- P9 T9 O" C2 D. i
build...
' Z+ |" |9 t" `  : error F0002:Failed to build module' n) [7 J7 s/ e: A/ t
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]. J  y& a- q4 x

0 t, V) ?) ~9 b请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
) N7 @2 l; _% V; E" H! Plibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co! z* v1 ]5 }( V  J3 G) U
okie referenced in function __Print/ n9 ~2 e! c2 k
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch+ V& I) A, [4 j" _, r; i9 B; o
eck_cookie@4 referenced in function __Print! c8 K* N2 G# l2 l7 ?) i$ J
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
5 e; Y% S1 P- z( D3 gr LNK1120: 2 unresolved externals) U2 Q  e, |* w* U
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN* P2 B% J& \/ ?# o$ X! |. ~) b
\link.EXE"' : return code '0x460'4 V! j) m5 D7 U6 _9 k  E% W' V
Stop.1 t: c, G' P3 X

( {* D( w( |& r  K! ~7 P请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 17:19 , Processed in 0.024158 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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