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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。2 ^+ U! G1 B" F$ K! }. k+ v
   希望大家一起交流交流。$ H1 A* D3 A' D/ I! s- m
   这是最简单一个程序,在屏幕上显示:  "Hello World"
# B; n# O) r5 f  B* {- P+ B$ c   这是直接使用gST-Conout功能实现。
( w* f5 T4 `! I; ?8 ^   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
' E8 m# k+ o$ x: E
: |! w1 [  a/ v1 I   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 07 _  [+ V8 ^0 @5 D4 y7 _( x9 r
   Out->OutputString (Out, L"Hello World");  //实现输出
; |8 d4 k( Q2 }8 S/ @) E5 x8 P3 F; V7 W$ m5 S6 `
   小弟不知道如何调用EFI封装好的这些输出输入库。. y  O, V  P. \$ q( ?
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1583

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。9 A5 _. S; }+ @$ l6 ?3 T( q
加入这个PrintLibLite库后还是不行。
" v( w6 i6 [' S9 u5 I3 t编译执行不会有错,但他就是不显示。6 C( n( \3 N* t/ @1 t' Y) m
现在我将print.c, print.h放到同一个目前,% c; @0 a! |/ Q0 `+ G
直接写到make.inf中。就可以显示了。
3 G6 ^7 R, G' X$ r! G当然,print.h要改变一下,不然找不到函数的申明。  c; R$ `& |8 J+ Q+ i" C3 A
6 `$ q4 u- B8 b. w* w5 x5 x
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
4 p! U9 S6 G- G如果是生成PrintLibLite的inf文件部分。/ f1 e/ }* b/ m3 ]: N! ^
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
1 Q/ B& s7 R$ |7 {5 a8 ^: ~[defines]
5 X- h+ n1 V; cBASE_NAME           = PrintLibLite) V' ^# v6 b# u8 S2 j# e
COMPONENT_TYPE      = LIBRARY9 k0 E8 {6 p' k) y: r
3 Z! J# X8 ?8 H' ?: Q- _; C# ]
[sources.common]1 w5 |; O3 H- Y% g" c3 Q
  BoxDraw.c& p7 t9 \- A- t: q
  Print.c
; ^( A' }* U: ~# ^% Z: n  Print.h
3 i+ G# h" f8 v5 K  StdErr.c
. B6 b% v& k% P) Q# M8 D/ L  Unicode\PrintWidth.h. S5 H2 N( U) i5 o3 z) w, U
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1546

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
* b8 S7 c1 u) J; x, R7 ]9 E你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
7 G8 d2 x1 e" q" {* q可能是其他原因,显示了但没有被看到,显示到其他的page中了。
# J1 u" n- c7 }4 G+ t- f重写一个print的东西,就可以输出。
$ s, j* W9 s0 |& C; o4 J. O' L, X4 q8 ?
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
- X; Z+ Z- r" |( O3 G* Vbuild...
% S+ _  W" {) c* ?! y! v+ w6 y1 O :error 7000:Failed to start command4 i2 E1 J+ v  f% @, d2 Z, W
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
( M$ _8 k5 |7 [2 q: m; k& D
7 ^. S+ N  ~6 f$ w& T5 ^' l- p  ?6 t" sbuild...
; q4 F, x4 W/ X7 X  : error F0002:Failed to build module
: e& H, K* i9 d8 Z% ?         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
* m$ H1 B4 u( F" Z( s
9 w/ m" Q2 b  t9 G请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
+ C, P) G- [. P4 A* c) V4 h3 zlibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
9 }6 \( C' x; x8 p4 {& Nokie referenced in function __Print  Z* d9 X8 b% G9 I# }1 p7 B, ^
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch' Q+ T$ N9 V7 g: ^# P
eck_cookie@4 referenced in function __Print/ E0 t0 F/ i/ M, G6 D8 a8 V, N0 S
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro" `3 X3 F% I% }/ z& E
r LNK1120: 2 unresolved externals
  \1 W5 h/ D" q( U# WNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
3 {" T* D! a0 ~& f3 A0 f1 G\link.EXE"' : return code '0x460'3 ]8 n# P0 \0 t$ i3 ~7 i; c6 P
Stop.9 Z6 w. s' v$ B. U) r/ ?

' g& D7 r: {0 M+ e: h( H请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-19 12:21 , Processed in 0.043559 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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