自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 固件的隐藏世界——探索计算机的启动过程

A lot of people are interested in how the computer starts up. This is where the magic begins and continues as long as the device is on. In this article, we will take an overview of the boot process, including its various stages, the key components involved

2024-07-22 14:52:57 300

原创 PE文件学习

PE文件,即Portable Executable文件,是一种标准的文件格式,主要用于微软的Windows操作系统上。这种格式被用来创建可执行程序(如.exe文件)、动态链接库(.DLL文件)、设备驱动(.SYS文件)、ActiveX(.OCX文件)以及其他类型的可执行模块。PE文件格式设计得非常灵活和强大,它允许程序在不同版本的Windows上运行,从而实现了一定程度的可移植性。

2024-07-04 19:16:05 1039

原创 PKCS和X.509标准的区别是什么?

因此,可以说PKCS标准是更广泛的范围,包含了多个方面的加密和安全机制,而X.509标准则是其中一个具体方面,专注于定义数字证书的格式和结构。在实际应用中,PKCS和X.509通常是配合使用的,PKCS定义了数字证书的存储和操作规范,而X.509定义了证书的具体内容和结构。

2024-06-19 10:47:45 161

原创 WMI接口设计实现

WMI是Windows操作系统管理数据和操作的基础设施,系统管理员可以使用VB Script、PowerShell及Windows API(C++、C#等)管理本地或远程计算机。使用WMI框架应用程序可以直接访问EC RAM、 I/O端口、Memory地址、寄存器、Setup NV设定值,以及其他的系统设备资源。

2024-03-22 15:09:19 526

原创 UEFI Secure Boot

在计算机世界,安全是一个永恒的话题。微软的Windows的安全性一直深受诟病,但随着操作系统层面的漏洞逐渐减少,黑客们盯上了BIOS固件。那如何保证从开机到进入操作系统这个过程中的安全呢?下图是Intel CPU的整个UEFI安全启动链条,涉及到了Boot Guard、Secure Boot等技术。Microcode验证ACM, ACM验证IBB,IBB验证OBB,而OBB后面就是本文的主题UEFI Secure Boot。UEFI Secure Boot是UEFI规范中所定义的一个功能。

2024-03-05 16:46:16 1252

原创 密码学基础

密码学能做什么?机密性:如何使得某个数据自己能看懂,别人看不懂认证:如何确保数据的正确来源,如何保证通信实体的真实性完整性:如何确保数据在传输过程中没有被删改不可否认性: 如何确保用户行为的不可否认性功能如何实现算法协议事实上,在非对称密码发展之前,大多数著名的密码体系,其核心都是扩散与混淆。但是,在我们上述谈到扩散与混淆的时候,有一个值得注意的地方:实现扩散与混淆的器件,即P盒与S盒,其接受的都是固定长度的输入。这与我们之前谈到的流密码不同,流密码的输入可以是任意长度的。

2024-02-20 19:41:57 2914

原创 查询获取SMBIOS的方法

这个是利用Get-WmiObject(别名gwmi)命令来获取的,输入gwmi –class win32_bios 或 gwmi –class win32_bios smbiosbiosversion获取BIOS版本信息(两种命令显示的方式和信息不一样)回车执行。本主题说明如何运行所选未签名脚本(即使在执行策略为 RemoteSigned 的情况下),还说明如何对 脚本进行签名以便您自己使用。想了解 计算机上的现用执行策略,打开PowerShell 然后输入 get-executionpolicy。

2024-02-19 11:02:20 1112

原创 UEFI——PCD介绍

PCD(Platform Configuration Database,平台配置数据库)就是抽取出代码中可配置的数据而不修改源代码。类似C语言中的宏,降低了代码维护的工作量,增加了可复用性。不同于宏的是,有些PCD(动态PCD)可以在代码运行的时候修改。MdeModulePkg/Universal/PCD/Dxe/Pcd.inf文件中有完整介绍。

2024-01-25 14:54:17 1638 1

原创 一、Python基础语法

Python是一门优雅而健壮的编程语言,它继承了传统编译语言的强大和通用性,同时也借鉴了脚本语言和解释语言的易用性。

2023-11-03 15:26:41 184

原创 软件调试技术概览

本文摘抄自张银奎老师的软件调试一书,主要概述各种常用的软件调试技术。

2023-10-23 19:50:47 436

原创 如何用 DAP 仿真器下载程序

本书配套的仿真器为 Fire-Debugger,遵循 ARM 公司的 CMSIS-DAP 标准,支持所有基于 Cortex-M内核的单片机,常见的 M3、M4 和 M7 都可以完美支持。Fire-Debugger 支持下载和在线仿真程序,支持XP/WIN7/WIN8/WIN10 这四个操作系统,免驱,不需要安装驱动即可使用,支持 KEIL 和 IAR 直接下载,非常方便。

2023-09-11 23:17:13 538

原创 MMC/SD/eMMC/SDIO介绍

MMC卡(MultiMediaCard)的设计目标是提供一种“广泛应用于电子玩具、pda、照相机、智能手机、数字录音机、MP3播放器、寻呼机等等领域”的通用低成本数据存储和通信媒体。SD(Secure Digital Memory Card) 卡是在 MMC 卡基础 上发展起来的,中文名称为:安全数字存储卡。SD 卡发布之初,与 MMC 卡的最大区别就在安全(Secure)上,其支持 SDMI 标准,可提供保护 SD 卡上存储的音乐版权等功能。

2023-08-07 15:02:38 3573

原创 Inf2Cat、Makecert、Pvk2Pfx等驱动程序签名工具介绍

Visual Studio 环境变量 %WindowsSdkDir% 表示安装此版本的 WDK 的 Windows 工具包目录的路径,例如 C:\Program Files (x86) \Windows Kits\10。

2023-08-02 16:09:13 654

原创 电脑Reset背后发生了什么?

电脑重启在有些人看来就是关机再开机。对于用Windows 8以前版本的用户来说,重启和关机再开机感受没有什么不同,会将系统运行过程中的数据清掉。Windows 8/10启用了快速启动,从而两者产生了明显不同。简单来说:关机再开机,会利用休眠功能(hibernate)直接进入到一个预存储的登陆画面,加速启动,但环境并不干净;而重启则不变,从0开始一个个加载驱动,相对更加干净,也更慢。操作系统当然是能够区分重启和关机再开机的,那么主板和CPU这么多种,它是怎么知道如何重新启动的呢?

2023-07-27 15:02:31 250

原创 STM32 GPIO口结构及工作模式

如果我们控制输出为0,低电平,则P-MOS管关闭,N-MOS管导通,使输出接地,若控制输出为1(它无法直接输出高电平)时,则P-MOS管和N-MOS管都关闭,所以引脚不输出高电平,也不输出低电平,为高阻态。模拟输入则用于ADC采集。看GPIO结构框图的上半部分,GPIO引脚经过内部的上、下拉电阻,可以配置成上/下拉输入,然后再连接到施密特触发器,信号经过触发器后,模拟信号转化为0、1的数字信号,然后存储在”输入数据寄存器GPIOx_IDR“中,通过读取该寄存器就可以了解GPIO引脚的电平状态。

2023-07-06 19:23:44 333

原创 IIC总线

1、IIC总线简介IIC总线是Philips公司在八十年代初推出的一种串行、半双工总线,主要用于近距离、低速的芯片之间的通信;IIC总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛的应用。IIC总线是一种多主机总线,连接在IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生;每个连接到IIC

2023-07-05 14:01:56 106

原创 UEFI开发学习7 - Event相关服务

UEFI提供了异步操作,Event是异步操作的基础,有了Event的支持,才可以在UEFI系统内执行并发操作,基于Event的异步操作,提高了CPU利用率,减少了总的等待时间。

2023-05-11 14:47:52 1195

原创 屏幕省电技术

一台笔记本电脑什么部分最耗电?当然是屏幕了,据Intel研究(),一台超薄本,在典型使用场景下,耗电分解如下:可以看到,在通常使用中,显示屏幕几乎耗费了三分之一的电力!这也是为什么,我们笔电开发中,对省电最直接的度量标准是开屏待机时间(Idle-screen-on time)的原因了。

2023-05-06 18:50:58 1799

原创 传感器概述

传感器、通信网络和控制计算机三者构成了工业自动化的信息体系,分别扮演着“感官”“神经”与“大脑”的角色,指挥着各种执行机构动作,共同构筑了各种类型的自动检测控制系统。在工业控制利用信息的过程中,首要问题是获取各个环节与工序准确、可靠的信息,这就是传感器的使命。没有高精度的传感器提供准确及时的信息,计算机控制系统再完善,也无法提高工业自动化生产的水平。电测量是一种较成熟的技术,而传感器通常是将非电量转换成电量后进行的间接(电)测量。”传感器“从字面上理解是传递感受敏感信息的器件。

2023-04-21 16:03:48 348

原创 MIPI介绍

MIPI介绍

2023-03-29 14:32:51 477

原创 (Windows)C程序基于VScode和minGW创建并使用动态库dll

创建动态库的简单例子,这里创建动态库是使用直接在终端敲命令的方式,并没有使用到VScode的一些配置文件、编译脚本啥的。C程序的编译分为预处理、编译、汇编、链接。动态库其实就是第三个阶段编译的产物。minGW中包含的编译工具就是GCC,这个例子就是使用gcc这个工具去编译我们写的C代码。

2023-03-28 14:54:13 4335 2

转载 C语言程序编译过程详解

C语言的编译过程就是把我们可以理解的高级语言代码转换为计算机可以理解的机器代码的过程,其实就是一个翻译的过程。1.预处理2.编译3.汇编4.链接下面两张图就是C程序编译的完整过程接下来我们看看编译过程不同阶段在做什么。1. 预处理编译过程的第一步就是预处理,与处理结束后会产生一个后缀位(.i)的临时文件,这一步由预处理器完成。删除所有的注释宏扩展文件包含预处理器会在编译过程中删除所有注释,因为注释不属于程序代码,它们对程序的运行没有特别作用。

2023-03-27 19:14:06 3036

转载 通信的基本概念

串行与并行半双工、全双工同步、异步波特率比特率

2023-03-14 15:46:14 56

原创 C语言实现KMP算法

C语言实现KMP算法。

2023-02-20 14:37:34 77

原创 结构体类型指针的强制转换

结构体类型指针的强制转换。

2023-02-15 14:12:42 615

原创 EDK II编译过程

介绍了EDKII编译的大致过程。

2023-02-11 14:46:30 973

原创 AMI代码添加Token.h

AMI代码添加Token.h文件

2023-02-02 10:10:36 346

原创 EDID介绍

EDID并非古而有之,在古老的CRT时期是没有EDID这个概念的,那为什么后来会有呢?现在的显示器功能很强大,通常都提供多种视频接口,常见的有DVI、VGA、HDMI、Display Port等,由于每种接口的特性和带宽不同,使得不同接口的EDID也不同。VGA、DVI的EDID由主块128字节组成,HDMI的EDID增加扩展块(128字节),扩展块的内容主要是和音频属性相关的,DVI和VGA没有音频,HDMI自带音频,扩展块数据规范按照CEA-861x标准定义,未来可能增加到512或256的整数倍。

2022-12-28 11:40:02 11435 6

原创 USB传输速度

USB传输速度

2022-12-20 18:45:30 132

原创 存储器分类介绍

存储器分类介绍。

2022-11-15 16:15:22 395

原创 C语言方式 获取CPUID(二)

嵌入式汇编获取CPUID。

2022-09-15 12:28:18 1205

转载 C语言方式 获取CPUID(一)

C语言方式获取CPUID。

2022-09-15 10:56:32 471

原创 数组与指针的区别与联系

1 引言数组并非指针,在初学C语言时,我们会觉得”数组和指针是相同的“,实际上,这是一种非常危险的说法,并不完全正确。下面完整地解释一下数组什么时候等同于指针,什么时候又不等同于指针以及原因所在。//文件1int mango[10];//文件2extern int *mango;上面程序演示了一个错误,文件1定义了数组mango,文件2想使用它,声明它为指针。但实际上它们的类型并不匹配,相当于把整数和浮点数混为一谈。但是为什么人们会认为指针和数组始终是应该可以互换的呢?答案是对数组的引用总

2022-03-19 17:58:26 8935 1

原创 i++与++i操作符区别

对于前缀++操作符和后缀++操作符的区别一直没搞很明白,因为他们有时候用起来感觉没区别,比如在for循环中:for(int i=0; i<10; i++){}for(int i=0; i<10; ++i){}而在另一些表达式上会产生不同的结果:int i=0,j=0;int a=i++;int b=++j;这里i与j最后的值都是1,但a的值为0,b的值为1。在网上搜索一些文章时,大部分是这样解释的。i++:i++是先赋值再自增++i:++i是先自增后赋值简单

2022-03-16 22:57:08 743

原创 STM32编译过程遇到的问题

1. flash download failed cortex-M3或者Contents mismatch at: 08000000H (Flash=FFH Required=00H) ! Too many errors to display !解决办法:将debug中setting中的debug中的connect设置为under reset, reset设为SYSRESETEQ后就可以了。2. 有些warning消除不了解决办法:魔术棒target里右上选version5版本...

2022-03-07 23:49:01 900

原创 1-STM32运行环境搭建

KEIL5安装KEIL5安装STM32芯片包安装KEIL5不像KEIL4那样自带了很多厂商的MCU型号,KEIL5需要自己安装。可以直接去KEIL的官网下载:http://www.keil.com/dd2/pack/在官网中找到STM32F1这个包下载到电脑(因为我用的是F103),F1代表M3,F4代表M4,F7代表M7。...

2022-02-12 21:23:48 4212

转载 #pragma用法详解

概述我们在写代码时,总会遇到头文件多次包含的情况,刚开始时我们使用宏定义进行控制,之后发现有#pragma once这样简单的东西,当时是很兴奋,以为#pragma就这一种用法。1、什么是预处理预处理是将源文件的文本作为翻译的第一阶段操作的文本处理步骤。 预处理不会分析源文本,但会为了查找宏调用而将源文本细分为标记。 主要包括了下面三个方面:预处理指令预处理运算符预定义宏,这个有很多了,比如__FILE__、__LINE__和__DATA__等。其中预处理指令包括:预处理运算符包括:这里有

2022-02-12 18:15:09 21410 2

原创 UEFI开发学习4 - 初识Variable Services

1 概要Variable Services是Runtime Services的一部分,提供关于Variable的一些服务,Variable被定义为键值对,由标识信息加上属性(键)和任意数据(值)组成。Variable用于存储在平台实现的EFI环境和EFI OS加载器以及在EFI环境中的其他应用程序之间传递数据。(1、一个Guid可以对应多个Variable,一个Variable中包含多种不同数据类型的数据(结构体)?;2、Setup界面中的一些值就是Variable,通过这种方式来存储。)UEFI规范为

2022-02-10 16:04:15 2378

原创 UEFI开发学习6 - Protocol的创建

1 介绍同样在UEFI Spec的第七章Boot Service中有两个关于Protocol创建的函数,分别是InstallProtocolInterface()和InstallMultipleProtocolInterfaces()。顾名思义,前者是只安装一个ProtocolInterface,后者可以安装一个或多个ProtocolInterface,此外,InstallMultipleProtocolInterfaces()比InstallProtocolInterface()执行更多的错误检查,因此

2022-02-10 15:57:46 3150

原创 UEFI开发学习5 - Protocol的简单使用

1 介绍在UEFI Spec的第七章可以看到,Boot Service中提供了丰富的服务供开发者操作Protocol,本文主要介绍如何使用Protocol。使用Protocol一般分为三个步骤:1、通过启动服务找出Protocol对象;2、使用这个Protocol提供的服务;3、关闭打开的Protocol。先介绍一下一些相关的服务,有:HandleProtocol、OpenProtocol、LoacalHandleBuffer和LocateProtocol。1.1 HandleProtocol

2022-02-10 15:43:46 1589

MIPI初始化代码格式转换脚本

10进制转成16进制

2024-07-19

WU生成更新BIOS包

通过脚本生成WU更新的BIOS包

2024-07-08

AMI secure flash module

AMI secure flash module

2024-06-18

WMI接口设计实现Demo

WMI接口设计实现Demo

2024-03-22

AMI各种工具介绍,如AFU、DMIEdit等

AMI各种工具介绍,如AFU、DMIEdit等

2023-12-19

UEFI中DXE阶段介绍

UEFI中DXE阶段介绍

2023-02-15

UEFI中Protocol的一些介绍

UEFI中Protocol的一些介绍

2023-02-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除