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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
8 k( f2 ^! p4 s3 C7 n   希望大家一起交流交流。
6 S" Z; z# ?8 r( r5 ~  O5 Q   这是最简单一个程序,在屏幕上显示:  "Hello World"
0 L  l) [$ g1 T2 B* w; H   这是直接使用gST-Conout功能实现。; Y( A  G& k3 s# Z# f$ S
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
4 |% [/ r1 \) f& w2 p( U' R% k1 Y* |5 X+ q% v# U; V' ]
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0) B1 s. e/ y" G0 e" `( r7 C1 s, g$ y
   Out->OutputString (Out, L"Hello World");  //实现输出
+ R# @1 k8 m1 C# A' M1 w% E9 @  S% ]5 K3 C
   小弟不知道如何调用EFI封装好的这些输出输入库。
3 L8 Z+ F3 j' A# I! ~5 c   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 697

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
$ I  _- V+ v+ p2 G( z加入这个PrintLibLite库后还是不行。
, D. j. }0 w( r9 F/ V8 }编译执行不会有错,但他就是不显示。
9 [8 _% I. \5 c! F现在我将print.c, print.h放到同一个目前,2 s2 n' ^! f$ a+ d. Z5 K
直接写到make.inf中。就可以显示了。
0 C- F3 v2 R* O8 E  S当然,print.h要改变一下,不然找不到函数的申明。# M2 Q& ]% B/ A5 {

7 ^7 l" ^. j1 N* G$ v3 x8 @明天了如何输入,但不明白为什么用printliblite不能得到输入功能。5 V$ |% h, k: T: @
如果是生成PrintLibLite的inf文件部分。
2 N- ?/ n& ?  J- L& l% B( P5 K用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
. \6 d5 t# V( \- `) z, N[defines]8 O9 \' t6 u# \
BASE_NAME           = PrintLibLite3 ]3 {* r' x6 r
COMPONENT_TYPE      = LIBRARY- I! b0 J0 g8 k, K

9 U' \! z  }5 L. I. j: s[sources.common]
! ?- c1 L9 O$ z) n  BoxDraw.c
6 I& H+ k; O* f8 W  Print.c
* K# _6 M2 q0 C: c  Print.h
" O3 z: A% s7 d9 O  StdErr.c
  y: o' K# f/ Q. z! n* n+ f2 b  Unicode\PrintWidth.h' c! a4 c0 N) ~/ Y0 B8 d; p6 p4 h
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 705

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz% ~, |) B  l' `7 a, Y6 x4 `
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,: v# W: t! r5 X6 y$ z
可能是其他原因,显示了但没有被看到,显示到其他的page中了。
# r* o! g) u- T% [* Y& y6 L+ {2 e重写一个print的东西,就可以输出。  ]5 ?) U& [6 t6 ^
% z+ a$ u* U7 \# i# g9 u$ V
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
9 ^/ |: \. r$ x7 {( Qbuild...2 a8 }% i, T( M- C, x3 s0 S- j! r, M
:error 7000:Failed to start command
, h: n& y/ R9 B5 i* O                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
( `0 Q  R" a, B/ n- U" \
" C4 k" D3 \* x7 @build...3 ^; T5 n7 l2 }# t( G3 V
  : error F0002:Failed to build module
& O7 U7 \% m- U3 B0 p% P         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]8 r/ k  c( \2 C  X9 t
. H9 a: w  `( i) B. \' ^* f' \
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下. U7 U- [, V2 _! L6 l) U4 z9 F
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co1 y0 H# G) s; e; k
okie referenced in function __Print3 N) R! }0 L7 E* s& u
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
: }, L6 q  Q8 L* _eck_cookie@4 referenced in function __Print
* K! `( z7 d) RD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro3 D8 C# R+ _# l! I. B
r LNK1120: 2 unresolved externals
- N3 s) ?( n4 eNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
5 L5 [$ P7 D& h- {4 c3 u, h\link.EXE"' : return code '0x460'$ B4 I  `6 k; m4 U
Stop.
, k4 w$ A! E# }
- Q' s$ ?9 l5 c; `4 u/ O1 U! f8 d请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-4 21:31 , Processed in 0.049596 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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