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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。+ V+ x- v; U, p% W  \+ ]
   希望大家一起交流交流。
+ k" v- C# y% Z. S9 ?2 d. C   这是最简单一个程序,在屏幕上显示:  "Hello World"3 C' B: W% @8 W$ K7 t9 i- M
   这是直接使用gST-Conout功能实现。3 S" o7 {2 i( O0 c) f2 k) @' T
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
- \* y+ }- r: }' G% ]1 K
% I7 Q6 x9 B/ ]3 p4 o8 C8 b7 K# [   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 07 u2 \, `; f+ l
   Out->OutputString (Out, L"Hello World");  //实现输出$ q: j* @( A, @% e
, W, R. I9 N# R9 k. `
   小弟不知道如何调用EFI封装好的这些输出输入库。% s  Q, m, t2 T6 |( h; w$ Z5 k
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1295

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
# G/ j+ a" o) G! g' n加入这个PrintLibLite库后还是不行。0 f# t7 X2 o( g
编译执行不会有错,但他就是不显示。
) n. X" C0 {/ X- h; J3 h现在我将print.c, print.h放到同一个目前,. [- j. d, H, N  M2 o
直接写到make.inf中。就可以显示了。/ \2 j, e1 A5 ?$ {+ N  ?
当然,print.h要改变一下,不然找不到函数的申明。$ Y8 b/ z) y" Y8 A3 y

, o) z3 d- {+ ^, ]$ ]  G明天了如何输入,但不明白为什么用printliblite不能得到输入功能。% d. G4 p# b& m. V
如果是生成PrintLibLite的inf文件部分。
, e% |& b7 ^% ?/ b6 I2 t1 e! L用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。6 ]6 P7 P0 N: j/ T4 p6 ?; v
[defines]
# Y5 h: T' l+ W" S+ |BASE_NAME           = PrintLibLite$ F6 W/ e4 M. b% H: d
COMPONENT_TYPE      = LIBRARY  H0 {% o$ Q; x9 W7 r+ e- b
4 g0 d, o3 ^+ E, L8 P
[sources.common]
0 ?- y0 ]4 |( `* H# O7 h& T3 n  BoxDraw.c) N" H5 ~& \  ]: r# q& f
  Print.c
0 c0 o5 ~4 t4 s7 ?5 D/ k  Print.h4 k, J5 z) [# P( Y, N- c1 r3 o
  StdErr.c
3 f2 X! C, o5 G$ o7 ^+ d1 ?1 @" o  Unicode\PrintWidth.h7 N+ i+ C0 o1 {/ X/ V& j9 B0 {2 }
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1287

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
" S) Z* \3 O1 a7 |' V2 `你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
+ R( N/ a- D. |* _可能是其他原因,显示了但没有被看到,显示到其他的page中了。! O+ n1 h$ O  G0 r$ c1 w
重写一个print的东西,就可以输出。- L, ~( v% T3 C, c/ }
% c! n' q% z- j2 G( \& G0 H
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:% O+ p" t/ A$ @* v  I* w$ U9 Z
build...
* j2 `; o0 U) P0 n6 O6 A :error 7000:Failed to start command" e5 B  e1 P: v- ]4 d
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]3 U2 e) h4 k# r4 }0 S+ y
0 c. y( [/ m( U2 Q
build...0 U$ ~2 M0 Y8 U3 w7 V8 H
  : error F0002:Failed to build module) h# c6 H. ]2 }2 f% ]
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
% T) |/ g' R* c/ e& P
$ L! f8 v, w& u9 y* ~请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
" K& y' S  q, {8 q$ _2 flibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co0 J* \; _2 |9 [, {  p8 t$ e
okie referenced in function __Print7 A+ f- H  {! Y$ D1 ~! H: G: a- V
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
' @  ]% Q. p4 R- U! xeck_cookie@4 referenced in function __Print" q2 q- g) m: S& o
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
2 K; |$ O0 K& O% s* Sr LNK1120: 2 unresolved externals) Z( X" G) x3 W, j
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
, o  |0 @; C- \' x0 |\link.EXE"' : return code '0x460'
. u) S3 a- d9 ~2 ~Stop.! |! Z5 F- B5 y# O' E6 h# _
7 ^2 S4 ~" ]$ g% Y0 h
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-21 07:55 , Processed in 0.978950 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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