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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。7 L: o: Z8 O/ H& i
   希望大家一起交流交流。6 X* l# N8 i2 n$ F
   这是最简单一个程序,在屏幕上显示:  "Hello World"
. f! j7 k! Q$ {/ Y# C; S   这是直接使用gST-Conout功能实现。
' P  v9 G3 n- D5 D9 p/ P   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。8 K4 c2 d" K; G* Z/ y4 e) l7 S
/ S! B8 x: q! j
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
4 q2 ?+ k5 x, h& M1 u   Out->OutputString (Out, L"Hello World");  //实现输出" ]9 |) P3 B; m9 {3 u$ `! n
0 v- {3 @8 b( R2 f! f3 _
   小弟不知道如何调用EFI封装好的这些输出输入库。
$ H9 @' F3 z! {4 H& C3 \6 {   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1558

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
( ]4 o# {* U" Y* ]% w+ Y加入这个PrintLibLite库后还是不行。
* N, ]  o6 ^3 n# c8 B5 i8 r编译执行不会有错,但他就是不显示。' k! ^- U# L, ^
现在我将print.c, print.h放到同一个目前,
' i( a4 @  a8 U) W. I0 X# u* H直接写到make.inf中。就可以显示了。+ Y+ A- z2 x, Z" @- \
当然,print.h要改变一下,不然找不到函数的申明。
- D; H; k& Y, N6 Z" {0 p3 ~
) L1 R* Q# i5 D7 p: `明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
+ W3 q, r, p  i- [% u% `1 k/ J如果是生成PrintLibLite的inf文件部分。6 M3 z+ F6 ~( T& `1 D- K4 R: h5 u
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
( i) I$ n# {+ Y; `# g[defines]
. h3 B& ~. P2 v( nBASE_NAME           = PrintLibLite4 E5 N' _/ Z# \
COMPONENT_TYPE      = LIBRARY
# `2 W" E" _1 A& u7 ~
- q, a9 o5 h/ H' |2 w[sources.common]
: G7 {1 C0 d: b  BoxDraw.c
5 c! v/ v$ T3 g+ V2 |6 f; }4 l) P  Print.c/ c7 g# s: a. a9 l5 R5 d
  Print.h
" u3 W1 V* O( q" v0 |8 _  StdErr.c  s4 O8 L6 ?. B. a1 `5 D9 }2 V
  Unicode\PrintWidth.h7 W6 J; c* J3 s! ~& i" t
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1525

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
- |5 v3 ?7 D7 C, N) L% b4 `你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
0 D. o- _# b$ C) Z) g0 P" N) q可能是其他原因,显示了但没有被看到,显示到其他的page中了。) H; g; w! v& y; q* ?: a) _( ]  Z
重写一个print的东西,就可以输出。
/ {; U4 @" Y! o( `% `8 y9 H
4 G; w. X( s3 F5 E/ d: p$ f. F0 s" vprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
" d7 A5 s! V9 H7 T% W% Vbuild...3 V9 v1 n! R( ~& z3 {$ W
:error 7000:Failed to start command
7 [$ X( u2 ^5 G& A3 K5 o                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
' r% J* C' Q4 Y
  H- K, u( x" _# _! Q3 ]( zbuild...8 q% k( j: c+ Y# ]) d& S0 V
  : error F0002:Failed to build module0 ~# S* T7 s) `  S% K1 ?3 k3 V0 r
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
4 h) y* L0 R0 T, J& F4 ?
3 u5 y0 ?' q1 J+ Q+ b+ C8 {  S请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
) M- t/ Q  M+ C: B; X4 elibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
8 A" @0 Y. j( V7 g* E- j' E0 T! d; pokie referenced in function __Print; c: G% ^; \' n5 D
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
8 G: ]0 J& [1 Veck_cookie@4 referenced in function __Print
2 n6 |$ l. j" r5 p7 XD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
6 S0 f7 e* T* {8 D1 Mr LNK1120: 2 unresolved externals
0 m; M9 R2 O8 }! c+ v  GNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN" F* ~& s( L5 ]& M
\link.EXE"' : return code '0x460'
% A  v  r; C+ w' YStop.
. a1 k! o( o% T7 S  e# {% l3 ^
6 p6 k- o) `& `$ h' e& I( |+ I请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-10 12:12 , Processed in 2.500328 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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