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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。! h: o  f9 P( a1 O' P
   希望大家一起交流交流。
' o) E' W$ F8 b  c   这是最简单一个程序,在屏幕上显示:  "Hello World"% [) J; V! }, f! ^, m1 m0 |" g( @
   这是直接使用gST-Conout功能实现。$ a, N6 Q' ~0 i% }0 k
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。9 v1 H& |2 n) q$ _. p0 g9 L

! U: x% z/ W; w  U6 v   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0% g" m# F8 F2 I$ Z
   Out->OutputString (Out, L"Hello World");  //实现输出/ C  {' `" B9 V% M- T
6 R& K( q. P5 D/ M; o
   小弟不知道如何调用EFI封装好的这些输出输入库。
1 u7 j: ?' }& ^. |4 g( {3 L   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1512

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
, n& e8 T4 B5 B- Q7 J0 `7 D' B加入这个PrintLibLite库后还是不行。# C% L0 X5 J  a6 q
编译执行不会有错,但他就是不显示。# h' C! o7 A  g' M
现在我将print.c, print.h放到同一个目前,
3 M: B4 y4 @# M直接写到make.inf中。就可以显示了。
- s9 S$ D9 ~/ X# b  S5 Y+ b0 I当然,print.h要改变一下,不然找不到函数的申明。
: t1 ?4 o* }3 D+ s% p. S. ^4 V
1 D- y, u) L' P7 c明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
% U& }  Y2 u; _3 B1 i如果是生成PrintLibLite的inf文件部分。
+ O+ r/ l$ E, W, N: ]& Q用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
. g6 V7 Y6 ^# T3 F  f: Y7 _[defines]' ~6 u  U' m7 f2 Q" B
BASE_NAME           = PrintLibLite0 m* A; l" x0 u: s2 g: z+ }
COMPONENT_TYPE      = LIBRARY' B3 m9 d! v1 c+ B4 X" k- U

( c" B. }3 Y( {$ ~[sources.common]
- g" j1 N: ^" g  Y( g4 ^7 X  BoxDraw.c
' t- o7 @0 S. `$ w* x; ]  Print.c
, U' O+ ]2 U& X) ]. ?  Print.h
% x) @; \7 X" H, G( B8 v! k  StdErr.c
# |) l0 i  o+ e! }  Unicode\PrintWidth.h6 y& p- v9 e7 K$ f8 }/ ?' u
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1479

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
9 \2 h- ]1 _4 [6 o7 u1 J你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,$ P. v" t, }, o4 j9 L  ]/ U
可能是其他原因,显示了但没有被看到,显示到其他的page中了。( e4 N) j: C+ X* b
重写一个print的东西,就可以输出。5 ?! O& n( B5 D
& {# R8 R4 K! N
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:  x7 o2 `9 i8 {, C
build...) {2 `3 r, q' N2 q
:error 7000:Failed to start command" u0 W8 s1 p( O9 r/ k
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]" v' y9 L2 y' y3 j
5 X8 }' q: U5 }: ], b- y* a/ z4 M1 n
build...
: M, W1 P+ i( X6 ^( |* b  : error F0002:Failed to build module6 N# x5 o: C2 }1 ?
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]! A' c, \9 w6 ~6 [

) w- e/ ]6 Q' j# `( `7 G9 H0 p请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下) U* n/ S+ O; l% i4 a8 C7 D2 |4 U
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co6 l8 \8 u5 z. }& r+ j4 n7 m8 c2 i" E
okie referenced in function __Print
0 @1 y/ r6 z9 B4 c+ A* glibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
, x" @7 c0 Q7 o" i* Z4 veck_cookie@4 referenced in function __Print
- }. f3 h- c4 k7 w& |5 j8 ~D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
# m6 X8 o0 ]: e) L& z7 k$ N$ qr LNK1120: 2 unresolved externals
# @; m; J4 T$ D: M- \& {NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
* P4 ]( x# ?# q2 J: u# S7 x\link.EXE"' : return code '0x460'
( c, j5 m) t2 \4 v8 ZStop.
" U1 _0 m: z0 M6 i/ E5 G2 K/ b1 S+ h( C& D8 `4 N  G% `" f
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-25 19:01 , Processed in 0.043321 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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