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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
2 f1 d0 ]  H0 j5 L) I) n0 ^   希望大家一起交流交流。
- ]3 B9 r* i1 }6 B/ K9 ~  j! ?   这是最简单一个程序,在屏幕上显示:  "Hello World"' l! {. N5 Z! F6 X$ }! |& O
   这是直接使用gST-Conout功能实现。
! \, ~5 z7 g7 T   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。# B0 S3 @+ H  q9 K% ~

3 m, k1 S( R3 {+ R) B   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0+ {1 A& ]' I; m5 |, t$ x
   Out->OutputString (Out, L"Hello World");  //实现输出
0 o+ n$ d% _. J6 H8 \) {: a" e; m7 Z- o
   小弟不知道如何调用EFI封装好的这些输出输入库。
' [. ~' C* M, y0 B; L) L* w9 g   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1498

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。6 w* T0 n/ n* K- p  Z0 U* B. U
加入这个PrintLibLite库后还是不行。
" x) r2 e3 }2 D5 X5 H编译执行不会有错,但他就是不显示。
" J* Q: {4 i% C5 W; Y. z现在我将print.c, print.h放到同一个目前,
- G9 V0 `- x, u' r4 ~! h- v直接写到make.inf中。就可以显示了。
. i% M$ `0 U8 {% d6 Z! S当然,print.h要改变一下,不然找不到函数的申明。
4 y5 r- T3 N; u' C4 r2 P
5 r  F( a% L, e/ @/ Q, y& p明天了如何输入,但不明白为什么用printliblite不能得到输入功能。$ ]' ^( z- e* |; C, Z9 a
如果是生成PrintLibLite的inf文件部分。3 I) L8 i/ k7 Q! e3 J# I" U8 ?
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。0 v9 O/ H2 m$ q
[defines]+ j: z. o9 j  j8 L
BASE_NAME           = PrintLibLite, y5 v  i. Q& V5 J. r( B
COMPONENT_TYPE      = LIBRARY
7 t9 P4 X: X$ ?
" q1 Q: i( k0 A4 Q/ [[sources.common]" L0 d( F) j4 h1 B4 s
  BoxDraw.c2 G) }+ r0 G9 R5 i% G
  Print.c0 B8 {# v; ]% T% E& \' |0 F" z% x
  Print.h
6 T: @) J7 I+ ~  StdErr.c
  {" d: z! L( Q* G$ ~  Unicode\PrintWidth.h
/ I1 Z% ~' m& G+ {, q  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1467

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz- j* u8 h# O- X6 y5 ^
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,& f7 ]; v& D/ U; D$ L5 Q  p
可能是其他原因,显示了但没有被看到,显示到其他的page中了。2 c2 D8 K3 Z, @; S+ H7 u: u) b7 u
重写一个print的东西,就可以输出。( y% r5 p. r$ S2 }/ J0 G0 Q" ]
2 d: l1 q! \  |# J
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
& E5 G! C  e3 V( S' t5 pbuild...; d1 r" R2 e& P  p2 O6 n
:error 7000:Failed to start command# V/ P' ~! j% |' v, _1 m$ R
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]$ x, L9 I- t% X6 E1 W' E

1 }( j) [( j, ^6 i& r# }7 \build...
9 Y% ~* e+ x% v: B! X! \3 G  : error F0002:Failed to build module- k0 j, e1 j4 L5 L% ]% k
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
5 O+ _) ~$ a4 b5 n9 v2 |0 D& R. r
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下% n- e! i8 g/ ?9 t* q. ?
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co1 B2 A1 e+ @: [0 R$ Q& T3 M
okie referenced in function __Print. {+ C9 ~; Y- }; d' ^
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch. t$ F8 f3 u! u& C/ [4 n- g! ^
eck_cookie@4 referenced in function __Print/ ?# j  F1 e# E/ L  n8 _& H  a
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
# G6 Y1 [) j+ f5 `# b& w2 [r LNK1120: 2 unresolved externals
4 Y% j! a4 J9 H/ b" [NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN% K7 G6 `4 C. S6 z% P7 C6 L
\link.EXE"' : return code '0x460'
1 c( U- R: ~. h2 o3 z& f4 QStop.
- R: A! x( L1 J- R
; ~% |" k( x" v6 u3 q; }" B- C& E请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-24 22:38 , Processed in 0.094666 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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