2016年11月14日 星期一

MicroSD/eMMC Endurance?

隨著NAND Flash越來越普及,NAND Flash的價格越來越低,低到可以當作PC的主要儲存媒介來使用,SSD單價比硬碟高一些,但速度比硬碟快上許多
可靠度也已經有不少測試,實際驗證SSD的可靠度
依照測試的結果,SSD一般使用情境應可以使用上七八年不成問題

但實際上,隨著半導體製程的演進,密度越大,價格越來越低
NAND Flash的可靠度也越來越低...
實際上現在的MLC NAND Flash,P/E Cycle已經降到剩下3K,而且這還是開啟一堆雜七雜八功能的情況下的可靠度...
快閃記憶體可靠性對控制晶片的挑戰

從NAND Flash耐受度(Endurance)與所需ECC修正位元數的趨勢來看,過去SLC僅使用1bit ECC,P/E Cycles為100K,到了2xnm就降到60K,MLC則隨著製程的演進,Endurance呈現巨幅下降,ECC修正位元數呈現指數曲線的暴增;從5xnm製程的MLC的P/E Cycles有10K、需4bit ECC,到3xnm製程的MLC其P/E Cycles已下降到5K,且需要 8bit ECC;2xnm製程的MLC則降為3K、ECC修正位元提高到15~24bit。而TLC記憶體的P/E Cycles更降到1K以下,需72bit甚至上百位元的ECC。因此Flash控制晶片的編碼技術,將從BCH編碼技術,逐漸轉向LDPC(Low Density Parity Check)。

refer: Flash與SSD產業的挑戰─可靠度與總成本
我手上有Raspberry pi跟Raspberry pi2各一塊,都是用MicroSD作為主要儲存
另外手上的手機、平板也分別是使用NAND Flash與eMMC作為主要儲存

我手上有一台艾諾烈焰,製造日期為2012/08/16,主要拿來看漫畫、小說的
這一兩年也出現過異常緩慢,開機後出現缺少package之類的訊息,有時甚至要進行還原才能正常工作
懷疑是NAND Flash已經衰退,剩下就是拖一口氣,看哪天壞到連還原都沒救XDDD

這台是直接使用NAND Flash的產品,拆機圖片如下
貼的NAND Flash為美光29F64G08CBAAA
這顆現在應該停產了,淘寶上還找的到料(不知道是真的假的...)
像這種Pure NAND的產品,依靠的是SOC本身的NAND Controller作ECC與Bad block control
NAND Flash的可靠度也無從判斷起...


那如果是使用eMMC的產品,或是使用MicroSD搭配RaspberryPi,MicroSD/eMMC提供的可靠度足夠讓系統長時間穩定運作嗎??

網路上找的到的資料不多,如果我自己來作這樣的自動測試?
有這個念頭...就開始弄吧:D

Post Blogger from Linux Shell or command line

前文
MicroSD/eMMC Endurance?
MicroSD Card write endurance test

在進行測試的過程中,我打算把測試結果自動發布
要發布到網路上很簡單,但確有不少限制
如果隨便找個網站或是pastebin貼,在這個Blog上我只能用一個Link的方式指過去
不能透過javascript撈到這些資料
因為安全性因素,javascript預設不能跨站存取資料
refer: 同源政策 (Same-origin policy)

要處理這塊似乎有點麻煩,因此我把念頭轉向直接更新到Blogger上

陸陸續續Google了不少資料,測試不同的範例
從shell script到python的範例
從Google API v2到v3
oauth 2.0 api到Blogger api
(我應該再多比較一下的...現在看起來直接貼blogger比CORS還麻煩Orz)

最後找到這個專案
b.py http://pythonhosted.org/b.py/index.html
不確定Owner還有沒有在維護,因為網頁上有尋求人接手的訊息
執行的時候有Warning message,但還可以正確動作

