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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。' L7 f6 E- r  k$ F" {" a
   希望大家一起交流交流。
, R7 t; i: n# d8 |   这是最简单一个程序,在屏幕上显示:  "Hello World"
/ a, W* S- i& X  l9 p" c% f   这是直接使用gST-Conout功能实现。
9 b: P+ s# H4 {; j2 v   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。; ]! r  l. L! X# @  H
" i' }+ J$ c2 L" y+ Z0 M- }
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
/ n" S9 X6 {+ _! Y7 G4 u% v& z   Out->OutputString (Out, L"Hello World");  //实现输出/ z! A9 m: p+ s. n

% t% q: i7 W' x- y/ h4 t6 S; U3 T   小弟不知道如何调用EFI封装好的这些输出输入库。
! ?$ l0 x6 ]: R9 @- O& d) w   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1470

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。2 E# M& x2 r: d' w; ^
加入这个PrintLibLite库后还是不行。2 k5 I6 u. B) }9 `" e  S. r, Y
编译执行不会有错,但他就是不显示。
1 ]( G1 F0 A6 V3 {& R/ a6 N5 O: W现在我将print.c, print.h放到同一个目前,9 q' Z# n$ ]4 I! g) B7 C- N
直接写到make.inf中。就可以显示了。8 ^& [1 p5 X8 W0 s
当然,print.h要改变一下,不然找不到函数的申明。- L- Q/ \$ m7 }1 K, C& I

& E. M5 S! v4 D2 j! {明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
7 L/ g7 r0 Z; m$ _" r' }如果是生成PrintLibLite的inf文件部分。
1 L6 S# ?+ E' m' x# s7 N# r: o# f用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。. x, @- \6 z; G9 |; |. P! [
[defines]
' C2 G% E0 |/ d) Y4 GBASE_NAME           = PrintLibLite
+ U8 i0 [8 `( N4 T; X/ y6 }COMPONENT_TYPE      = LIBRARY" B5 d, j; c% n7 f3 X% |9 }6 r
" O) H' }6 l1 {+ P4 S  m$ p
[sources.common]
5 \# r6 U; Z- w! d/ ]5 g  BoxDraw.c# F' v0 W5 r' ~; J( H0 u/ p
  Print.c% ~3 w# A& a9 Y$ O" T6 @7 a. h
  Print.h
2 V9 W1 d3 Q  k8 L+ d  StdErr.c
. B) }* l- Y, G3 a  Unicode\PrintWidth.h
' G* e( o) C1 v0 V0 F! f  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1438

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
- F6 [' q) i& T" T4 Y+ `+ }你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,1 f  G  _2 U. b8 O6 M) h; Y$ K! l
可能是其他原因,显示了但没有被看到,显示到其他的page中了。
0 J% W/ S- w& K& h5 W" D* W2 |重写一个print的东西,就可以输出。8 V; |4 Z6 L4 h9 @

7 L  |! f9 Z6 L. p2 |% zprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:0 z+ D. F9 b4 n1 [4 m7 Q" {
build...8 P! ]' ?- t3 s; ]9 [
:error 7000:Failed to start command
& K% r/ ~- @4 u8 ]/ j8 h4 B1 N* R                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]! _: m6 V+ w! D3 W1 P

, p# A  f; o/ E: v) qbuild...
3 p5 P& H9 l$ r4 H  : error F0002:Failed to build module
8 U/ S$ o1 p" i  ^2 F         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
/ B) R1 q  M8 f4 X" s* P7 I; U- N6 n; ~1 ~4 _8 ^* K7 G+ e( S5 z
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下- d1 Q( ]& }+ L5 J# l3 D
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co: R: X+ {* R( \" m/ ~1 l
okie referenced in function __Print
  ~. x  t+ @; l) }0 ylibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch: G, [8 i1 z; {% o
eck_cookie@4 referenced in function __Print4 O) q  f% ^1 j$ o3 X" R) o
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
! D. S9 d7 E+ R' G* [$ u2 Xr LNK1120: 2 unresolved externals9 r( n' N* I% ~% p
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN: H; n+ X, e' Z0 k, t' F; m
\link.EXE"' : return code '0x460'
6 ^* s4 c+ A* z8 oStop.
! I" D& c" M: E+ v& L3 L" B) L! u# k  _, Z' o
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-4 19:51 , Processed in 0.368572 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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