树莓派的SD卡/MicroSD卡,坏掉的例子屡见不鲜,我觉得这种卡看上去就挺脆弱的,如果再加上经常插拔,那坏掉也正常。但问题是,SD卡是树莓派官方推荐的启动方式,一旦坏了你的Pi也就歇菜了,不像USB坏掉一个还能剩一个,你说是吧。
所以我们今天就来了解一下关于SD卡的话题:
- SD卡的工作原理是什么
- 树莓派与SD卡是怎么连接的?
- 推荐给树莓派用什么类型的SD卡?
- SD卡有什么代替方案,eMMC?USB?
SD卡的工作原理是什么
首先要说到NAND,这是一种基于晶体管的逻辑门电路。然后是NAND Flash,这是一种基于NAND的存储结构,但你需要基于某种方式来访问它(读写它)。
比如,可以在PCB上放置一个NAND Flash存储芯片,然后添加一个控制芯片及其接口。如果是USB接口,你就得到一个U盘。如果是SD接口,那就是SD卡了。
图1-U盘或SD卡内部有NAND Flash存储芯片和控制芯片,见参考链接[1]
U盘或者SD卡都是相对简单的设备,这两者主要是接口形态的不同。当你在上面存储信息时,控制器会将信息写入某些固定位置,这可能会损坏NAND Flash,因为他们的写入次数是有限的。
而对于固态硬盘(SSD),其内部的控制器就复杂的多,会做很多资源平衡与调度。并且,SSD中的NAND Flash从工艺加工角度也更为高级,可分为SLC、MLC等,就不展开了。
树莓派与SD卡是怎么连接的?
树莓派4B上装配的是一种更小型化的SD卡,称之为Micro SD卡。与普通SD卡原理类似,但接口有区别,对比示意图如下:
图2-SD卡、Mini SD卡、Micro SD卡接口引脚对比
看起来这些卡的接口都是一种基于Clk+4 Data的总线。由于区别只在于体积和引脚定义,本文不特别区分,统称为SD卡。
关于树莓派4B的主芯片SoC BCM2711与SD卡是如何连接的,这个在官方的原理图上并未显示(阉割版原理图嘛……)。
不过我们可以从树莓派3B上找到一些蛛丝马迹,看下图,树莓派3B主芯片SoC BCM2837与MicroSD卡是直连的:
图3-树莓派3B 主芯片SoC BCM2837与MicroSD卡直连
也可以从官方提供的树莓派4B《bcm2711-peripherals.pdf》中看到一些蛛丝马迹。总之结论就是,对于树莓派4B,主芯片SoC BCM2711是与MicroSD卡直连的。猜测BCM2711内部应该是有SD卡及其总线的外设控制器。
推荐给树莓派用什么类型的SD卡?
存储大厂金士顿(Kingston)写过这么一片文章《Choosing Storage for Raspberry Pi》,出处见参考链接[2]:
图4-金士顿推荐给树莓派用8GB Class 10 UHS 类型的SD卡
其中说到:对于安装Raspbian OS操作系统,SD卡(MicroSD卡)的存储容量至少要8GB。然后对于SD卡的等级,要达到Class 10 UHS-I。
Class 10 UHS-I,如果看下图,也就是10MB/s的水平(但我没看出上述金士顿文章截图说的95MB/s是如何实现的)。
图5-SD卡Class 10 UHS-I等级图
国外http://Tomshardware.com也做过树莓派SD卡读写测试,对于UHS-I的连续写入速度,也就是在10~20MB/s的水平。详情可参见链接[3]。
图6-Tomshardware做树莓派4对于SD卡的读写测试
SD卡有什么代替方案,eMMC?USB?
SD卡的代替方案有eMMC或USB。
先说下eMMC,eMMC和SD卡按照相同的技术标准构建,原理相同。但eMMC的芯片通常采用小型球栅阵列(BGA)封装,是永久焊接在PCB的,不可拆卸。我们在树莓派CM4版本上看到eMMC芯片:
图7-树莓派CM4上的eMMC芯片
http://jeffgeerling.com测试过树莓派CM4上的eMMC读写速率,确实比SD卡要快很多,如你对树莓派存储媒介的读写速率有要求,可以看看它的评测,并考虑用树莓派CM4的版本,详见参考链接[4]。
当然你也可以将树莓派的启动媒介切换到USB上,不过会占用USB口,而且功耗和发热应该也更高,因为会用到USB控制器VLI VL805。具体将树莓派的启动媒介切换到USB的办法网上有很多,我看的是参考链接[5]。
总结
总结一下树莓派上使用SD卡优点:
- 树莓派SoC能直接控制读写SD卡,不需要额外占用USB口
- SD卡的卡槽在PCB背面,不影响体积
- SD卡可以插拔,使得用户可以在PC上烧录操作系统
而SD卡缺点在于:
- SD卡易坏,特别是买到山寨品牌的时候
- SD卡易坏,特别是在SD卡需要频繁读写,以及在写操作时发生断电,都会增加SD卡损坏的概率
- SD卡的读写速度较慢,这个可以考虑用eMMC或者用USB作为代替方案
整体来说,SD卡的优点还是大于缺点,这是为了兼顾开发难易的一种折中。
这不树莓派5也出来了吗,官方推荐的存储媒介仍然是SD卡(MicroSD卡),而且还支持了SD卡的SDR104标准,即更高的时钟频率和读写速率。所以,继续用SD卡吧。
图8-树莓派5B上的MicroSD卡
参考链接
- [1]SSD, SD, eMMC, Raw NAND what are the differences?
- [2]https://www.kingston.com/en/blog/personal-storage/choosing-storage-for-raspberry-pi
- [3]Best microSD Cards for Raspberry Pi 2023
- [4]https://www.jeffgeerling.com/blog/2020/raspberry-pi-compute-module-4-review
- [5]How to Boot Raspberry Pi 4 / 400 From a USB SSD or Flash Drive
- [6]《bcm2711-peripherals.pdf》
(全文完)
可以关注我的微信公众号“疯狂的运放”,及时收到最新的推文。