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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
; q8 _- H7 Y5 s3 _   希望大家一起交流交流。- y7 \4 x1 ^: R
   这是最简单一个程序,在屏幕上显示:  "Hello World"
0 Z5 f0 H: ^  ^$ d   这是直接使用gST-Conout功能实现。+ z9 ?; O8 {+ f( P$ A% J3 Q& b
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
: T* |" G& R4 r! O. a
; }+ k# C& a6 t) a0 q3 z: w1 q   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 01 h5 t8 r& c; j7 E( x5 n' j! {. y
   Out->OutputString (Out, L"Hello World");  //实现输出- l/ B5 G1 f/ p8 I

+ E+ U& V5 }% e* A5 {' m6 r8 w   小弟不知道如何调用EFI封装好的这些输出输入库。
$ M0 _+ f# X) b   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1468

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。' n. L! ]: y4 e# \$ j3 F
加入这个PrintLibLite库后还是不行。
* a9 y, v6 [$ A+ J5 o$ Z: u编译执行不会有错,但他就是不显示。! }  C$ ~( x1 t5 _) R
现在我将print.c, print.h放到同一个目前,
) i4 Z# m2 ]/ p+ Q直接写到make.inf中。就可以显示了。
" ^+ D" p2 C- G, g3 R# K当然,print.h要改变一下,不然找不到函数的申明。
  S% K. l/ H# I& a+ K1 g8 l, S  r( e  |4 }+ m7 e
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。( S2 c% S0 d3 z- p9 r
如果是生成PrintLibLite的inf文件部分。# ?+ z, f' [3 I% F5 n' J
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。9 q. q- J* I5 U$ m- a
[defines]
6 `0 c5 e- j$ ~8 JBASE_NAME           = PrintLibLite" x. U6 |) i. S5 u
COMPONENT_TYPE      = LIBRARY$ ?5 V1 R/ i8 N2 X) q, I

: u# g) s  r1 X% u* t* Y# d5 Z/ Q[sources.common]% r# c5 I& ~8 f: f- y
  BoxDraw.c0 G" R" W. N9 l* v" p$ I, r2 U; w
  Print.c
" v' G2 O# Q% n$ a! @  Print.h! j- a- F* J9 y7 p
  StdErr.c
, ^0 i+ M  D8 ?  Unicode\PrintWidth.h2 Q6 D, B0 g! H. s
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1437

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
$ W, i+ C9 t0 r5 W$ h/ j: J你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,, Q: }* E% q* _
可能是其他原因,显示了但没有被看到,显示到其他的page中了。
2 w3 |4 r* v! |, |) r重写一个print的东西,就可以输出。2 @+ X4 u1 G( l& h/ W! Y

! T8 U1 ]. |) R6 F' b# G3 F" _print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:: I% p# V8 H3 N3 Q; J3 c
build...' F& d0 k% X+ i. m$ M/ i/ X
:error 7000:Failed to start command
7 @1 t, R) u- u! q7 R2 W6 i: @' C                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]* v0 Z* }( C$ @. z6 \) o5 e; c
; f4 q+ ^1 J" T1 a
build...4 s8 x- a. r  D
  : error F0002:Failed to build module0 g( H+ L( T$ f
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]6 L/ M  l$ x3 O  P& _
% p  Y7 G# A* p6 e$ S8 w, J* `( c
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
$ }- Y/ Y6 n5 h5 klibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co4 l8 D& x2 p, z. a- q* R3 m- x( f
okie referenced in function __Print* F. S/ |9 n% N
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
1 ]1 F: n; k3 Y7 Q9 `, f6 Veck_cookie@4 referenced in function __Print
5 t) g' _7 b& f- zD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
$ }" O+ g3 S" I6 T, pr LNK1120: 2 unresolved externals
8 a( N8 ^3 c+ b6 x( H% [NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN$ V: `9 Q  \9 o6 k
\link.EXE"' : return code '0x460'
) ~/ @# W) l: n% H" FStop.: q# }( x( q. j+ z* u$ j
5 D, ]* a4 I) H# M* @. {  J- K
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-4 14:32 , Processed in 0.090903 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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