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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
* {) X3 L/ u8 T, x   希望大家一起交流交流。
% P- i/ X; _' M. v3 W   这是最简单一个程序,在屏幕上显示:  "Hello World"' q8 P, q9 d6 R2 i1 ]6 e
   这是直接使用gST-Conout功能实现。2 O" H* Y+ y% v5 S0 D1 K
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。3 w, a" z' j: e! P: W
3 r0 h3 o% K0 e) }% b
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0. D/ |' b; [, q. F2 {; y
   Out->OutputString (Out, L"Hello World");  //实现输出' _: B: h+ p4 I0 U2 m& i+ [
- R7 d0 Z1 k- N+ j
   小弟不知道如何调用EFI封装好的这些输出输入库。
" C& A* Z! ]/ a   希望大侠指点一下。

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 | 显示全部楼层
问题解决了。
. a5 U4 `% }/ N' t加入这个PrintLibLite库后还是不行。+ {# W1 {1 H  T" a& F/ |
编译执行不会有错,但他就是不显示。
& x! a0 D1 w) r% \( A" ?* r* z- |8 f现在我将print.c, print.h放到同一个目前,
+ C7 R* l, I; q/ g- H直接写到make.inf中。就可以显示了。+ x6 Z% C2 [2 G# ~3 c* O
当然,print.h要改变一下,不然找不到函数的申明。
) Y9 ?: W1 D# c& ^# |. c. k# d' t, j. M0 j- m# n* P
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。0 ~& M8 A: d& V
如果是生成PrintLibLite的inf文件部分。
) F# ^5 ?7 k3 e0 T, v' R" i用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
8 C2 {7 W! A8 B$ b! M3 n$ Z% N7 L[defines], P4 h% ^  u  }) U  E" \
BASE_NAME           = PrintLibLite4 f+ r" ~3 K! h% J) ~6 T
COMPONENT_TYPE      = LIBRARY# V: B& m" k7 h9 C4 [; n

0 G) z& x7 ^7 a) Q[sources.common]! d% i6 C' O# I' J5 Y8 j3 Z# P
  BoxDraw.c8 j( c, K' ~4 a- R
  Print.c' o1 G; s( y* P: B
  Print.h- m1 y& X7 c' ?9 e5 _
  StdErr.c
! I4 [; V4 I; Z, Q  Unicode\PrintWidth.h
8 B, z5 E+ S% Z0 n& W  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1467

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz1 J  C6 |) i  }, t# R
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
4 e: T. E9 Y7 Q' F可能是其他原因,显示了但没有被看到,显示到其他的page中了。" n/ T4 v& ~5 R" U8 ], f
重写一个print的东西,就可以输出。1 [! O" ]# C4 P- K) ^4 e
! K# l! k" t4 C3 B- Y3 L
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:1 C6 s* c+ l9 j, P
build...  g' k, y, r/ `  U. j
:error 7000:Failed to start command  Q0 @) L& N: ~" T
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]1 b. u, w2 H+ o+ ?3 b* H$ e

6 S4 W5 T$ ]7 I# l" W. _build...& K) [8 Y# u+ R# {
  : error F0002:Failed to build module5 \7 T- ], {+ N3 ^+ V; U* }
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]' p8 _+ F: G& B8 {1 L, U
" p: O- U2 Q) o( w0 t
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下/ z+ L" h: C: p7 s9 V1 e  K* O+ D6 {
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
1 J5 M, \8 b1 V/ v+ f+ \8 qokie referenced in function __Print
8 @5 c3 ~0 L1 tlibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch! S) Y3 u( ]& l8 M( U( u
eck_cookie@4 referenced in function __Print
2 k1 v3 L) h- W0 y3 R  q6 QD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro$ N4 N2 ?* }& d% A1 d! K
r LNK1120: 2 unresolved externals
9 j6 e: G- r) G$ j' |NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
! f* D' ^4 V8 a2 ^, H- G% X\link.EXE"' : return code '0x460'
2 ]/ e% O7 b5 b/ e9 J5 SStop.) A9 R$ |! h) [3 r& w( G% s

/ Y/ K' ]' b* t1 c: Y6 @请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-25 00:01 , Processed in 0.307632 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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