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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
6 [' L# ]0 t( `7 F  _   希望大家一起交流交流。
9 X) R8 s1 v, z* \   这是最简单一个程序,在屏幕上显示:  "Hello World"' A+ |, \" R, D1 X/ g
   这是直接使用gST-Conout功能实现。- y% c! E6 T. e3 r1 M% |: G" h
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
5 \! R6 ^+ z+ N( r9 E
. D5 M% _. ]( d  {9 @   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0/ \4 x5 G( j( |$ R# ?
   Out->OutputString (Out, L"Hello World");  //实现输出
: |: _/ I  b7 Z) e8 n' s. M
4 k6 C3 h7 [( ?0 p$ V' w   小弟不知道如何调用EFI封装好的这些输出输入库。
7 r5 W/ {. F+ w* O+ h   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1483

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。* g; t  ?2 Q; v+ m1 W) D- }" R2 ]
加入这个PrintLibLite库后还是不行。
/ B: J; m$ ]! M1 ]# L编译执行不会有错,但他就是不显示。! W% \1 e& B$ d
现在我将print.c, print.h放到同一个目前,
9 r/ M' Y. W; \4 \3 Z直接写到make.inf中。就可以显示了。. s; W2 z, k  \% V2 L' l/ ~2 S
当然,print.h要改变一下,不然找不到函数的申明。6 H9 ?" k1 K# k! W: T

5 [# K2 o' X$ c9 L4 j2 r) R+ G8 C& A明天了如何输入,但不明白为什么用printliblite不能得到输入功能。# K4 e7 V: p# F: I: C' |( \1 w
如果是生成PrintLibLite的inf文件部分。
/ u7 n& D; l0 \# |& U0 x5 H用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
" {4 \- d+ b) @' b# M/ v: m5 f. c$ O8 G[defines]+ z! a% q$ S6 H0 r1 f) B
BASE_NAME           = PrintLibLite, A9 f; V$ Y) b8 |2 ~3 D. t
COMPONENT_TYPE      = LIBRARY
7 \  b" q; ~! G$ Q0 ?- O2 p! `/ n
[sources.common]
& u; I% W6 k* y) }  BoxDraw.c8 K  {7 _  j. h( ?0 y& n
  Print.c' C. d0 Z/ C% X9 m8 A
  Print.h
7 z- t+ c, R( ]+ x* N- F9 A  StdErr.c
1 F) F. j: o5 Y  Unicode\PrintWidth.h
6 B! j* \9 k2 {  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1451

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
6 N) z3 h  x" w6 D" w: N你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,4 U! E3 n6 J- Q" Z& U4 W
可能是其他原因,显示了但没有被看到,显示到其他的page中了。" G0 g! \" ^$ ~
重写一个print的东西,就可以输出。
' G, S5 r6 G/ @) b6 ]$ r- E$ e& L* s* z4 `
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:7 Q/ n9 ?2 S. C9 K0 z6 v
build...
- o3 j0 u' h" O6 m' Z. S :error 7000:Failed to start command
8 V( n/ J6 T6 q0 P- v; \                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
4 v: I, ?2 I0 [
( o: T) v4 \! fbuild...0 s4 T  w3 d. x. k9 o# V
  : error F0002:Failed to build module
3 K. w( W# a1 L% {3 s! \2 h         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
- j( _& o7 \- |! R, d4 r5 R8 l2 b$ N: \' |# w
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
, ?: ~$ G: ]4 p) m7 L) ]) v: q# ylibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
/ D% A0 R. p3 j; p7 dokie referenced in function __Print6 O( f8 q* `: B! Q2 X# l9 n1 b
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
- e8 `# M4 ~8 }eck_cookie@4 referenced in function __Print0 v  z) H8 Y2 ^) X
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro; x" |9 u) }8 V" n- u
r LNK1120: 2 unresolved externals
3 \9 A5 V  u9 b5 BNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN6 N0 @$ }1 f. r
\link.EXE"' : return code '0x460': `3 a4 }, z- ]) @+ ]
Stop.
7 m) q$ I; h& r* g; v6 L
0 Q: F, E, s) F: i. D) k请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-10 20:38 , Processed in 0.104709 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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