看了几个回答,觉得都不全面,主要是两个原因
看了几个回答,觉得都不全面,主要是两个原因:1. 专利。
2. 写保护并不是都有用。
专利的事情就不细说了,反正绕不过去,要么交钱,要么不做。U盘这种东西本来的利润就不高,技术含量也一般,竞争太激烈,大头都让闪存厂商拿走了,所以再设计一个机械的开关会增加不少成本的。
第二个原因是写保护其实并不是都有用的,而且设计上有点麻烦:
http://www.qianxianly.com/data/attachment/forum/20221122/1669057120786_1.jpg
U盘(包括SD卡读卡器)的写保护原理是:主机(Host)发一个Mode Sense的命令,如果U盘返回特定的标志位,就表示只读(写保护)——需要注意的是:这个标志位只是一个软件的行为。我过去就遇到过,写保护的卡,实际上也是可写的,只要发写命令下去,操作会成功。
USB协议栈有一个特点,就是所有请求必须由主机发起,设备不能主动上报状态。换句话说,这个ModeSense可能要主机主动去发才行。那么在上电的情况下,拨动写保护开关以后,需要主机重新查询设备状态才能同步更新软件状态,如果主机不查询,那么主机驱动可能不知道设备现在是否是写保护的。而周期性轮询设备状态,实际上是对设备带宽的一种浪费。
所以,如果要实现一个完整的写保护功能,一方面要在硬件上增加写操作的控制,这对于U盘这种很弱的控制器来说,还是有点费劲的,同时软件上还要支撑起整套写保护的协议(上报Media Change + Write Protect),甚至还需要主机端驱动配合。
考虑到复杂度的因素,实现整套支持还是有点麻烦的。
U盘这种销售靠走量的小设备,价格贵几块钱,可能就没人卖了,写保护作为一个卖点,需求并不大,也不是一个必选项,所以干脆就没人做了。
另外U盘坏了的时候有些也不能写,但原理是不同的,不在讨论范围内。
页:
[1]