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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。8 D7 S$ ?- u' l( G
   希望大家一起交流交流。
' f' E4 O1 R5 P0 v6 ~   这是最简单一个程序,在屏幕上显示:  "Hello World"$ h6 R" N7 q) Z+ }- {# X  f. U- d2 k
   这是直接使用gST-Conout功能实现。% k! a1 r2 K; [: O( U
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。. F! z* t2 T8 A; P
# z9 J1 q8 r" Z- x8 e! y: L9 ~1 E& `
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
2 ^) G9 D% S5 X. Q   Out->OutputString (Out, L"Hello World");  //实现输出
1 c2 s7 j2 g, W' ~; [$ G; m, a. \, H. e9 [
   小弟不知道如何调用EFI封装好的这些输出输入库。# P+ d$ m) v6 U
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1495

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
: _( Z  l5 g; k( P2 c- h( g加入这个PrintLibLite库后还是不行。
  l4 q+ \$ z6 }- l4 S2 N编译执行不会有错,但他就是不显示。$ y2 V; @/ m, B- K) e* E# @
现在我将print.c, print.h放到同一个目前,
% g8 z2 `6 T! n* A4 S! K直接写到make.inf中。就可以显示了。% m$ f6 n" V. d' H1 g3 \" t
当然,print.h要改变一下,不然找不到函数的申明。
' L8 k( j7 v3 t  d1 e/ b
+ y5 c% C; E% M8 _' _) e- c明天了如何输入,但不明白为什么用printliblite不能得到输入功能。6 R& U& J) j2 N! f. e
如果是生成PrintLibLite的inf文件部分。
/ O0 D" [/ S+ O* j( L用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。) L9 Z; b* k" g* \  C3 }3 E
[defines]
: ]. E' h* Z" S9 HBASE_NAME           = PrintLibLite
! K: b. K+ s/ `* N% }! YCOMPONENT_TYPE      = LIBRARY- n7 h& g+ {" R& ]9 ^
; r' U# u. U8 U2 g+ E& s
[sources.common]7 M! ^( q6 c! ^5 J( [7 P/ h: Q
  BoxDraw.c" o" t2 L/ C, ]; q0 n" v) c
  Print.c2 h1 e( l( O1 B4 @. o7 a- s, x
  Print.h
1 l) b9 L! _, y/ C5 a  StdErr.c0 a8 M$ r( I* r. v. R/ q9 @
  Unicode\PrintWidth.h# |/ o3 W1 _- N  M6 k/ d
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1464

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
( u" n# W# ?! V3 J8 i1 E" ~你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,) f0 s# o( A- L
可能是其他原因,显示了但没有被看到,显示到其他的page中了。! k3 [1 V8 c0 I0 C+ K" z: i3 }
重写一个print的东西,就可以输出。, d3 y+ {% p8 y9 ?- w: M

- D2 e, _  h  _8 \; \  {print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
6 U/ {0 U# v( h4 ?; t, t! u9 Sbuild...8 Z: n+ m% Z1 v7 M8 z
:error 7000:Failed to start command1 A- o6 N: U6 B, r/ e2 Q
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]1 K- l( J% T% n  S0 i+ {

: K# `, R" p+ O& j, O+ gbuild...& T* P) c) \( U* X: Q$ a
  : error F0002:Failed to build module
2 O! \& {( d/ B6 J4 V         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
' F8 u' G7 \2 X7 t1 I& n+ N
6 I" T  b) `$ B: P请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下+ E( i: P* ]1 a* R+ P' y
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co& G. n! E9 N/ O0 z! J- u/ `& L2 S
okie referenced in function __Print8 Z0 e2 f6 _% m& c9 _4 K/ y1 s
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch, i/ q- A3 \1 h( |- [  ^
eck_cookie@4 referenced in function __Print! C' w/ ^* l, D% p5 J5 p' x
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
; S7 r3 X5 U. R" w8 O. B+ p" Kr LNK1120: 2 unresolved externals
! V1 s0 c! K7 A$ fNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
/ V$ M* g% w$ }$ g* c* o+ B\link.EXE"' : return code '0x460': R& c( s; J! `3 L( x  C
Stop.$ q. Y  I5 y: p+ I1 [
1 |/ w$ G7 ^& A2 {
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-20 05:43 , Processed in 0.042678 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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