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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。+ g8 g* e" ^: f7 H  S
   希望大家一起交流交流。" ?; |$ M% k4 |0 A& k# {7 {" ^
   这是最简单一个程序,在屏幕上显示:  "Hello World"
' Q4 X/ Z2 O' K9 y" e' X   这是直接使用gST-Conout功能实现。
, ]7 w! }$ e8 B$ f+ z$ A8 }   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
& b+ h" ~/ @7 a& l% @( i9 m
) y1 _- S6 j, r' Z- v   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0- O+ M& }1 [6 G5 x
   Out->OutputString (Out, L"Hello World");  //实现输出* ^' C; }' }; h6 b, l6 ?. a
  T, \$ f) i% ]  r. v
   小弟不知道如何调用EFI封装好的这些输出输入库。
( F* L% U/ A3 G# K   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1134

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。; c1 m4 F8 L" B. W
加入这个PrintLibLite库后还是不行。4 ]4 `/ j3 p3 ?8 C0 w$ F/ [3 o: D
编译执行不会有错,但他就是不显示。' M8 r3 z$ Q& y' H7 B% L$ r
现在我将print.c, print.h放到同一个目前,: e5 ]# H# N( L; }% v
直接写到make.inf中。就可以显示了。7 L9 p! J4 M* N
当然,print.h要改变一下,不然找不到函数的申明。
# x% k3 A4 q) ]6 h- C' L' J, d9 Y3 x
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。. J3 `% u) _. H" g, U) h4 V
如果是生成PrintLibLite的inf文件部分。
4 p% x* b6 D1 z用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
& L/ V2 A/ A7 V. A' d[defines]
6 E! ^# j$ |6 l8 E5 rBASE_NAME           = PrintLibLite( ]6 I1 L% N$ o) H' F
COMPONENT_TYPE      = LIBRARY
6 i- o, q$ T3 z3 B0 w
& ^& T) d* S3 ?4 ]+ \- o[sources.common]
0 Z" `; b* v; h1 f8 F/ Y( F  BoxDraw.c
  P0 p0 L7 M* C  H  Print.c# X' c1 ~5 R8 \
  Print.h
& ~. W; W# V: x- |: \: Y' m  StdErr.c
1 Z: J: x9 b: l, F2 |; |" K" _  Unicode\PrintWidth.h% x" J, [7 v5 i8 j6 f
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1150

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
1 R! t/ Q1 ]9 B; x) ~7 W. m' R8 a你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
/ N, x7 d- F, }' r( o+ k可能是其他原因,显示了但没有被看到,显示到其他的page中了。
  e7 t% z. L6 G9 R3 O5 i重写一个print的东西,就可以输出。
8 h" E* M4 v; r9 ?
7 L! V" T# J4 {8 X; E+ ?) P; Eprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
% G. [) T7 K4 I+ X* K& q& Hbuild...
' b4 \2 i" r" m: V2 p( j :error 7000:Failed to start command
4 [3 x+ Z3 p$ }. z3 E: ^( b' G/ M                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
# r8 y1 W9 {. h
$ N6 m1 H8 s% _0 H' c  c2 Gbuild...
. ?+ Q$ W" q. y$ K0 B  : error F0002:Failed to build module
2 J5 W7 _7 `3 X5 c9 E         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
% E+ N5 s, R* [" y3 |
  h& F" d' I2 u请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下7 a; d, ]/ @( n
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co% P. u( @+ f$ q$ u1 v. S
okie referenced in function __Print# Q) I0 w0 ]6 v4 a7 f
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch+ u8 h9 r6 j' A4 p0 W
eck_cookie@4 referenced in function __Print" D" G- Y% Z+ d% q% r- U/ O! j2 F
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro" K8 @( T1 e+ C& I# S, ]) `  z4 e0 {
r LNK1120: 2 unresolved externals
4 U0 p) j+ m* R. I/ E1 kNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN3 X/ u) @( y/ q! K" R* P" v0 J3 @
\link.EXE"' : return code '0x460'
$ o# e( l# |# |: m$ WStop.
1 _: m; n" W$ y) b( |7 @
* B; b' [5 X( Q, d. k* _/ C请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-19 00:34 , Processed in 0.061469 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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