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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。7 i2 Z! z8 y( S8 n
   希望大家一起交流交流。2 G$ C) n% H/ B* M  w
   这是最简单一个程序,在屏幕上显示:  "Hello World"* d5 b2 z  f% _/ q4 o( Q
   这是直接使用gST-Conout功能实现。
3 w1 j! L; Q6 D4 p9 q   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
8 a3 D+ T( ]+ f  p) Z" O: ^! i- O- s8 c9 C$ D# b
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
  T; }. T; g; A+ I   Out->OutputString (Out, L"Hello World");  //实现输出% Z7 d' k' ^6 i. F) L
# z0 W) B4 u. M
   小弟不知道如何调用EFI封装好的这些输出输入库。  {3 Y1 e' Y% ~+ d& ], x
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 513

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
7 R$ m3 a3 T$ V5 f加入这个PrintLibLite库后还是不行。5 A1 f8 N; u2 h. v
编译执行不会有错,但他就是不显示。
0 u- I9 I0 o: D( C! B; q现在我将print.c, print.h放到同一个目前,
. J' }$ M& C* _0 z+ G) j直接写到make.inf中。就可以显示了。6 ]+ g! Q# j5 T
当然,print.h要改变一下,不然找不到函数的申明。
; r) Z% w" I& W- P0 H3 l1 j2 B1 x* E, O; D% o. [* g5 n; [# Y
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
9 d8 U5 v# l; p# n$ {/ ]0 u如果是生成PrintLibLite的inf文件部分。
7 g3 l* u4 b0 A# A用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。6 D7 ~2 a7 W1 G: e
[defines], a% A$ @9 B7 d; u+ R% |
BASE_NAME           = PrintLibLite
! D+ z4 n7 Y2 w, ~. Q7 gCOMPONENT_TYPE      = LIBRARY# s1 M7 i; k0 `8 ^5 m/ ]- F
3 E# P! E8 O- r; T
[sources.common]+ N6 c% Y3 C: t$ Y  o) H2 r+ J$ w; s# G
  BoxDraw.c
& [. N3 \4 h, t: c+ h  Z. @& b  Print.c/ b- g7 `+ R+ x7 ]; F) }. X+ r
  Print.h
/ z, Z4 ~1 ^$ u, P/ o  StdErr.c
4 K# ~$ N. h" W# T8 L/ E, I& u) k  Unicode\PrintWidth.h5 A) N% j, [1 O$ W: |: N7 u) L# J
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 513

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
4 {$ a. M& q: L) Z3 O你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,% N" ?2 @  d" W8 ?6 q+ o
可能是其他原因,显示了但没有被看到,显示到其他的page中了。: b0 T- u2 ~0 A' w+ P) Z$ J. n
重写一个print的东西,就可以输出。
9 z/ L8 y* O3 P) c7 w4 E# a
2 h. d' d4 n# ^5 o9 z* C$ N% \& K- eprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:* b$ B: Y  S3 S  W
build...* W) t( b* J  a  k( ]* b: c
:error 7000:Failed to start command& x/ x, e/ \7 V/ X6 M; {8 U' U$ _1 b
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
# _! o$ X, `) h3 R  Y0 L" `# U6 p7 Z) H9 N; F
build...2 p, P! i5 C% H7 f) e8 O% D
  : error F0002:Failed to build module
7 H9 y1 p: B' d: }         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]4 o/ [5 t; E  O- S4 @$ a# ~. `) ]+ P

9 a* o& f6 A0 O- J* m请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下/ i- K  E' ]  ~9 _+ x
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
$ G( P* b# U8 H  m3 v( Nokie referenced in function __Print
8 h9 A0 i2 U* b3 ], ]& Clibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch; J1 d4 t1 G9 ?5 F7 c% B$ A
eck_cookie@4 referenced in function __Print" e6 H4 G$ [8 B! T) K# u) c
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro, W  z) y$ Y- R# q1 w  u
r LNK1120: 2 unresolved externals/ A4 s; S, Q9 R, W; f& D/ \, x) e
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
7 H! Z$ h1 R+ e$ K  Z\link.EXE"' : return code '0x460'
* \- \7 [7 i/ `# S3 u) Y2 b/ IStop.9 K8 Z& q2 q  ^+ q1 i! |- W" F& L
$ u9 z! w# b' x+ x
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 13:47 , Processed in 0.036760 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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