- 博客(16)
- 收藏
- 关注
原创 为树莓派3B+编译32位ms-iot RPi-UEFI固件
本来不打算写这个的,但是考虑到新手总会遇到一些坑,所以简单记录一下,以免后人跳坑。 方法一:按照MSFT 的建议:1.git clone https://github.com/ms-iot/RPi-UEFI.git2.git checkout ms-iot3.下载GNU ARM Embedded Toolchain 4.8 series,解压到工作目录下“\Tool...
2019-06-11 14:57:18
511
原创 为树莓派3B+编译 64位UEFI 固件
树莓派(RaspBerry) 是基于Arm架构的单板机,凭借着低廉的价格,丰富的社区资源风靡全球。 在Iot 大行其道的今天,微软也在树莓派上面开发了windows iot 的操作系统。为支持Windows,微软请Intel为树莓派开发了32位的UEFI 固件(项目地址)。但是微软的这个固件非常简陋,支持的功能也很有限。国外有位大神基于微软的项目又开发了64 位的UEFI 固件R...
2019-06-10 17:00:39
3643
1
原创 [业余知识:PC 硬件监控]单片机LED数码管显示从PC发来的CPU 温度
这里不再多叙,想必对于任何一种单片机,这个是个基本的操作,所以直接看效果吧:
2018-08-29 11:07:12
1035
2
原创 [业余知识:PC 硬件监控]VC++通过串口发送数据
有时候串口还是一种很方便的互通方式,速度尚可,接线方便,支持度相当广泛。这里我们写一个简单的程序把一个字符发送到指定的串口上去。 VC++借鉴了Linux一切皆文件的思想,把串口当作一个文件来操作:void SendToCom(int temp){ HANDLE hcom; hcom = CreateFile(_T("COM3"), GENERIC_READ | G...
2018-08-29 10:41:29
466
原创 [业余知识:PC 硬件监控]使用WinRing0 2.0.0.20读取CPU温度
WinRing0 是一个强大的驱动程序,可以直接通过这个驱动读取CPUID,CPU MSR,TSC,IO port,PCI config等硬件信息。在WinRing0_1_3_1b版本之前是一个开源项目,之后就关闭了。而且目前的最新版本WinRing0 2.0.0.20已经阉割掉了全部的写寄存器的功能,之留下了读取CPUID,CPU MSR,TSC的功能。不能不说是一大遗憾。 ...
2018-08-29 10:33:24
10496
7
原创 [ACPI Common] 如何不编译BIOS的情况下去修改ACPI table
在项目开发的时候经常会遇到只改ASL 的情况,如果条件不允许,没办法编译BIOS的时候,可以单独修改ACPI table来做测试。首先准备下面两个工具:asl.exe 这个工具是MSFT的ASL 工具。我们用它来将我们生成的aml 文件load到windows里面。参考:Microsoft ASL 编译器 iASL compiler and Windows ACPI tools,这...
2018-07-18 22:18:49
6241
原创 [Windows 日常]为什么设置windows SMB共享了之后,Windows10可以访问,手机却不能访问?
其实是因为SMB v1.0 sever被Microsoft给禁用了,如下:我们把它打开就好了:
2018-06-13 15:48:04
9691
原创 PCI Option ROM in BIOS
虽然UEFI 出来十几年了,但是legacy 的阴影一直笼罩着我们。今天我们来看看Legacy里面的一个老朋友OpRom。以前很多PCI 设备上面都外挂一颗Rom,用来实现一些特定的功能,比如网络启动,硬盘保护,远程管理等等。后面比较常见的就只有网卡和显卡这两种设备还在用OpRom,独立的板卡有自己的板载Rom IC,板载的为了节约成本,就把OpRom包到BIOS里面。此外,OpRom也可...
2018-05-29 20:50:07
4440
原创 UEFI Common:UEFI 中的Runtime Services
EFI System Table 里面有两个Services:Runtime Services和Boot Services,其中Runtime Services 是在UEFI 兼容系统上面几乎全时可用的Services,区别于Boot Services只能在EFI_BOOT_SERVICES.ExitBootServices()之前可用的特性。Runtime Services提供了几组有限...
2018-05-08 17:29:05
5425
原创 UEFI Common:Event 简单介绍和用法
UEFI EVENT 的作用就是创建一个事件A,然后设定一个条件B,使得条件B满足的时候就执行这个事件A。条件B可以直接是EFI_BOOT_SERVICES.SignalEvent()这种直接调用事件A,也可以用EFI_BOOT_SERVICES.SetTimer()设定一个时间段后执行事件A,也可以是EFI_BOOT_SERVICES.RegisterProtocolNotify()在某...
2018-05-07 13:02:50
7650
1
原创 学习环境搭建:用Qemu模拟器搭建UEFI Serial Debug环境
当我们想要学习UEFI 相关的东西的时候,有一台机器当然再好不过了,但是硬件环境总是日新月异,有没有一个相对比较方便、稳定的环境来学习UEFI相关知识呢?当然有了,UDK2017里面有个OVMF package可以模拟出一个BIOS bin file。我们可以用这个BIOS bin file在Qemu 模拟器里面模拟真实的UEFI 环境。 我们要准备的软件有:Qemu。com0com...
2018-05-02 17:31:18
3451
原创 XHCI Port status 寄存器介绍
插播一条博客,今天刚好有同事问到说USB port的port status 寄存器位置在哪里,所以就翻了一下AMD PPR,找到相关的寄存器这里把步骤简单记录一下。 首先打开XHCI controller的PCI 配置空间,这里可以看到USB MMIO BAR=0xC0300000。然后翻PPR看到Port0 USB2.0 status offset=0x00420,Port10 U...
2018-04-05 21:23:54
3574
4
原创 BIOS 编译过程:C文件到EFI文件
上一篇Blog介绍了exe的生成,从C 到 exe可以通过“cl /c”来编译到“obj”,然后再“link”到exe。如果用到其他lib的话,还需要用“/I<dir> add to include search path”来添加相应的lib文件。 这里我们写了一个最精简的Pkg,里面有个最精简的UEFI app,用来探究C文件到EFI文件的过程。这个UEFI app 代...
2018-03-15 23:33:28
4286
原创 BIOS 编译过程:C语言的编译
BIOS里面很多Code都是C编写的,也是用VS 编译的。EFI文件和EXE可以说都是一个妈生的兄弟俩,所以我们先看一下EXE文件的编译,然后再去看EFI文件。 我们先写一个小程序,用VS编译一下看结果。程序如下:#include<stdio.h>void main(){ printf("Hello world!"); return;} 用管理员身份运行“...
2018-03-14 08:33:20
3546
2
原创 学习环境搭建:UDK2017 下载以及编译
UDK2017 是EDK II 的一个经过测试的分支,可以认为是一个稳定的Release版本。所以后面使用的UEFI相关的代码都以这份代码为准,如果有其他问题会另外说明。 我习惯从SVN上面直接Checkout出来一份,这样Build Tool什么的不用像Git那样单独去下载配置。下载地址是:UDK2017 下载之后本机需要做的配置是:安装VS2013 with Update5 ...
2018-03-13 23:03:52
4271
2
原创 第一篇博客
到现在工作有快有6年了,解了茫茫多的Bug,心里始终觉得缺了些什么。最近找了一个公司,面试了一下,才意识到自己这些年的工作太肤浅了。从一个不会搬砖的小工人变成了一个会狂搬砖的老工人,却不知道房子是怎么设计的。 所以,痛定思痛,决定好好整理一下自己的思路。从零开始,写一些简单的东西,完善一下自己的知识体系。暂时还没有什么完整的计划,所以打算先把自己熟悉的东西写出来。中间遇到什么问题,就...
2018-03-13 22:00:05
238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人