PowerHouse Mountain 的安装

PowerHouse Mountain 简称 PHM,是 Intel 提供的用于Debug 功耗的软件。因为这个软件会向系统中安装一些常驻软件同时调整系统设置,可能会导致账号无法登陆的问题, 因此个人不建议在工作机上安装。建议安装到一台专用机器上,或者安装在虚拟机中用于查看的Log。

  1. 运行安装文件

   2.建议使用默认路径

3.特别注意,建议勾选在桌面上创建快捷方式,默认不创建快捷方式(如果测试PSR 屏幕,桌面图标要尽量少)

4.中间会出现 Node.js 安装提示,选择 Next 继续

5.提示是否安装其他工具,我一般不会[......]

阅读全文

Windows 10 无法 Win+L锁屏

最近我的一台电脑出现 Win+ L 无法锁屏的问题。一番搜索下来有很多文章介绍在注册表中有一个控制的位置。但是我根据文章无法找到对应的位置,后来使用搜索功能在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon 找到。

DisableLockWorkstation = 1 表示禁止锁屏功能,0 表示可以锁屏。

所以,出现同样问题时,不妨先查看上面的那个注册表位置。

[......]

阅读全文

一个奇怪的 Python CSV 处理问题

我需要Python处理一个类似下面的 CSV文件:

于是编写代码先尝试读取之:

奇怪的事情发生了:我可以读取除了第一个"Time of Day"之外的所有 row 的值。当我写出来 print(row['Time of Day']) 的时候会出现下面的错误:

测试数据文件在这里,代码在这里。有兴趣的朋友在看解释之前可以尝试自己解决一下。

接下来我各种猜测,默认是因为空格等等,都不是Root Cause。后来用代码将取得的 Key 打印一下:

惊奇的发现第一个是 '\ufeff"Time of Day"'。用十六进制软件打开数据文件查看:

[......]

阅读全文

Modern Standby简介

本文是根据作者对于 Modern Standby 的理解写成的,在某些概念上会和定义有冲突,希望读者特别注意如果有冲突以官方文档为准。

CPU 作为PC的大脑通常是最大的耗电大户。与之类似,人脑重量只占体重的2%,却会消耗整个身体所需能量的17%和氧气的20%。所以, CPU省电是整个PC系统降低功耗的关键。随着笔记本电脑的普及,如何降低功耗延长待机时间成为一个突出需求。在进一步介绍之前需要提及一下之前的休眠。在ACPI
规范中定义了一些 PC 省电的状态。比如下图所示的S1
S3 和S4,当处于 S0 状态时,CPU处于工作状态:

如果能让CPU 在S0 的时候尽量降低功耗,[......]

阅读全文

QEMU 的重新编译(上)

QEMU 是功能强大的虚拟机,支持了大量的CPU
同时可以直接使用 EDK2 作为启动BIOS。之前我介绍过如何编译VirtualBox 的代码以便修改它使用的ASL
Code,这次介绍一些如何重新编译 QEMU,具体方法如下(方法来自https://my.oschina.net/ejoyc/blog/1587798):

我是在
VirtualBox 的虚拟机中测试的,操作系统是Win10 16299。

[1] 安装msys2
    打开msys2官网http://www.msys2.org/下载x64版的msys2, 安装到目录c:\msys64[......]

阅读全文

WinDBG 调试 Notepad

WinDBG 有两种模式,一种是用来调试Kernel
的,比如,前面介绍过的双机通过USB3
互联,然后从一端调试另外一端;另外一种是用来调试User
Mode的Application,比如,在本机打开WinDBG调试本机当前的 NotePad。

我原来的理解是,如果双机互联之后都能够调试Kernel
Mode,那么调试远端机器上的Application应该手到擒来。但是多次试验都没有成功,后来咨询了一下天杀,他表示这条路不通如果需要调试Application
必须老老实实的用UserMode。

这次WinDBG试验的目标是调整Notepad 打开文件对话框,使得原来无法聚焦在编辑[......]

阅读全文

DFRobot TinkerNode NB-IoT 开发板安装指南(支持包的安装)

为了让你的开发板能够在 Arduino IDE中跑起来,需要在“开发板管理器”中安装这个板子的开发包。具体操作首先请参考下文:

https://mc.dfrobot.com.cn/thread-303693-1-1.html

如果你碰到下面这样的错误无法继续

”下载 http://downloads.arduino.cc/packages/package_index.json
时出错“,那么请参考本文的方法:

1.同样的打开首选项,将附加开发板管理器网址修改为

http://download.dfrobot.top/TinkerNode-NB-IoT/pac[......]

阅读全文

Arduino UcgLib 快速显示

最近在做一个热成像仪,需要将传感器的数据快速显示到屏幕上。屏幕是我之前试验过的使用 ILI9341 主控 240x320分辨率的LCD。对应使用 Ucg 库来驱动之。遇到的问题是显示速度太慢。起初我使用ucg.drawPixel() 通过绘制点的方式来实现绘图。编写一个简单的代码来进行测试:

可以看到,绘制  240x320的图像需要27.366秒。

经过阅读ILI9341 的 Spec,大致了解一下显示原理:将颜色信息写入主控的 RAM 中即可驱动屏幕实现显示。DrawPixel
函数应该是有额外的开销,所以导致速度非常缓慢。查看代码,具体实现绘制点的代码[......]

阅读全文

关于几个硬盘省电技术的介绍

最近看了一下关于
SATA 省电方面的技术文档,总结一下遇到的名词术语。

首先是经常能在文档上看到的
Partial 和
Slumber。简单的说这两种都是 SATA PHY 休眠的状态。

Partial: 功耗大约75mW,
比Standby状态功耗约200mW低了一多半, 从Partial状态退回Phy Rdy的时间不能超过10us.

Slumber: 功耗大约25mW,
比Partial状态功耗更低,从Slumber状态退回Phy Rdy的时间也相对较长,但不能超过10ms。

可以看到Partial和Slumber的差别在于后者睡得更深功耗更低,同时回来越慢。

[......]

阅读全文

在 Arduino Leonardo上使用SD卡

这次试验使用的 SD卡模块如下:

需要注意的是:SD卡使用的是 3.3V电平,所以不要直接把Arduino 接在SD卡上有可能导致损坏。

控制接口:共6个引脚(GND、VCC、MISO、MOSI、SCK、CS),GND为地,VCC为供电电源,MISO、MOSI、SCK为SPI总线,CS为片选信号脚;

对于Leonardo 来说,SPI
通讯接口在 ICSP 上,定义如下:

因此,需要将二者按照定义连接在一起,SD 卡模块上的CS接至D4 Pin。之后,运行 Example 中的CardInfo即可:

运行结果如下:

[......]

阅读全文