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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。7 c- A# @; F* o! v* r
   希望大家一起交流交流。. z7 P( ^2 [& [6 T
   这是最简单一个程序,在屏幕上显示:  "Hello World"
" s2 @5 S2 b7 Y" N2 C   这是直接使用gST-Conout功能实现。  V1 X* w0 j. R' |
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。; \' O; j+ ]3 G

  B6 F3 q" q1 U8 A9 `& f: d   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0; A# b5 {- J; g; ?* o( D7 {
   Out->OutputString (Out, L"Hello World");  //实现输出
5 w6 d: h4 T6 n  ^) g1 q1 ^8 W  m; Y% a
   小弟不知道如何调用EFI封装好的这些输出输入库。
; J: y4 h$ Q* {7 p4 F( m& ?8 m   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 979

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
( L" v& b% H$ m9 P加入这个PrintLibLite库后还是不行。
6 Q: X5 @3 v7 e8 i编译执行不会有错,但他就是不显示。- Q4 o+ ?# P5 o3 Q* c9 J: x/ ?0 _4 m% S
现在我将print.c, print.h放到同一个目前,
% V8 S. l, ?  j% h0 j8 b% f直接写到make.inf中。就可以显示了。  u3 D* S- ~3 _* K* R* B
当然,print.h要改变一下,不然找不到函数的申明。
, I7 u9 C; j$ y3 K6 u9 _& N1 l' B+ \( k  k
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。% t7 g! }" c0 N1 L) w- c* i
如果是生成PrintLibLite的inf文件部分。
. f: O: t4 C1 H, \( V  i用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。5 ~* u; W5 s  }
[defines]
$ `4 \5 d' N2 F3 S* G+ @BASE_NAME           = PrintLibLite
5 C: _! \3 b% b+ I+ M5 q4 N' NCOMPONENT_TYPE      = LIBRARY
, {$ b1 E7 L% B' ~: f
/ r  H% d/ Z; f; K[sources.common]5 _2 P; m1 O" B( R6 n) G! Q; y* z
  BoxDraw.c
9 h5 m- j1 D% R! j* x' r: Z6 j$ u  Print.c
5 C) |$ p0 g  \) M  Print.h
3 d1 ^3 f/ m& I5 k  StdErr.c3 |% [6 I; S  q4 \2 J- q" O
  Unicode\PrintWidth.h; f+ i8 V3 g5 v8 v: n0 C% G/ O
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 990

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
  h2 N& }8 i7 A" D你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
0 t/ \# O1 B& |) a- X7 X可能是其他原因,显示了但没有被看到,显示到其他的page中了。% {' x5 C0 }# S' ~0 z
重写一个print的东西,就可以输出。
- R+ n* M9 a* b' Q; ?
5 _' z) j$ U: u$ aprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
5 V  A" T+ Q2 N4 e  sbuild..." B( l$ I% V6 f8 z$ j# I
:error 7000:Failed to start command7 R& B/ x. M2 O4 o* c) n- f
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
3 n. ~  _. t* {1 t7 A+ K! t! a+ e- T) w* ]
build...8 T0 _5 w# u& }
  : error F0002:Failed to build module! B' d6 q& F9 V3 {  T
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
: ?! }+ \, A. u3 ^5 k
5 z# x# d8 X$ E; V- i请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
/ [0 V$ a+ D% @' G0 n* elibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
( o& a  L* l9 y" C2 {okie referenced in function __Print* e" Z& S" {% \$ [9 k$ |
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
: l; Q  B5 S! v' I/ D' Zeck_cookie@4 referenced in function __Print
) e5 g& K4 A! v& k" p4 z( LD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro% T/ Q5 B* z  J: U0 S' o* u( X
r LNK1120: 2 unresolved externals
2 y3 C# T" D4 M5 \* ]- O# WNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN3 N5 \; E# m9 J  h: A
\link.EXE"' : return code '0x460'
' I/ J+ D4 K) u& G& B$ L/ U/ ^, ?: IStop.
( |" P9 n1 C8 i6 {  K# ~$ v5 ?9 U: V- U6 X1 I+ r8 d2 d3 @( _5 D
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-21 15:32 , Processed in 0.063671 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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