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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。- ^( U+ p2 {' {; R% {8 r1 ?
   希望大家一起交流交流。# `1 z$ ?/ b/ o0 \; Y# B
   这是最简单一个程序,在屏幕上显示:  "Hello World"# c8 u6 R# C' V3 ]3 w
   这是直接使用gST-Conout功能实现。" p6 h- `. _, Z4 j1 t! s
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
! T! Q8 x( c  E+ [/ O8 u, A5 r1 A: j- @1 e. _* Y3 G
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0! @4 U. _3 u3 d% x1 z
   Out->OutputString (Out, L"Hello World");  //实现输出
/ [9 Q2 O0 \) {! k
' m. S- U- p- z, \8 J( f* v   小弟不知道如何调用EFI封装好的这些输出输入库。' g+ T# B( g0 b/ t9 w+ T) i
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 901

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
1 V4 v: u- @9 J6 [+ y. ^加入这个PrintLibLite库后还是不行。
9 v8 ~* p9 o3 \4 i. n编译执行不会有错,但他就是不显示。
" `6 c4 B; c: ~7 @+ }5 T/ {现在我将print.c, print.h放到同一个目前,
# r4 b( ~7 y3 }5 Q直接写到make.inf中。就可以显示了。5 t$ s+ J0 z/ K: q" [6 x
当然,print.h要改变一下,不然找不到函数的申明。: U5 ^  q4 H1 y8 h/ F0 v9 i

1 e  u9 l1 ]7 {9 S明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
) `: c) G- M3 {& Q+ L如果是生成PrintLibLite的inf文件部分。
' q6 S3 `4 o9 P$ r用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
  p6 x6 G1 X5 ^  Z5 }[defines]+ O; T( p1 F1 d
BASE_NAME           = PrintLibLite& i4 Y0 j- O, l0 C2 A5 |2 j
COMPONENT_TYPE      = LIBRARY) C5 N6 s+ S  \! _' F  ~

+ P' V7 v7 Q- N[sources.common]
& [# P2 Z  D+ P$ k/ Q/ g0 p3 `  BoxDraw.c
& `9 ?* ~: g/ ~7 b  Print.c
7 l4 `2 B$ M% A! y9 W+ h8 |  Print.h" a* W( l" r+ q: a. e( p
  StdErr.c
) H. q. i7 f1 o% f  p7 U1 q8 a  Unicode\PrintWidth.h# S/ S: `# R! ?7 J7 D/ c  t
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 908

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
2 U0 D1 I0 K* _8 F你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
: w0 ~* L2 _. _7 F* D* R1 [5 q% o, |可能是其他原因,显示了但没有被看到,显示到其他的page中了。
% Z5 I* e$ g' u0 }, k5 n9 p重写一个print的东西,就可以输出。
  C( P6 R+ ^  _9 t: }3 Q. `3 Y. q% t) G' S
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
- Z! m4 Q+ `6 m0 t  Jbuild...
4 H- H* P  @5 D3 M2 w9 |; q" t. q :error 7000:Failed to start command9 r* p4 _# Q: {3 E
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]' M1 c1 P# J: @1 E1 f2 E% @

) J5 u& Z) A: Z: d" `- J8 N* Wbuild...
3 B; ^% h# b& T5 |+ g  : error F0002:Failed to build module
- D) ^# j1 n, r. _: N         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]$ i# e2 T( O$ x4 z1 i2 p

/ B* i6 I. u$ Y7 |请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
1 [4 j% Y; ~' ?- g+ Olibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co7 R" j. k; V* K: b9 v& g) K
okie referenced in function __Print
- P( c+ A1 N  ?  d0 Q# s9 K. ylibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch$ J- o1 M% v6 V8 J) l$ H3 X& h8 N! z
eck_cookie@4 referenced in function __Print! ^, N) Y2 i) @9 v; }- l; w
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro1 l3 Y2 E& m, Q* e/ Y) D9 ]
r LNK1120: 2 unresolved externals
0 i& L3 \* e/ w0 q. KNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
% v( M4 y- E. J9 j$ f\link.EXE"' : return code '0x460'
' p) C  h. `! x/ D$ `2 x" aStop.% ~  @7 u  d" ~6 @2 H  t' @
0 O' ~8 |, m( F0 m3 f7 L2 k4 J
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-22 04:58 , Processed in 0.051466 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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