在 EFI_SHELL_PROTOCOL 中提供了 EfiShellGetDevicePathFromFilePath 函数
具体可以在 \ShellPkg\Application\Shell\ShellProtocol.h 看到原型
/** Converts a file sys[......]
在 EFI_SHELL_PROTOCOL 中提供了 EfiShellGetDevicePathFromFilePath 函数
具体可以在 \ShellPkg\Application\Shell\ShellProtocol.h 看到原型
/** Converts a file sys[......]
众所周知:UEFI中没有中断(UEFI唯一一个中断int 0,timer )【参考1】,如果想实现一个定时器的功能,必须使用 Event。
实现的思路是:
1. CreateEvent 创建 Timer Event
2. SetTimer 设定 Periodic 触发
3. SetT[......]
【特别提醒:下面的全部操作都是在UDK2014中完成,具体代码会与2010有差别】
第一个问题:我们运行的模拟环境(NT32)中的Shell是来自哪里?
回答:在 \Nt32Pkg\Nt32Pkg.fdf 中你可以看到下面的定义
############################[......]
这里介绍一个能够获得文件基本信息的函数: GetFileInfo
可以在 \ShellPkg\Include\Library\ShellLib.h 看到定义
/** This function will retrieve the information about the file[......]
换个免驱的方式。前面之所以能免驱动,是因为我走的是USB HID协议。除了这个,更常见的是USB Mass Storage协议,就是我们常见的U盘走的协议。对于这个协议在《圈圈教你玩USB》中有详细介绍。下面就讲一下如何把我这个设备移植到MSD协议上。
首先说一下Firmware设计上的改变。[......]
下面这个程序首先用 CreateFile 打开 PhysicalDiskX 然后使用 CreateFile 向里面写入数据。
#include "stdafx.h" #include <windows.h> #include <stdio.h> #include[......]
前面介绍了,用CLib我们可以编写出普通C语言一样的代码。入口是 main (int Argc, char **Argv),但是如何获得当前的 ImageHandle 呢?【参考1】给出了一个答案。查看实际的入口ShellCEntryLib (ShellPkg\Library\UefiShellCE[......]
通常我们在 Console 的程序中需要等待按键之类的,通常使用的都是:conio.h中的getch() 或者 stdio.h中的getchar()【参考1】。美中不足的是,这两个函数都会一直在那里等待按键,不会去做其他的事情。如果我们需要实现类似Pascal语言中 Keypress 函数,“检查一[......]
前面介绍过如何在 Shell 下实现暂停和中断运行。这里介绍如何实现在Application中注册一个“热键”,当按下这个键的时候去做另外的事情。
根据资料,需要使用EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL 的 RegisterKeyNotify 【参考1,2】[......]
这次的目标是要实现用 USB 口来控制七段数码管。
硬件上面选用《圈圈教你玩USB》配套的实验板。上面的单片机为STC89S52。实验板上P0接口用来和D12通讯,P1接口连接到一组开关按钮上,P2接口上有一组LED,LED另外一端通过10K电阻上拉。下面用色块对这些端口的用途做了简单[......]