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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
- Y; A* d6 A) E3 Y: W! G   希望大家一起交流交流。3 _! l6 f, d/ ]
   这是最简单一个程序,在屏幕上显示:  "Hello World"
4 y0 [" D, e) `4 G1 v# Y1 f   这是直接使用gST-Conout功能实现。  i) @' s9 V  H# ?  k& X0 s
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
. p1 ?9 ^9 z+ t) t
/ `+ n3 t" f  z( m   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0# l: I( S, I8 y8 ]/ K- G+ l
   Out->OutputString (Out, L"Hello World");  //实现输出: C, B# R3 E1 C- K& c6 C' b

" v" d; l$ V, J   小弟不知道如何调用EFI封装好的这些输出输入库。! [6 C; |9 ^  `- E7 k% s: V
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 961

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。2 A' D0 p/ O7 u" R# c
加入这个PrintLibLite库后还是不行。
( r+ z! j+ `) h- U1 N( B编译执行不会有错,但他就是不显示。5 y* f& _, d5 `) l2 d
现在我将print.c, print.h放到同一个目前,
5 _  O1 I' F2 _% k9 |8 U直接写到make.inf中。就可以显示了。
* Y8 q; _; V1 t+ ]6 s! C  F当然,print.h要改变一下,不然找不到函数的申明。% x: N: v' ^( Q# j6 f
: |# `# _, ~' ~/ `
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
3 ^, v/ V; c4 r& W, @, @. `如果是生成PrintLibLite的inf文件部分。
5 j: v% M1 W8 V9 |" O2 N用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。' t5 a, V& q* _- P
[defines]9 Y; V5 M$ E4 w
BASE_NAME           = PrintLibLite8 Y2 @& q5 l# J5 _$ O7 w& p
COMPONENT_TYPE      = LIBRARY
5 @; l1 s" C" B; x8 B: v, Y7 k* d! w; k( L* A4 x
[sources.common]
( N4 k/ ^. _6 J0 W. `1 y  BoxDraw.c
+ d3 b7 p$ a6 K* V$ q. Y7 I5 a4 v# s  Print.c
$ M. e0 u$ @' B# ^8 G$ N/ c  Print.h9 n; s9 v  Q1 j0 Y
  StdErr.c
- \: d0 g- x, k) Q% W  B  Unicode\PrintWidth.h
  j& I9 h' m6 X+ t* N) |% \" }  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 974

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz) N! {# i# P  J
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,2 z% J! r7 P% R9 M
可能是其他原因,显示了但没有被看到,显示到其他的page中了。- I$ e2 w% G; W# m9 {
重写一个print的东西,就可以输出。
/ o7 C/ ?2 R1 g4 I+ \  J8 Q# \! c6 ^: q; g8 N; N4 C4 a
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:4 p2 E( V' y7 F& W% L0 O# n1 y, U
build...
/ ?/ ]6 ~( d% }, d :error 7000:Failed to start command- u) |/ i$ |7 r4 V5 U
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
- h8 X1 [7 U; r% `  e" e8 S
3 n9 s" C7 J6 f5 }0 _- E7 t1 q% tbuild...9 |% v2 M1 M6 N3 P7 O
  : error F0002:Failed to build module1 @- Q+ L+ ?* g* `  J! M1 p
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
  X, ~: V+ w( ?( {' c. G& Y- ]. b
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
# ^! f6 ], k& j2 U5 U* n$ q6 H3 E5 Elibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
* x8 F* r" l' s1 ~  ^! hokie referenced in function __Print
% [# g- A' D7 g# N& qlibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch: q4 @/ ]  R- U7 P# `
eck_cookie@4 referenced in function __Print" c! j: _; v, Z
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
) Z" i# c2 T* _% `# Gr LNK1120: 2 unresolved externals1 m. ^- q/ Y7 ^( @
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
6 u) q3 v8 N  y' ^) [, q\link.EXE"' : return code '0x460'8 Y/ B0 O7 j* h
Stop.
8 ~* s# X! V7 ~6 i6 _) v- G4 Y  u" O: a
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 02:57 , Processed in 0.082070 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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