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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。3 ~6 L5 e' w3 G0 {. i
   希望大家一起交流交流。! M0 Z8 y, K: H* h
   这是最简单一个程序,在屏幕上显示:  "Hello World"3 a, D0 C# F8 z) T  ~) B
   这是直接使用gST-Conout功能实现。$ W5 s" D: X( l- C
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。2 U5 a! j( A& M  y) z
5 c# M0 u7 i+ n3 F! R" r, {
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
* }0 T8 g9 ~5 s* p  ]* ]   Out->OutputString (Out, L"Hello World");  //实现输出
5 w8 f7 v, S$ j8 q- E$ |* Q. h
% M3 Z% B4 q6 {4 E   小弟不知道如何调用EFI封装好的这些输出输入库。* r7 y/ u# F( L2 u. {
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1543

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
% \  R( D3 \) J* r+ h: |/ J加入这个PrintLibLite库后还是不行。- \, O+ f6 S9 l5 D3 n' @
编译执行不会有错,但他就是不显示。
5 Y# U) Y5 \3 \% l: p9 }4 c现在我将print.c, print.h放到同一个目前,
. M  M) S7 ^) ~2 S: A6 n4 L直接写到make.inf中。就可以显示了。0 i5 n- E% V, b8 v! ?: ^- b
当然,print.h要改变一下,不然找不到函数的申明。  f) O; E$ A0 Y, M+ l, k
* r) r; `. U3 t: R
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。3 D$ H  g9 ?  g( V6 |- Q
如果是生成PrintLibLite的inf文件部分。" A- _: r4 j* ]; u; v
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
. A& V5 {  L% @  @; I% K[defines]
! z, k1 B- C+ @* Y- YBASE_NAME           = PrintLibLite
# Q# _! f8 I! M* E, Z. uCOMPONENT_TYPE      = LIBRARY  @1 A0 U1 L. ^/ L6 J! ]# M8 a

: z+ L7 W% l8 a( H5 q* C$ b7 [[sources.common]
' B5 w5 K8 D6 q2 `, w6 h+ Y  BoxDraw.c& g8 b1 U6 @( x
  Print.c
# o& X8 M+ N6 g* ~) E  Print.h
0 b3 z$ ^  e+ g0 c( [5 K  StdErr.c
) l2 c+ [; _& S  Unicode\PrintWidth.h6 h2 |. ^3 R4 d: ]5 u
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1549

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz& `- W3 Z0 ?: J. l
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
+ E$ D( x) S5 ]" J可能是其他原因,显示了但没有被看到,显示到其他的page中了。9 G; z* q# L) ^6 y( Q- g: X- r
重写一个print的东西,就可以输出。
- c9 E! z+ l/ y. S, f, Q8 i: p% x* O5 n: n; H8 n
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:7 O) M# r5 t9 F( `
build...
6 T+ Z6 L( R3 N" m :error 7000:Failed to start command5 y8 m* ^3 F2 c+ D6 }9 k* i
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]& d8 N  p3 ~! s' g

5 o- ], _: n* k+ w& F- T% u. X1 \9 _build...
, o- S( `& s4 O5 G2 x/ `/ ]% c  : error F0002:Failed to build module
3 W/ |! {( t  R- r# E8 M         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
+ o9 _- H( H1 K9 N/ ]$ B; m+ G2 s2 g7 R6 ?" V7 }
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下- B- j/ }7 v- V( W
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
2 O, q2 K; e, J0 X5 f5 [  a+ hokie referenced in function __Print
! Y( }; a2 F5 m" h+ R% Ilibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
  n4 M# E% g" C7 ^3 E2 r+ ^" L5 Beck_cookie@4 referenced in function __Print
: n( \* e3 q! P0 x, F9 nD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
0 ?' D( K% X) ]2 P. ir LNK1120: 2 unresolved externals5 l5 U7 T6 b. E3 L. C# y( d1 [7 \6 Z
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
( C7 {7 U! T: A6 S\link.EXE"' : return code '0x460'' y1 n9 n$ d1 p8 G% B/ J) R
Stop.' ~! U( _5 a- p% x1 z
3 i3 x: u* U. D# u  V& X
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-11-1 19:25 , Processed in 0.058694 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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