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

浙公网安备 33010602011771号