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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
3 w# z  K+ |' D7 l2 F) c   希望大家一起交流交流。# D3 l' h7 A- [, a+ d- j' f
   这是最简单一个程序,在屏幕上显示:  "Hello World". v' b- ]$ [6 b* T
   这是直接使用gST-Conout功能实现。1 A+ K; z  C' I! @; _, q
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
& O3 g1 x: C# C
' L3 h" c# N, w* T4 j   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
% S, U" L" g+ _   Out->OutputString (Out, L"Hello World");  //实现输出
0 R/ s: q5 q# H3 O  q  x
: u, X% }# O9 v! \* y" f   小弟不知道如何调用EFI封装好的这些输出输入库。
. _" R  ^% N/ x! p: p9 n$ p   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1138

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
7 O) F- F3 ]8 U( `加入这个PrintLibLite库后还是不行。1 {# j1 K' y2 @: A; C
编译执行不会有错,但他就是不显示。! Z' J% j- Q$ F, `0 q7 j
现在我将print.c, print.h放到同一个目前,
$ V5 y# S/ B# n( v  ?' b& q# W- j直接写到make.inf中。就可以显示了。
' v" a! b9 m& y5 v( G. n+ M当然,print.h要改变一下,不然找不到函数的申明。
) G& N9 w8 I% {7 l" a4 D
+ V0 \- w- \* g明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
3 z  ?' T3 I0 s9 S' u, `) E如果是生成PrintLibLite的inf文件部分。
, o0 N7 V( e4 r0 N! x用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。  M7 D8 e6 F( O9 D+ r
[defines]
6 c& ?! M3 D* G! V% F  J" B: KBASE_NAME           = PrintLibLite( w2 z9 x) S, ^- p7 I$ q
COMPONENT_TYPE      = LIBRARY
: t" M% w, i' j  |& q4 g" t" }0 ?. K7 P9 j
[sources.common]
9 v9 K7 x6 n& G1 _- m* M  BoxDraw.c& }. K+ ?2 ^, W- U1 J5 N
  Print.c/ O# G, [) n( P, F$ N
  Print.h
' |1 n- U" J$ u5 q; A" V# _  StdErr.c' m% w5 ]  U# o) D, v
  Unicode\PrintWidth.h) a2 I: B$ h9 I
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1157

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz- U( G3 l: m0 P9 y" Y  ~/ V: f
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,# ?& i2 K# B! C# X
可能是其他原因,显示了但没有被看到,显示到其他的page中了。( r) B" ~7 E: e# D  h
重写一个print的东西,就可以输出。
4 P% x* A0 f- m) [' o
. K0 n7 Z! p) m1 P8 uprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:# L* W9 D* \; X! L
build...  M+ ^7 M1 Z$ W' |0 W
:error 7000:Failed to start command! \2 n: m: Z0 b" Y
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
! T/ p! v) r( b8 H+ ~; G; g8 q! k7 @
build...) F4 Z. J. l; F" y( O
  : error F0002:Failed to build module' X7 N# `; b) E- f* ~& Q' J& C
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
2 ]7 w# X! S; K! L& d! ~/ s' P$ m, ^5 b
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下- Q! T1 C/ i/ ]  K, R3 `' [
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co' Z, S  u$ b6 X1 w
okie referenced in function __Print
0 ]' x: U! C" \- |2 olibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
! F0 Z5 r: F" [5 N/ Weck_cookie@4 referenced in function __Print
/ L* R4 C5 ~. v! j* x& L. TD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
" C6 k9 T+ G. F& a9 kr LNK1120: 2 unresolved externals
# W+ [. A9 z' f% b3 xNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
$ T3 a1 L1 o- ^1 |2 b9 ^, o\link.EXE"' : return code '0x460'
# g# m0 m1 f! G4 i/ iStop.
- u. I3 [& U# k
! K$ `$ o* P' _请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-1 04:10 , Processed in 0.066932 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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