SD卡内的一些问题

来源:互联网 发布:ubuntu卸载输入法 编辑:程序博客网 时间:2024/05/20 20:56

SD卡内部是否有固件?保存在哪儿?做什么事情?

先说说我对SD卡的理解:SD卡内部有控制芯片和flash存储芯片。控制芯片接收来自host的命令和命令参数(一般是地址),然后解析该命令、将收到的逻辑地址转换为逻辑地址,再由控制芯片的CPU去目标地址取数据发给host,而这些工作应该是由固件来做的,固件在SD卡加电后载入RAM,然后做解析命令、转换地址等工作。

如果上面的理解没错的话,我的问题是:


1)这里的固件存放在哪儿?是控制器里的ROMflash、还是存储芯片(flash)上某个对host透明的地方? 

控制器会有ROMCODE,一般能支持很多普通的FLASH。但是如果是新型号的FLASH或者坏的FLASH,不可能重新开颗芯片来支持它,所以就跳入RAMCODE,这部分就是可以修改的固件。有的存储在FLASH上的,有的芯片里面有FLASH,到时候启动不跑ROM就会loadRAM里执行。


2)固件会做哪些事情?会包含磨损均衡算法吗? 

固件做的就是接受SD接口过来的协议,然后按要求写入FLASH,但是Host发来的是逻辑地址,控制芯片会根据自己的算法转成物理地址写入。就算每次host都写逻辑第一扇区,其实在FLASH上是写入不同的物理地址的。


3)固件是否会保存完整的逻辑地址到物理地址的映射表,对于大容量的SD卡来说,这张表会很大,它会保持在哪儿呢? 

固件会保存到FLASH上的特定位置上去,但是不大,看算法,具体的属于公司机密不能透露了。


4)经常听到的Flash Translation Layer(FTL)是否指的就是这个固件? 

这个应该是指控制芯片对FLASH实际的物理操作吧,不清楚。


5)是否可以修改、升级固件,比如我用的金士顿2GSD卡,怎么升级固件呢? 

你必须有你那张卡用的控制芯片的上位机,或者很多人叫量产工具,才能把新固件烧进去。具体怎么跟上位机沟通的协议也因不同的公司不同的固件而不同,有兴趣你可以找逻辑分析仪抓出来分析下^^以前也干过分析对手的卡的事。


From:http://www.amobbs.com/thread-3790782-1-1.html