作者: 朱明武(Mingmo)
电量计有三层安全模式:SEALED(加锁), UNSEALED(解锁), FULL ACCESS(全访问)。在不同安全模式下切换需要不同的安全密码。下面以BQ40Z50-R2为例(BQ40Z50-R1/R2/R3均适用)介绍三层安全模式的区别、模式切换方法、如何读取密码及如何修改密码。
1、三层安全模式的区别
不同安全模式下电量计的信息访问权限不同。
SEALED(加锁)模式下,标准SBS命令(Command)可以访问、部分扩展命令(Extended Command)不能使用、不能读写Data Memory参数(不能导出导入GG文件)、不可以烧录CHEM ID、不能烧录或导出固件(FW)。具体SBS命令访问权限请参考电量计技术参考手册(Technical Reference Manual),里面ManufacturerAccess() Command List表格的Available in SEALED Mode标记了能否访问。
UNSEALED(解锁)模式下,标准SBS命令(Command)可以访问、部分扩展命令(Extended Command)不能使用、可以读写Data Memory参数(可以导出导入GG文件)、可以烧录CHEM ID、不能烧录或导出固件 (FW)。
FULL ACCESS(全访问)模式下,所有SBS命令(Command)可以访问、可以读写Data Memory参数(可以导出导入GG文件)、可以烧录CHEM ID、不能烧录或导出固件 (FW)。BQ40Z50-R2从TI出货时默认是FULL ACCESS(全访问)模式。
2、三层安全模式之间切换方法
2.1 从FUll ACCESS or UNSEALED 进入 SEALED
往ManufacturerAccess()发送命令 0x0030 即可让BQ40Z50-R2进入SEALED(加锁)模式。通过检查旗标OperationStatus()[SEC1, SEC0] = 1,1.可以判断电量计处于SEALED(加锁)模式。
注意,如果该电量计的SREC固件曾经加锁过,那么在FULL ACCESS or UNSEALED模式下发送复位命令或导出SREC固件后都会使得电量计加锁,进入SEALED模式。
2.2 从SEALED 进入UNSEALED
从SEALED 进入UNSEALED需要往ManufacturerAccess()发送两个字的UNSEAL KEY密码。默认UNSEAL KEY第一个字是0x0414,第二个字是0x3672。先发送第一个字,接着在4秒内发第二个字,中间不能有其它命令读写电量计。通过检查旗标OperationStatus()[SEC1, SEC0] = 1,0.可以判断电量计处于UNSEALED(解锁)模式。
2.3从UNSEALED 进入FULL ACCESS
从UNSEALED进入FULL ACCESS需要往ManufacturerAccess()发送两个字的FULL ACCESS KEY密码。默认FULL ACCESS KEY第一个字是0xFFFF,第二个字是0xFFFF。先发送第一个字,接着在4秒内发第二个字,中间不能有其它命令读写电量计。通过检查旗标OperationStatus()[SEC1, SEC0] = 0,1.可以判断电量计处于FULL ACCESS(全访问)模式。
3、如何读取安全密码
在解锁模式下用ManufacturerAccess() 0x0035命令读取安全密码(Security Keys)。
首先,打开bqStudio的Advanced Comm SMB界面,配置Target Addr = 16 (Hex);在Write Block 位置输入 44(Hex),在 Block中输入 35 00 ,然后点击Write Block 按钮。
然后,在 Read Block 位置输入 44(Hex),点击 Read Block按钮,即可读取电量计的安全密码。返回的数据以小端序显示,即低字节在前、高字节在后。比如下图1,返回14 04 72 36 FF FF FF FF,其中0414是UNSEAL KEY的第一个字节,3672是UNSEAL KEY的第二个字节,FFFF是FULL ACCESS KEY的第一个字节,最后一组FFFF是FULL ACCESS KEY的第二个字节。
图1 读取密码
4、如何修改安全密码
在解锁模式下用ManufacturerAccess() 0x0035命令修改安全密码(Security Keys)。下面举例把BQ40Z50-R2默认UNSEAL KEY密码0x0414, 0x3672修改为0x1234, 0x5678,保留FULL ACCESS KEY(默认0xFFFF, 0xFFFF)不变。
打开bqStudio的Advanced Comm SMB界面,配置Target Addr = 16 (Hex);在Write Block 位置输入 44(Hex),在 Block中输入 35 00 34 12 78 56 FF FF FF FF,然后点击Write Block 按钮,如图2所示。 Transaction Log显示绿色表示字节已经成功发送电量计。
按照第3节介绍的安全密码读取方法,读回密码检验密码是否修改正确。如下图3,在 Read Block 返回35 00 34 12 78 56 FF FF FF FF表示密码修改成功。
制定密码时要注意UNSEAL KEY的第一个字节与FULL ACCESS KEY的第一个字节不能相同。比如UNSEAL KEY 0x1234, 0x5678与FULL ACCESS KEY 0x1234, 0xFFFF的第一个字节相同为0x1234,因此这不是有效的密码。
审核编辑:何安
全部0条评论
快来发表一下你的评论吧 !