eMMC write protection介绍

What is eMMC write protection?

是一种对写入和擦除操作的保护方案。有3种可选的方案:

1.永久写保护: 一旦开启,被保护的区域将永久不能被写入或擦除。

2.power-on write protection: 上电之后有效的写保护。一旦开启,只有当eMMC设备重新上电或通过rst pin复位,才能解除写保护。

3.Temporary write protection: 临时写保护,开启后可以随时通过修改设定,再次解除写保护。

 

write protection适用的区域

1.整个eMMC(包含boot分区,general purpose, RPMB和User/Enhanced area)都可以被永久或者临时写保护,通过设定CSD(PERM_WRITE_PROTECT [13]、TMP_WRITE_PROTECT [12])来选择临时或者永久写保护整个eMMC。整体永久写保护会覆盖其他所有的保护方案。

2.可以选择部分区域写保护。ERASE_GROUP_DEF in ext_csd决定段大小,也就是保护区域的单位。当ERASE_GROUP_DEF =0,段大小等于CSD种WP_GRP_SIZE,当设为1,段大小等于EXT_CSD中HC_WP_GRP_SIZE。

特别是,如果之前在设定写保护区域时,已经指定了段大小,比如是HC_WP_GRP_SIZE,那么后面发送给eMMC write或erase command之前,也要设定响应的ERASE_GROUP_DEF 值,否则会引起device出现未知的行为。

换句话说,实际使用中,应该一直使用相同的ERASE_GROUP_DEF 。

 

如果ERASE_GROUP_DEF = 1, write protect group size =HC_WP_GRP_SIZE * HC_ERASE_GRP_SIZE * 512KB;

如果ERASE_GROUP_DEF=0.   write protect group size =  (WP_GRP_SIZE +1) * (ERASE_GRP_SIZE + 1) * (ERASE_GRP_MULT + 1) * 512B

 

如何设定一个区域为write protect?

1.设定被保护区域的起始地址

CMD28 SET_WRITE_PROTECT用来设定保护组的起始起始地址。保护的区域大小由设定的保护组大小决定。也就是write protect group size。

2.如果被保护区域超过write protect group size,发送多次CMD28

换句话说CMD28一次只能设定一个write protect group的地址,如果需要设定的区域大小超过了write protect group size,就需要再发送cmd28 +

end address of pre write  protect group.

CMD29 CLR_WRITE_PROT, 参数是data address,用来清除一个write protect group。

 

 

 

ERASE_GROUP_DEF 
posted @ 2024-10-16 20:04  老胡同学  阅读(597)  评论(0)    收藏  举报