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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。+ q1 I9 w/ X" H5 I. \! V
   希望大家一起交流交流。. }$ T4 m: \. K. [
   这是最简单一个程序,在屏幕上显示:  "Hello World"' M8 w; B4 M( P0 S+ g& R- F# f
   这是直接使用gST-Conout功能实现。2 R" Y$ z5 I# N) |( t( m& Z
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。# }. K) `2 z" I

$ W3 E( h# W: c; z/ Z7 Q6 U   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0) L% p$ }9 N* B- X
   Out->OutputString (Out, L"Hello World");  //实现输出
0 n/ Y! R& ?$ J4 M  }4 B3 A, l( r
, y% ?, V8 B8 y   小弟不知道如何调用EFI封装好的这些输出输入库。
, H3 T  x% k6 s# }! j9 D6 ~! k   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 919

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。9 V, b/ Z) @. F" z7 i) ~% v# X. \
加入这个PrintLibLite库后还是不行。
7 l6 f; A6 T  K/ X编译执行不会有错,但他就是不显示。
0 J- ^  \# B! p. }现在我将print.c, print.h放到同一个目前,
2 D/ P3 z3 P/ [& g7 j! }5 t, ]" {直接写到make.inf中。就可以显示了。
# X& A1 l9 i+ ]) C: I3 ?当然,print.h要改变一下,不然找不到函数的申明。
$ t( q+ B, ?: ~8 }# V' u
% [: l* s: ^0 J9 ?% G明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
2 b: Y  s* [. @( P如果是生成PrintLibLite的inf文件部分。0 `3 n, B% L* S
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
2 ?" x; K. r5 @# C9 n[defines]* F: R" ^& j0 e7 ]* z
BASE_NAME           = PrintLibLite. u" k, a% q' B( N) g
COMPONENT_TYPE      = LIBRARY1 F2 ~1 x$ u2 l0 h

2 u: i9 P$ i, U2 f* _5 p  a[sources.common]
- w9 p5 J1 e2 \2 f( J7 C0 T  BoxDraw.c
" M/ S' |- d4 Y9 o6 S  Print.c
; F7 o( v) C8 L4 `; f  Print.h$ m+ l: M, ~3 _
  StdErr.c% I! O4 a3 f1 Q, q
  Unicode\PrintWidth.h
7 f0 W& _3 h& s6 [. n/ Z1 r  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 930

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz1 l3 I* p! T1 N7 c! n
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
  D; g9 [9 G4 ?可能是其他原因,显示了但没有被看到,显示到其他的page中了。5 V  W; w5 U: R* W# [4 i* A8 |
重写一个print的东西,就可以输出。3 }- e6 o/ [/ |2 K

2 Y* O1 h6 E5 ?4 O( m+ e: y' ^! \print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:) b2 K0 A+ Z: U
build...6 G% R' q8 U' _% t" T8 j
:error 7000:Failed to start command
* S( r% D. c, }/ Z  Z$ ]6 |  a) h                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib], |% M! o/ |' D* r

% r4 j3 z2 b! R' i: p$ u  zbuild.... h& j# ~! N: e* p: R
  : error F0002:Failed to build module
- A# ^, I9 A1 P* t         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]* g5 b2 j0 u, }& V  r- j$ B
4 F! T% ^: e/ P! Y2 e) v
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下" J1 h( V( d% X* k' h
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
: E# [/ E& B. sokie referenced in function __Print& n  d& A* Y  T# n6 L3 H- C4 k2 ?
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
" c+ O# q6 i" ^eck_cookie@4 referenced in function __Print! ?$ P& u9 Z* t2 Q% X5 {+ X1 O" _& c
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
6 }4 g# w; P1 [- H* cr LNK1120: 2 unresolved externals8 l" W. K/ @& q( H5 w
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
- u5 R4 H$ p3 g+ S\link.EXE"' : return code '0x460'! k/ q1 O6 E9 i1 v; W9 h
Stop.; W! D( `$ V3 ]' }! ]

7 [" o) {8 [+ F& {6 ]2 D0 K请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 05:23 , Processed in 0.036114 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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