2018年6月20日 星期三

Nand Flash 簡述

ECC(Error Correction Code)

Nand Flash由於物理特性,Nand Flash中cell的電荷會慢慢漏電,導致資料不正確;抹除和寫資料次數越多,漏電的情形會更嚴重。為了確保資料的正確性,Nand Flash需要ECC功能來偵測糾正Nand Flash內部的隨機位元錯誤。通常Nand Flash本身並不提供ECC功能,而是由SOC的Nand Flash Controller來提供。

Nand Flash 讀寫單位

Nand Flash 中最小的讀寫單位是一個 page,一個 page 的大小通常為 2K bytes(user area) + 64 bytes(spare area),user data 是用來存放一般的儲存資料,spare area 是用來存放一些 meta data,不會用來儲存一般資料

一個 block 通常為 64 個 page,等於 128KB(user area) + 4KB(spare area),一個 block 是 nand flash 進行 erase 動作的一個最小單位

Spare Area

Spare Area 在 linux 系統中的專有名稱為 OOB(Out Of Band),可用來放置 ECC data,還有標記此 block 是否為 bad block,以及一些與 file system 有關的 meta data,Spare Area 從物理上來說跟 User Area 沒有任何差別

Flash 寫入操作

Flash 的寫入稱為 program,並且只能由 1 -> 0,若要寫入由 0 -> 1,則需先執行 erase,erase 完後 flash 內容變為 0xFF,之後便可以將 flash 作 1 -> 0 的 program


Reference
http://cmchao.logdown.com/posts/60216

2018年6月19日 星期二

USB 簡述

USB 是主從關係的 protocol


USB分為 host 跟 device 兩種角色,host 就像是我們的 PC,device 就像是一般的 usb 隨身碟,host 為主,device 為從,所有的通訊都是由 host 所發起,device 都是被動的接收 host 的 command 然後再回應

USB 有階層關係


一個 usb 接口可以接上所謂的 usb hub,usb hub 上提供更多的 usb 接口以連接更多的 usb 裝置,而以 usb host 來說一個接口最多可以這樣串接 127 個 usb 裝置

什麼是 usb root hub 跟 generic usb hub


PC 裝置管理員中可以看到 usb root hub 跟 generic usb hub 兩種裝置,通常 PC 主機版後端會看到幾個 usb 接頭,這個接頭就是 usb root hub 裝置了,並且它跟主機版上的 usb host controller 內建在一起

而常常機殼前置面版上也會有 usb 接口,這些 usb 接口就是 generic usb hub,這些接口沒有跟主機版上 usb host controller 內建在一起,實際上可以看成是外接的 usb hub,只是線路是焊在主機板上並接到機殼的 usb 孔中,這也就是為什麼常常主機版後的 usb 孔會比機殼前置 usb 孔穩定的原因