关于eMMC中写保护功能的认知

eMMC中写保护主要分为4类:Power-On、Permanent、Temporary和Password。

按照作用区域又可以分为两类:

1:作用于这个device,包括boot区,PRMB区,user区等,Permanent和Temporary。

2:只作用于特定区域,一般是user区,Power-On、Permanent、Temporary和Password。

作用于整个区域的Permanent和Temporary可以通过CSD的BIT[13]和BIT[12]设定,需要注意的是CSD的BIT[13]是只能写一次的,这意味着全域永久写保护一旦设定了,就没法再取消了,所以使用的时候需要谨慎。

而Temporary可以随时通过修改CSD BIT[12]取消写保护状态。

作用于特定区域的写保护一般以Erase Group为单位,各个写保护功能如下:

1、Power-On:上电写保护,一般是在device上电完成之后设置,device断电或者硬件复位之后写保护状态消失。

2、Permanent:设定为永久写保护之后,该区域就无法再取消写保护了,断电,硬件复位,和配置US_PERM_WP_EN  = 0都没用。

3、Temporary:临时写保护区域可以通过CMD29命令取消,CMD29只能取消Temporary写保护。

以上3个模式都可以通过EXT_CSD Byte[171]设定。Permanent优先级最高,一旦设定,其他模式都失效,Power-On其次,Temporary优先级最低,当其他两种模式都没有设定的时候就是Temporary模式,而保护哪个区域由CMD28确定。

4、Password:这是一个特殊的保护机制,一旦设定了Password,device就只能响应class0里面的基础命令,其他命令都不会正确响应。以上3个写保护设定之后,device还是能正常响应所有支持的class命令的(除了写和擦除)。

Password在锁卡(lock/unlock)功能中使用到,使用CMD42,能实现设置Password,lock/unlock设备,reset password和replace password。一般设置密码和锁卡功能是搭配使用的。

 

对于写保护使用到的命令CMD28-CDM31,它们还有另外一个作用,当CLASS_6_CTRL=0x01时,它们是动态容量管理命令。所谓动态容量管理就是host可以通过该命令改变device上报的容量,这是为了解决device使用过程中出现坏块的情况,注意容量动态管理功能只在高容量设备(大于2GB)中生效,且CMD28 release了容量之后并不是实时更新的,上报容量的变化只能在复位之后从新identify才能体现出来。因为是和写保护用的同一组命令,所以release数据的单位和写保护一样。

 

posted on 2025-04-09 16:08  style__moon  阅读(363)  评论(0)    收藏  举报