之前很多人問類似問題,
大家熱心推文回答完後就刪文,
有用的資訊都不見了,
另開一篇免得又做白工,
這篇標題用全型字SSD,
讓搜尋SSD看不到也是頗無言...
SSD FW在不同公司的要求都不同,
底層有到要懂封裝、BOM表,
高階的可能只要呼叫ic廠的API,
發問時說一下公司類型會更精確,
以下是我想到的相關知識,
有遺漏的請大家幫忙補充。
A. 語言相關 MCU programming
不幸的話有組語,
通常是C/C++,
volatile要會用,
用指標或陣列存取既定的位址,
進階一點要掌握linking loader,
能給記憶體配置表,
也許要建tool chain(公司沒買工具)
B. 架構相關 計算機組織
這類的都是有點概念就好,
知道細節是分析bug有幫助,
pipeline、I/D-Cache是基本,
內部bus如AHB、AXI,
各CPU的獨特功能,
如ARM的register bank。
C. host protocol相關
分工細一點可能碰不到,
但跳槽應該會被問:p
被分到的話要會看分析儀的trace,
主流是SATA和NVMe,
SATA的話SATA spec和ATA spec,
有空看一下host端,intel網站有,
ide controller、bus master,
還有目前的AHCI,
NVMe就PCIe spec和NVMe spec,
NVMe如同AHCI,被driver控制,
讀寫指令的方向和SATA想法不同,
搞懂了會覺得很有趣^^
D. NAND flash相關
最噁心的部分,慢又不穩的東西,
了解一下SLC,MLC,TLC的原理,
就知道為何越來越便宜也越不穩,
廠商還分了兩個陣營更麻煩,
可以先找廠商的datasheet,
瞭解基本的讀寫流程,
以後要看示波器debug,
因為不穩所以要ECC,硬體會做,
所以知道概念能操控就好,
因為很慢所以有各種加速方式,
新人進去再學也行,
剩下的就是雜七雜八的知識,
wear leveling,LBA和flash對應,
還原資料、加解密、資料保護…
很多但很重要。
E. IC相關
上電過程、power management、
IO pad控制、電壓、溫度、...
也都是知道越多越好,
但新人不苛求啦。
草草結束是宵夜吃完要上工了,
希望大家有興趣的幫忙補充,
手機排版亂亂的請見諒。