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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
5 w+ s# ~2 I; t# V   希望大家一起交流交流。* W2 S2 k  C3 u& W
   这是最简单一个程序,在屏幕上显示:  "Hello World"
% C: G0 A8 r2 Q- Z2 S+ r   这是直接使用gST-Conout功能实现。. h& G1 e# S, N: P) {& r
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。- ]; b5 X: Z( k  n) U

* c2 k7 w( t5 J. S* i+ k   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
: j0 x; u3 F  Z; z& e   Out->OutputString (Out, L"Hello World");  //实现输出
0 @5 L3 Q- r6 Q( p% X/ G( r. G( ~. p9 W: w) C
   小弟不知道如何调用EFI封装好的这些输出输入库。/ ]1 `. M; p- ~4 u3 d4 @- N
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 901

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
: ~& Z- b; D7 |- L1 M加入这个PrintLibLite库后还是不行。- |7 X: U7 P* W5 K* M, |# D
编译执行不会有错,但他就是不显示。  f( l; }- Q# f& u% ?  L7 i
现在我将print.c, print.h放到同一个目前,5 }, H, c. ]% w: w
直接写到make.inf中。就可以显示了。# I% ]6 U. m" l0 G
当然,print.h要改变一下,不然找不到函数的申明。( ]) k3 v$ y+ b3 E
) G0 s- ?& ?3 G# c; F7 Q" j
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
' Z9 a6 T* U. m如果是生成PrintLibLite的inf文件部分。
/ w' _8 I+ T1 v! H用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。( n; `# ?# v1 A+ c6 M- {
[defines]
9 ^" U6 M  `+ p: w! XBASE_NAME           = PrintLibLite5 a# x$ K, y* K, i5 Q, c: v7 f  ?
COMPONENT_TYPE      = LIBRARY- ~8 r3 {9 _2 u% o9 b1 K

8 N# l+ z' u6 j8 a! C3 l2 p. W  Y[sources.common]! A1 G5 X8 U* j7 u( n
  BoxDraw.c2 a$ O: B7 e! n3 z! K1 A6 S( j6 r
  Print.c; ~* Y4 y& [; z8 M- b2 O
  Print.h% O" k& P! T) T9 |, t0 Q
  StdErr.c' N- a+ R: d+ y+ ]! F0 l
  Unicode\PrintWidth.h; A% d* n- b' F" T  F
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 908

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
4 P4 ], t$ }2 `# k6 \) u3 R% ^你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
$ i3 G" L; O' ?& W0 K可能是其他原因,显示了但没有被看到,显示到其他的page中了。1 u% L0 z4 w' N" @% ]
重写一个print的东西,就可以输出。
$ r0 h0 h  Q1 o6 y, z  f/ h9 }. e3 I6 S- n
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:% a4 Y( v# B7 g
build...' ?: Y2 g: y3 j( s0 n) ]
:error 7000:Failed to start command/ a1 y; ^" R+ _
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]7 @! t/ z* ^  p5 t' Q; a5 |2 O: W4 S

, R6 \; X4 e, d. u, u) }" Zbuild...
3 V4 k+ f& I" Y/ h  : error F0002:Failed to build module
! S2 _. T- Y; s5 A1 \5 K7 i         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]: [: J+ i9 Y3 l

$ `4 |6 M" k5 U请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下$ M  Y& O/ Z# S
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co% D! ^7 l* Q0 t+ W9 E
okie referenced in function __Print& x1 z1 ~. d% v# n) h6 T9 k: [( ~
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
6 u# K4 z5 r" L0 k2 }eck_cookie@4 referenced in function __Print7 I, a2 `7 U& s2 b8 v% @
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
3 u0 U/ Q5 q+ N6 W) n: ?# ^r LNK1120: 2 unresolved externals8 T' F5 W) S5 s' S% Y
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
6 B& L" }3 L5 r+ m* O\link.EXE"' : return code '0x460'
% p9 e# E" a4 L$ dStop.2 ]' O6 S1 P, S9 B3 j$ f* M. ^% _

# y2 D! S* f$ d+ c/ M2 [请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-22 03:38 , Processed in 0.097009 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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