前面一篇文章提到“提供服务的代码需要常驻内存,一般的 Application 是不会常驻内存的,而驱动直接可以常驻内存”。普通的Application 不能常驻内存,但是可以做个特殊的Application 来完成这个功能,之前的文章【参考1】我们尝试过写一个能够一直在 Shell 右上角显示当前时[......]
标签: UEFI
Step to UEFI (98)Shell加载EFI的分析
继续阅读《UEFI 原理与编程》,其中的第三章介绍了一个 EFI Application如何在 Shell下加载运行的。ShellProtocol.c中的InternalShellExecuteDevicePath 是具体实现这个功能的函数。
函数头:
/** internal worke[......]
Step to UEFI (97)Shell下获得和设置环境变量
Step to UEFI (92)关于 ConOut 的奇怪实验
UEFI System Table 中的 ConOut-> OutputString 能够让我们直接在屏幕上输出字符串。这里介绍一种方法,能够让我们截获并且修改这个函数输出的字符串。
首先看一下 System Table 的定义在 \MdePkg\Include\Uefi\UefiSpe[......]
Step to UEFI (91) Shell下的串口测试软件
这里【参考1】提供了一个Shell下调用 SerialIO Protocol 进行通讯的 Application。下面介绍一下如何重新编译和使用这个程序。
这里我使用UDK2014下面的 EADK作为编译环境:
1. 将代码目录copy到EADK的AppPkg\Application 下面[......]
Step to UEFI (90) 给Shell 加入一个 command
上一次【参考1】介绍的屏幕旋转项目中还带有 Shell Command的内容。就是说可以把他调用驱动的Application”包”到Shell 中。这次介绍一下具体的实现。
源代码放置的位置目录和上一次实验相同。之后进行下面的步骤:
1.在 C:\EDK\ShellPkg\ShellPkg.ds[......]
Step to UEFI (89) 内存访问
初学 Watcom C的时候遇到一个问题“如何访问指定的内存”。当时为了这个问题花费了不少功夫,最后才发现直接用指针就可以进行访问,因为过于简单以至于网上都没有人问过…….
最近看 UEFI 编程,同样也遇到了这个问题,我去查找了 mm命令的source code,看到了它使用了PCI Root[......]
UDK2015 + Windows 7
UDK2015 出来一段时间了,之前的文章也介绍过【参考1】。只是有一个严重的问题: UDK2015 下面 C编写的工具是高版本的 Visual Studio 编译的,并且没有设置对于 XP 的兼容,于是 XP 下面无法直接使用这些工具。一种解决的办法是重新编译用来build的工具,另外一种就是更换[......]
Step to UEFI (88) 一个转屏驱动
这次介绍一个通过驱动程序旋转屏幕的项目,地址是https://github.com/apop2/GopRotate 。项目的简介是“A EDK2 Package that supplies a UEFI driver that will bind on top of Graphics Output[......]
Step to UEFI (86) StartImage 加载CLib程序的解决方法
前面【参考1】提到了 StartImage 加载 CLib 编写Application 出错的原因,这篇文章介绍如何解决这个问题。
根据原因来看是因为找不到提供 Parameters 的Protocol,那么我们在调用之前给被加载的Application 装上需要的Protocol即可。安装 Pr[......]