之前很多人问类似问题,
大家热心推文回答完后就删文,
有用的资讯都不见了,
另开一篇免得又做白工,
这篇标题用全型字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控制、电压、温度、...
也都是知道越多越好,
但新人不苛求啦。
草草结束是宵夜吃完要上工了,
希望大家有兴趣的帮忙补充,
手机排版乱乱的请见谅。