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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。9 N$ o& `" x5 A0 n0 I0 B
   希望大家一起交流交流。8 ~% n) g& {+ z
   这是最简单一个程序,在屏幕上显示:  "Hello World"! ^' @/ R- z  u
   这是直接使用gST-Conout功能实现。
9 V9 Q2 g: f) N8 ~6 C7 L   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。: G% D. Y( |/ _0 D, l8 ?

2 o) \$ _, X- i7 s0 F   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0+ Q' {0 Y7 j1 B# U9 Z8 W8 Q9 _- Q
   Out->OutputString (Out, L"Hello World");  //实现输出. o" t/ V( g$ {( K; U

0 H$ r5 n/ k7 O. ^, ^/ h3 g5 R7 l   小弟不知道如何调用EFI封装好的这些输出输入库。
0 I  P0 X- j: o7 z' m   希望大侠指点一下。

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 | 显示全部楼层
问题解决了。
  Y: ~4 ~( \- O. R加入这个PrintLibLite库后还是不行。2 C% x' q+ c+ P. }
编译执行不会有错,但他就是不显示。
2 F$ c  r$ C* m现在我将print.c, print.h放到同一个目前,: p9 B# Q  c* v7 ?1 X; b9 z1 t
直接写到make.inf中。就可以显示了。) ?: J$ ^0 y9 {
当然,print.h要改变一下,不然找不到函数的申明。- j# l" V; t( g  W3 R$ C* ^$ |. J" M, T
2 d6 w. r/ N( |% p$ ]/ i+ a. p
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。5 o+ l$ K8 A* E+ F
如果是生成PrintLibLite的inf文件部分。4 T6 r$ Q6 _3 `- D- B
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
0 u) S# v3 T4 w* ~7 U/ T[defines]) H" f  n( `- g+ I
BASE_NAME           = PrintLibLite2 ]! l2 \& v2 [
COMPONENT_TYPE      = LIBRARY
" b# O7 J0 s# p& Z5 a  I5 W& |( a2 n; e
[sources.common]
4 S5 `+ W- @2 A: O5 n9 A  BoxDraw.c
/ z1 c& A! u% i  Print.c
" @1 P, ?/ @5 Y* q$ t4 {: s9 w  Print.h
2 q4 P# d/ R# g0 W  StdErr.c6 G3 E& Q, |& L1 j9 p6 P" ~
  Unicode\PrintWidth.h
+ u# @2 G4 t; z# E( C" t: J' S  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 513

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz, q. T8 I/ G' U; w: Y2 N
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,0 _2 n. j; F: g% L0 Q7 ~) H
可能是其他原因,显示了但没有被看到,显示到其他的page中了。0 D# Z& F% I; c
重写一个print的东西,就可以输出。
/ V7 `5 B. f! z
7 t" y. _  u" ]1 G0 Kprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
) ^5 i3 y3 h% ^# t. zbuild...
: X. ^0 x( D0 [2 W2 t9 s, a5 y$ g4 I :error 7000:Failed to start command
: _( n: H2 f, g" f: s# a% M7 }9 ]                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
4 p' q1 ~& z" e+ z. y. `0 U
9 v" a4 L: C4 v; I" h/ a5 hbuild...) k5 e9 J0 v! c' ?7 {2 \; G! C9 U; i
  : error F0002:Failed to build module
/ R- R" u5 i' G* {8 y3 n! x         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]6 Q" q1 ~9 U0 W# B' z5 q/ m

  j$ \# M% b5 M* k# F6 C; g" ]* Z9 S请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下/ p6 A" `3 y  w2 e7 a
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
5 p. }2 l/ {7 |+ }  Cokie referenced in function __Print
: D  a: Q! Q2 ^  olibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
) Q3 U( l  L8 C. z% g% @eck_cookie@4 referenced in function __Print8 {: T2 C& s1 g6 z  m* \5 X
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro1 ?7 d6 g' u) ?0 |
r LNK1120: 2 unresolved externals& t+ Z2 r: W0 U  f
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN' _& d$ `' m: s( Q) L
\link.EXE"' : return code '0x460'
& z. [7 L& a! b' Q, {Stop.
6 [2 N, B; Y. @5 F2 o& j) u% r  ?  Q5 O1 ?# w
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 03:17 , Processed in 0.406925 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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