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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
* Y( I+ t. A) |3 l8 N' v   希望大家一起交流交流。2 J1 M) {9 R* M7 X. s: ?" G2 U
   这是最简单一个程序,在屏幕上显示:  "Hello World"2 O2 ]9 g3 E5 v1 ]
   这是直接使用gST-Conout功能实现。
: x) M/ ?' Q9 l7 K8 c$ Y   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。; ]' S3 O3 R" _; o' Q

! I2 |7 V3 Z- c. _* G4 X7 g. n/ p& q   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
; D7 w9 l5 `, F3 H0 d2 C   Out->OutputString (Out, L"Hello World");  //实现输出
. _2 d! l6 n0 j' }
& R5 R  |# [$ H1 R% J' W   小弟不知道如何调用EFI封装好的这些输出输入库。1 |" F- `$ g+ m4 c
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 822

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。% S1 R. ]! R* r: q, S1 q
加入这个PrintLibLite库后还是不行。
9 h  n$ \. `# O3 n5 o: C% V编译执行不会有错,但他就是不显示。/ f1 l5 a$ G- v' W4 I& e
现在我将print.c, print.h放到同一个目前,7 g; \) L5 E- u2 N( y
直接写到make.inf中。就可以显示了。! k- U6 K$ |: \6 }9 S/ h, Q1 Q
当然,print.h要改变一下,不然找不到函数的申明。1 f& M1 H3 ^( f* p. i  i
6 z1 I$ O5 D; M3 _/ o' s
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
9 ]- g* S- h: W: p1 `# ^如果是生成PrintLibLite的inf文件部分。
# |4 I% c+ O1 v! a9 S2 W用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
7 A) g% J9 s- [3 B( h[defines]
4 D8 c5 x, @5 p( [* L! @BASE_NAME           = PrintLibLite
5 D2 D! J& p: P- |( XCOMPONENT_TYPE      = LIBRARY
. s( r* H+ H% v& Z; V% e/ i* W
4 X1 \6 K0 u' X) N[sources.common]& Z2 `, N" l& }) v6 g4 n3 g
  BoxDraw.c
, h$ O8 m: Q& @2 K9 L+ W- q) H  Print.c
. |, b4 p4 c' g2 ~  Print.h6 F$ ]5 V# z5 G& g0 f! i
  StdErr.c; T  d! B1 F( ~8 F' g
  Unicode\PrintWidth.h4 [( K1 r- |. z$ }
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 830

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz. G! B: ~/ d$ z- T- H! E: _% R
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,3 F' ^1 X/ K$ O8 ?8 M0 t
可能是其他原因,显示了但没有被看到,显示到其他的page中了。" c5 E( T2 K9 ~" h' p+ q* C3 w
重写一个print的东西,就可以输出。& r7 A; @# C4 t5 C4 N

; ?7 J5 p* O2 `8 h# _$ xprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:# z/ C, I" t5 i; Z* I" E! m
build...1 C- X  O$ u1 a
:error 7000:Failed to start command
. g/ A- C( |" H' T: J                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
2 P8 i5 Y4 E! v! Q( y! Y  H3 s, W" t4 I
build...  ~  d; g3 S7 C3 Z
  : error F0002:Failed to build module
4 p% q1 `* F2 D         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]1 h9 g& o& g7 w" B* R' q) w4 L

. a/ J! V9 P3 r请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下1 M$ \( O) y) A
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co  c& }1 a' J8 P/ J& O0 s2 y
okie referenced in function __Print
6 F3 P' u. @- }" W7 ~libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch% n+ A& a$ f5 t7 E$ C6 b
eck_cookie@4 referenced in function __Print
; H, H# s% V) l& F; BD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
/ a( v* H3 x/ x  p$ d; Fr LNK1120: 2 unresolved externals
# B/ ~9 `" F5 N+ \, v: ?2 LNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
! P1 o4 Q5 q, w. A\link.EXE"' : return code '0x460'0 x6 g+ f2 U. P: s5 c
Stop.
) I$ f, z( K' i3 r0 v7 d; r& v* n2 J/ c. q# Y" k) A0 w
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-5 00:38 , Processed in 0.023993 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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