作者: 朱明武(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)。 首先,打开[url=]bqStudio[/url]的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)不变。
打开[url=]bqStudio[/url]的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显示绿色表示字节已经成功发送电量计。 [url=][/url]
图2 修改密码
按照第3节介绍的安全密码读取方法,读回密码检验密码是否修改正确。如下图3,在 Read Block 返回35 00 34 12 78 56 FF FF FF FF表示密码修改成功。 图3 确认密码
制定密码时要注意UNSEAL KEY的第一个字节与FULL ACCESS KEY的第一个字节不能相同。比如UNSEAL KEY 0x1234, 0x5678与FULL ACCESS KEY 0x1234, 0xFFFF的第一个字节相同为0x1234,因此这不是有效的密码。
|