文件看起來很詳細,但實際用起來還是碰到一些狀況
備註一下這些狀況或是我覺得寫的不清楚的地方

  • http://pythonhosted.org/b.py/introduction.html#installation
    可以用pip安裝,但pip安裝時沒有處理相依性問題,網頁上有另外列出相依的package
    (是pip本來就不會處理相依性問題嗎??我不太熟這個...)
  • 安裝後,因為我要貼到Blogger,需要透過Google開放的api進行操作
    Google api改為全部資料存取必須先經過oauth 2.0 api認證
    所以需要設定相關的client_ID跟client_secret
    (這兩個值需要在Google API Console申請)
    http://pythonhosted.org/b.py/apidoc/bpy.services.html#module-bpy.services.blogger
    但這邊提供的範例內,service_options宣告為dict型態,key為字串型態,應該要用單引號包起來
    但client_id跟client_secret沒有...
  • http://pythonhosted.org/b.py/introduction.html#dependencies
    相依性列出的算是詳細,但可能是因為小弟我資質駑鈍,有些地方一開始沒看懂...
    Handlers是負責解讀文件的parser,將文件解讀為正確的排版,貼到Blogger上
    Handlers是粗體字,底下的AsciiDoc、HTML、Markdown、reStructuredText、Text表示的是可以支援的輸入格式,需要對應的Package來處理

    Markdown似乎不支援一些語法? 我用Table語法沒有被正確處理成Table
    reStructuredText需要的Package似乎下架了,因為我找了半天找不到
    最後才看懂他的表示方式,因為我只需要簡單的文字,所以直接使用Text格式上傳
    輸入格式依據輸入檔案的副檔名決定
搞blogger的時間比我寫測試腳本的時間還多很多...

Anyway, It's worked!

2016年7月13日 星期三

第一次洗板子... ADC Converter v0.1

先前因為工作需求,拿麵包板接了一個電路
用STC的mcu,搭配10K NTC電阻
用mcu作溫度觀測

FW的部份
ADC量測,換算成溫度,透過UART輸出量測結果
接著以PC teraterm作Data logger

同事看到覺得這個不錯,雖然公司沒有專門的溫度監測儀器,
但針對一些需要長時間監測的情況還是可以湊合著用

我心中的小宇宙又燃起了一把火
一直沒有完成的電路跟Layout
(每次畫到一半就放棄,Layout線拉不出來...)

趁著有需求,週末花個一天時間把線路跟Layout畫完
我對Layout很不熟,看是會看,畫倒是沒有任何經驗
想說反正低頻,也沒吃多大電流,管他媽媽嫁給誰
把幾條主線大概拉一拉
剩下就Autoroute給他跑下去XDDDDDD

畫電路跟Layout是用Eagle免費版本,有一些限制,但夠用
不過更好的是,Eagle有Linux版本~~~~

Firmware則是用Code::Blocks搭配SDCC,在Linux下編出Intel Hex格式的binary
燒錄原先是在公司用STC的Tool燒,STC的tool只支援Windows
回到家裡,則是在網路上找到的tool stcflash.py

綜合以上,整個開發都可以在Linux platform下完成

Layout在淘寶找了一個pcb洗板打樣的賣家
花了40塊人民幣(運費10塊~25塊另計)
最後成品回來,自己再人工上件

洗板的成品跟上件後的成品如下

幾個缺點紀錄一下

  • 當電源開關的Switch選錯Symbol=_______=
  • Crystal原本想Co-Lay,可以選用Dip件或是SMD件,結果放太近了,鐵殼會貼到Pad。
    在上件前先貼上透明膠帶充當絕緣XD
  • Crystal的負載電容其實轉45度就好放很多,當初不知道在糾結啥,硬放一個很奇怪的位置,不太對稱XDDDD
  • 應該再多一條Trace放LED,充當電源指示燈跟放電迴路,放電放的有點慢
  • VCC那條Net沒有特別改,只有10mil寬,應該要再加寬一些

Racknerd可不可以升級?搬VPS?搬遷的Step by Step (Racknerd 2024 Black Friday 新方案)

 先附上Racknerd 2024 Black Friday 新方案 RAM CPU core 空間 流量 頻寬 價格 1   G 1核 20G 1.5T/月 1Gbps $10.99/年 2.5G 2核 40G 3.0T/月 1Gbps $18.93/年 3   G 2核 60...