C# EXE 自动检验功能

最近比较恼火,因为测试机中毒了,除了在 Idle 状态下 CPU 占用率不断升高还有就是在测试 MS 的时候会遇到稀奇古怪的问题。比我更惨的是有同事收到了 IT 的警告邮件…….

因此,我有一个问题:能否设计出一个自我检查的程序,保证没有被篡改过?研究一番之后就开始动手编写。从原理上说,使用 WinPE头部没有用到的位置写入校验值,然后在代码中加入校验的内容,每次执行时先校验即可得知是否篡改。

因此,有2个程序,第一个是给被校验EXE 添加校验值的程序,另外一个是被校验的程序。

1.给 EXE 添加校验值的程序,选择在 DOS MZ 头的e_res2 位置添加 MD5值:

[......]

阅读全文

Arduino 科学记数法库

科学记数法是一种记数的方法。把一个数表示成a与10的n次幂相乘的形式(1≤|a|<10,a不为分数形式,n为整数),这种记数法叫做科学记数法。 例如:19971400000000=1.99714×10^13。计算器或电脑表达10的幂是一般是用E或e,也就是1.99714E13=19971400000000。[参考1]

https://github.com/RobTillaart/Arduino/tree/master/libraries/MathHelpers 提供了一个 Arduino 科学计数法的库,能够将一个浮点数转化为科学计数法的表示。

测试代码:

库下[......]

阅读全文

M.2 NMVE PICE 转接卡

最近在做Modern Standby 的实验,测试结果显示CPU进入了PC10,但是一直被硬盘 Block。板子上使用的是通过 PCIE-M.2 转接板转接后插在 PCIE Slot 上的 NVME SSD 。于是,我觉得问题出在转接板上。

对于M.2 上的ModernStandby来说,NVME 上的CLKREQ 拉高通知 PCH/SOC 停止发送 PCIE Clock。如果出现问题通常都是这个Pin导致的。于是,怀疑转接卡是否将 PCIE 上的CLKREQ Pin正确转接到了 M.2 接口上。

接下来找到 M.2 的引脚定义【参考2】:

进一步追查,这个P[......]

阅读全文

DSLogic逻辑分析仪试用

最近入手了 DSLogic 逻辑分析仪,买的是 DSLogicPlus 个人版,这个是个人使用的顶配版本。选择这个品牌的原因是一个网友的推荐,还有从搜索到的资料来看这款最开始是在KickStarter上众筹的产品,总共筹集到了11万美元。想必质量有保证。

几个版本比较如下,可以看到这个版本对于个人来说完全够用了:

开箱照:

首先用它抓取PS2 鼠标协议,于是找了一个PS2鼠标和一个PS2转USB Dongle,这一套是能够在我的电脑上正常工作的:

刚用的时候还是能够正常抓到一些数据的:

但是很快就跑偏了,下面 Channel 0 的数据是错误的[......]

阅读全文

WDTF 安装器

测试 MS 功能, WDTF 是必须的,但是每次通过 WDK 安装会比较麻烦【参考1】,因此制作了一个 WDTF 安装器,运行之后界面如下:

上部显示当前 Windows 版本,中间按钮选择你要安装的,点击之后即可自动完成安装。

需要注意的是:这个版本带有自校验功能,如果你发现无法运行,那么最好进行杀毒避免因为病毒干扰测试。

参考:

1.http://www.lab-z.com/wdtfin/ WDTF的安装

[......]

阅读全文

推荐 Toshiba 的一款 NVME

最近在 CML-V 的 RVP 上测试 MS Stress,开始使用 Samsung 的一款,后来发现总会有 fail 的情况发生(大约是 2/5 )。后来换了 Toshiba 的KXG6AZNVT02 这款(PCIE NVME M.2接口),首先感觉是速度明显变快(这个应该和容量有关系,这款是 1T 容量的);轻松跑了一晚上(30s idle, 15 min sleep ),50次都 Pass。

如果你在测试Stress 的时候遇到 fail 的情况不妨找这款进行实验,或者说多换几个NVME硬盘试试看。

20200811 补充, 使用这个硬盘在 CML-S RVP 上关闭各种[......]

阅读全文

3.3V Arduino Proi Micro 的使用和维修

市面上最常见的 Arduino Pro Micro 是5V的,除此之外还有一种是 3.3V的,他们之间的区别除了电压之外还有主频不同,5V版本是16MHz,3.3V的是8Mhz。

前一段我入手了一个3.3V版本的,主要目标是给 USB Host Mini 使用。拿到手之后错误的使用了 Leonardo进行上传,马上板子就变砖了。所以,这里特别强调必须使用LilyPad USB 编译上传!

讲完了使用下面讲如何恢复,找出了 USBTinyISP(极客工坊出品的)。

接线顺序:

USBTinyISPPro Micro 3.3V1.MISOD14.MISO2.V[......]

阅读全文

控制 Tinker 上面的 LED 实现呼吸灯

这里做一个简单的实验:上电之后让 ThinkerNode NB-IoT上的 LED 实现红色的呼吸灯效果,按下 Set键之后切换为绿色呼吸灯。

硬件方面:

1. ThinkerNode NB-IoT 上面的 LED 是一个 WS2812B,可以实现任意的颜色

2.板子上的 SET按钮是接在 D3 Pin上的,按下时拉低。

RGB_LED.Breathing() 是设置一次呼吸灯效果的函数,设置一次之后是一个周期,意思是运行一次会实现一个完整的亮灭周期,如果想持续亮灭,那么需要定时运行这个函数。根据上面的资料编写如下代码:

[......]

阅读全文