2018年4月24日 星期二

[MFC] VC2017 MFC administrator praivilege


(Configuration Propierties - Linker - Manifest file --> right side "UAC execution leve(requireAdministrator)

[MFC]VC2017 WinDDK setting, evn setting


#include <WinSDKVer.h>


.  配置可执行文件目录:E:\WinDDK\7600.16385.1\bin\x86; 
b.  配置包含目录:E:\WinDDK\7600.16385.1\inc\ddk  
                        E:\WinDDK\7600.16385.1\inc\crt
                        E:\WinDDK\7600.16385.1\inc\api   
c.  配置库目录:    E:\WinDDK\7600.16385.1\lib\win7\i3865



Build Env:



ref:
https://blog.csdn.net/Augusdi/article/details/9005121
http://www.cppblog.com/guojingjia2006/archive/2011/03/19/142211.html

[MFC]VC2017 WinDDK setting


#include <WinSDKVer.h>


.  配置可执行文件目录:E:\WinDDK\7600.16385.1\bin\x86; 
b.  配置包含目录:E:\WinDDK\7600.16385.1\inc\ddk  
                        E:\WinDDK\7600.16385.1\inc\crt
                        E:\WinDDK\7600.16385.1\inc\api   
c.  配置库目录:    E:\WinDDK\7600.16385.1\lib\win7\i3865


ref:
https://blog.csdn.net/Augusdi/article/details/9005121
http://www.cppblog.com/guojingjia2006/archive/2011/03/19/142211.html

2018年4月18日 星期三

[iphone]iPhone evolution, iphone5 vs iphone se vs vs iphone6 vs iphone7 vs iphone8 vs iphoneX

iPhone evolution



iPhone 5 review (September 2012)

iPhone 4S review (October 2011)
iPhone 4 Review (June 2010)
iPhone 3GS review (June 2009)
iPhone 3G review (June 2008)










REF:
https://www.imore.com/iphone-5s-review

https://ioshacker.com/iphone/specs-comparison-iphone-x-vs-iphone-8-vs-iphone-8-plus

https://ioshacker.com/iphone/specs-comparison-iphone-x-vs-iphone-7-vs-iphone-7-plus

https://ioshacker.com/iphone/iphone-se-vs-iphone-5s-vs-iphone-6s-specs-comparison



2018年4月17日 星期二

[SSD]SMI SM2262EN, SM2262, PS5012-E12


SM2262EN, SM2262



PS5012-E12
Gen3x4 NVMe,傳輸速度將高達連續讀取3200 MB/s 及 連續寫入 3000 MB/s,4KB 隨機讀取(IOPs)速度達60萬次


REF:
http://cht.siliconmotion.com/A3.2_Partnumber_Detail.php?sn=7

https://op46.com/#/technology/1ce009ebc588f1e75a4c7c7b94ba08f3.html

http://www.phison.com/Traditional/EnterpriseNews.asp?title=193-%E5%BC%95%E7%88%86pcie-ssd%E9%A0%82%E6%A5%B5%E5%95%86%E6%A9%9F-%E7%BE%A4%E8%81%AF%E6%96%B0%E6%8E%A8%E5%87%BAps5012-e12%E6%95%88%E8%83%BD%E5%86%A0%E5%85%A8%E7%90%83

[Notepad++] Explorer_1_8_2_UNI


  • dl:Explorer_1_8_2_UNI_dll.zip
  • put:C:\Program Files (x86)\Notepad++\plugins
  • reopen Notepad++







REF:
https://sourceforge.net/projects/npp-plugins/

[Sublime Text] add Ctags update


安裝:
Preferences -> Package control -> Install Package- Ctags

設定:
Preferences -> Ctags->Setting Default ->" 複製"
Preferences -> Ctags->User Default ->" 貼上"
更新CTags執行路徑,例如:
 "command": "D:\\ASolid_PC\\ASolid_SW_Utilty\\ctags58\\ctags.exe"

生成:
dir /s /b *.c *.cpp *.h *.hpp > cscope.files

重啟Sublime Text


使用:
Find ->CTags -> Rebulid CTags ->"選擇檔案路徑" 

可以開始用show cuts:


--以下圖示--

安裝:








設定(複製Default  -> Users)


更新路徑


使用



alts + s (Show symbols)



ShortCuts of CTags 



Ref:

2018年4月16日 星期一

[轉] 理解SSD和NAND Flash(update)

Flash Memory又叫做闪存,是一种非易失性存储器。非易失性是指断电之后数据不会丢失,这里就涉及到断电保护(后面详细讲解)。

总体思路

1、NAND Flash的用途。

2、NAND Flash规则介绍。

3、SSD固件(Firmware,FW)包括:映射表(Mapping Table)、垃圾回收(Garbage Collection)、磨损平衡(Wear Leveling,WL)等。

4、补充概念:写入放大(Write Application)、预留空间(Over Provisioning)、Flash寿命(Program/Erase Count,P/E)等。

5、断电保护机制。 

6、对SSD的评价标准:稳定性、性能、寿命。

1、NAND Flash的用途

HDD是指机械硬盘,是传统普通的硬盘,包括:盘片、磁头、磁盘旋转轴及控制电机、磁头控制器、数据转接器、接口、缓存。

SDD(Solid State Drives)是固态硬盘,包括:控制单元、存储单元(DRAM芯片/FLASH芯片)。

区别:HDD是机械式寻找数据,所以防震远低于SSD,数据寻找时间也远低于SSD。SSD(左图)和HDD(右图)的模样区别如下:

(图片来自百度)

Flash又分NAND Flash和NOR Flash:NOR型存储内容以编码为主,其功能多与运算相关;NAND型主要功能是存储资料,如数码相机中所用的记忆卡。

现在大部分的SSD都是用来存储不易丢失的资料,所以SSD存储单元会选择NAND Flash芯片。这里我们讲的就是SSD中的NAND Flash芯片。

2、NAND Flash的规则

(1)Flash都不支持覆盖,即写入操作只能在空或已擦除的单元内进行。

  更改数据时,将整页拷贝到缓存(Cache)中修改对应页,再把更改后的数据挪到新的页中保存,将原来位置的页标记为无效页;

  指定在已有无效数据的位置写入时,需要先擦除无效页才能在该位置写入新数据。

 

(2)以page为单位写入,以Block为单位擦除;擦除Block前需要先对里面的有效页进行搬迁。

(3)每个Block都有擦除次数限制(有寿命),擦除次数过多会成为坏块(bad block)。

 3、SSD固件内容

(1)映射表 Mapping Table

  逻辑地址:用户程序中使用的相对地址;

  物理地址:实际存储单元的绝对地址;

  所以,映射表里面存储的内容是逻辑地址到物理地址的映射信息,利用逻辑地址查询映射表,找到对应的物理地址,再对实际存储单元做读写访问。

  SSD内部就维护了一张映射表;一般SSD内部会板载DRAM,用于存储程序运行的临时数据,断电会丢失;映射表存放在SDRAM中(方便快速访问),同时NAND Flash中会存储几份映射表(防止断电后映射关系丢失),而且会定期对NAND Flash中的映射便进行更新。

(2)垃圾回收 Garbage Collection

  垃圾回收就是把几个Block中的有效数据集中搬移到新的Block上去, 然后再把这几个Block擦除掉。

  垃圾回收机制有很多,都是根据不同的侧重点提出的,所以没有最优的算法,就像伴侣一样只有适不适合之说。如:Greedy算法,每次选择包含最少有效页的Block来回收,也就是对垃圾的贪心,每次尽可能回收最多的垃圾。还有Cost-Benefit算法(考虑Block的擦除次数)、Cat回收算法、CICL算法等。

另外有两种回收策略:

  • 被动回收策略:当有写入请求的时候,首先判断当前可用空间大小与临界值大小的比较;如果空间足够,直接写入空闲空间;如果空间不够了,首先启用垃圾回收,再往空闲区域完成写入请求。
    • 不足之处:当空间不够的时候写请求会被延迟。
  • 主动回收策略:通过固件设定周期性任务,定时检查可用空间大小,如果需要就执行垃圾回收。
    • 巧妙之处:利用空闲时间提前进行垃圾回收,避免对请求造成不必要的延时。
    • 不足之处:倘若系统一直没有空闲时间,垃圾回收依旧无法有效执行。

(3)磨损平衡 Wear Leveling

  每个Block都是有寿命(Program/Erase Count,P/E值)的,他们的擦除次数是有限的。NAND Flash的寿命类似"木桶原理",取决于所有Block中的最小寿命。如果拼命对某一块进行擦除,NAND Flash的寿命将会被缩减到最小。所以引入了磨损平衡,平衡所有Block的擦除次数。

  有很多不同的磨损平衡机制,大体可以分为两大类:动态WL、静态WL。

  • 动态WL:使用Block进行擦写时,优先挑选P/E值低的Block。
  • 动态WL:把P/E值低的Block中的数据挪到P/E值高的Block中存放。

4、补充概念

(1)写入放大 Write Application

  写入放大倍数 = 闪存写入数据量 / 主控写入数据量 = 实际写入数据量 / 要求写入数据量

  例如,现在有一个写入一页的请求;即主控写入数据量为1;

 

 

  然而这个一页请求触发了垃圾回收,当前的写请求会被延迟,直到垃圾回收完毕后再执行写入操作;

  如果垃圾回收只挪了5页有效数据,那么实际的写入量应该为6页(1页写请求,5页挪动);即闪存写入数据量为5;

  所以写放大为5/1 = 5。

  理想的写放大为1,但是Sandforce的数据写入时会进行压缩写入,最优情况下,写放大可以为0.5,打破了Intel的"写放大不可能小于1"之说。

(2)预留空间 Over Provisioning

  通过垃圾回收的过程,不难知道,垃圾回收的前提是要提供空闲区域来拷贝,如果连空闲区域都没有,垃圾回收将无法执行,这时将不再支持任何数据的写入。为了避免这种情况的发生,提出了预留空间。

  预留空间不仅仅只是用来保证垃圾回收的正常完成,还存储着SSD内部的系统数据(包括:出厂坏块信息、SSD固件、Mapping Table等)。

  所以如果说明存储大小为256GB,实际上的存储空间可能只有238GB(一般预留空间为7%)。

  另外,OP越大,垃圾回收就会越快,相应写放大会变小,所以读写性能就会越好;但用户能使用的空间会被缩小。

(3)Flash寿命 Program/Erase Count

  前面也已经提及到了,每个Block都是有擦除次数限制的,所以引入了寿命这个说法。

5、断电保护机制

  中控里板载的SDRAM是非易失性存储器,断电之后数据会丢失,这个时候SDRAM中的数据主要包括:用户数据、映射表;

  如果没有断电保护机制,再次上电时,先去NAND Flash中找上次更新时的映射表,这时拿到的信息并不是最新的,是上次更新NAND Flash中映射表时的数据信息,所以发生了大部分数据丢失。

  因此SSD板上会加上钽电容或者超级电容,当检测到非法断电时,首先停止数据操作,钽电容或超级电容开始放电,以保证SDRAM中的数据能够写入到NAND Flash中。

  至于是用钽电容还是超级电容,得看具体要保护的数据量;不是电容的容量越大越好,因为只要电容开始放电,就要等待它的电放完之后才可以进行其他操作。假如电容容量过大,用户只是点了个电脑重启,这时候SSD的电容会开始放电,放电还没完成的时候,电脑已经重新上电,这时无法认盘。所以电容电量应该选最时候的。

  基于SDRAM中的内容,断电保护机制主要分为3种:

(1)保存SDRAM中所有数据

  再次上电后,相当于断电前的操作被中断,重新上电后就可立马进入待命状态。

(2)只保存SDRAM中的用户数据

  再次上电后,需要先把上次NAND Flash中保存的映射表提取到SDRAM中,再将保存的用户数据提取出来,两者结合更新映射信息,更新完之后才进入待命状态。

(3)只保存SDRAM中的映射表

  再次上电后,需要先把上次NAND Flash中保存的映射表提取到SDRAM中,只是丢掉了用户断电前正在操作的数据,无法更新。

6、SSD的评价标准

(1)稳定性:SSD是否稳定,最大的影响因素是垃圾回收机制的选择,恰当的垃圾回收可以提供稳定的读写速率;例如主动垃圾回收机制,在空闲的时候做垃圾回收,读写速度不会因为延时而波动不定。

(2)性能:预留空间的大小主要决定了SSD的性能,OP大,垃圾回收快,相应写放大小,读写性能就越好。

(3)寿命:所有Block的P/E值越趋近于均衡,SSD的寿命就越趋近于最佳。



https://blog.csdn.net/gongxiaojiu/article/details/76099184

2018年4月15日 星期日

[Dos] findstr

Q:尋找文字檔中的特定字串,且含空白

SOL:
findstr  "CDB.=" 20180413_CDB_CMD_RDTLog.txt


2018年4月13日 星期五

[DOS]重新導向運算子

sg_raw.exe -r 16384 PD1  A1 08 0E 7F 20 00 00 00 A0 21 00 00 > t1.txt 2>&1

STDIN 0 鍵盤輸入
STDOUT 1 輸出至 [命令提示字元] 視窗
STDERR 2 輸出 [命令提示字元] 視窗時發生錯誤

UNDEFINED 3-9 應用程式分別定義這些控制碼而且每一個工具有特定的控制碼。
例如,下列指令將控制碼 2 (亦即,STDERR) 重新導向為控制碼 1 ( 亦即,STDOUT):
1<&2


重複控制碼
& 重新導向運算子會從一個指定的控制碼將輸出或輸入複製到另一個指定的控制碼。例如,若要傳送 dir 輸出到 File.txt 以及傳送錯誤輸出到 File.txt,請鍵入:

dir>c:\file.txt 2>&1

2018年4月12日 星期四

ata passthrough , CDB (Command Descriptor Blocks) update



SCSI是Small Computer System Interface

CDB(Command Descriptor Blocks):指令描述區塊
CDB的長度主要有三類: 6字節,10字節,12字節以及16字節。


2018年4月2日 星期一

[SSD] P- S- 3 -1- 1- 1




Phison PS3111 SSD控制芯片共1个产品
型号接口标准NAND Flash通道DDRECC支持
PS3111SATA6.0Gbps2D&3D NAND2DRAM-lessLDPC

系列概览

Phison PS3111 是一款可以支持2D&3D NAND Flash的SATAIII SSD主控芯片,顺序读写速度分别可达550MB/s和500MB/s,支持的容量范围为16GB~1TB。

PS3111-S11T主要规格:

• SATA III/6Gbps 向下兼容
• 至此1Znm SLC/pSLC/MLC/TLC 和3D NAND Flash
• 有DRAM 及DRAM-Less两种设计方案
• 支持容量:16GB 最大可达到1TB 
• 采用LDPC纠错机制
• 超高效能
  -  连续读取: up to 550 MB/s
  -  连续写入: up to 500 MB/s
  -  4K 随机读取: up to 91,000 IOPS
  -  4K 随机写入: up to 86,000 IOPS
• 支援S.M.A.R.T 检测功能及提供附加Smart Recovery (SSD数据回复功能)/工作负载分析工具

IOPS。




REF:
http://tophitech.com.cn/uploads/2016/12/252048579143.pdf
http://www.chinaflashmarket.com/Product/Detail/ic/10483