ZHCU943A November 2020 – July 2022 TPS25750
| 说明 | 'PBMc' 任务结束补丁加载序列。在所有补丁数据传输完毕后发送此任务。此任务将启动对已传输的二进制补丁数据进行的 CRC 校验,如果 CRC 成功,则会执行补丁中包含的 patch_init 函数。 | |||
|---|---|---|---|---|
| INPUT DATAX | 无 | |||
| OUTPUT DATAX | 位 | 名称 | 说明 | |
| 319:288 | acCalculatedCRC | 在固件中为配置数据计算的 CRC。 | ||
| 287:256 | acTransferredCRC | 随配置数据一同传输的 CRC。 | ||
| 255:240 | 保留 | 读数为 0。 | ||
| 239:224 | acIndicatedDataSize | 传输的配置数据中指示的 DataSize。 | ||
| 223:216 | acHeaderVersion | 传输的配置数据中指示的标头版本。 | ||
| 215:208 | acFailCode | 如果应用程序配置数据未能应用,则会显示此错误代码,指示未能应用的原因。 | ||
| 0x00 | AC_FAIL_NONE:无失败。 | |||
| 0x01 | AC_FAIL_WRONG_HEADER_VERSION:标头版本应为 1,但不是 1。 | |||
| 0x02 | AC_FAIL_TOO_MUCH_DATA:DataSize 字段表明您正在尝试加载已分配了 SRAM 的更多配置数据。 | |||
| 0x03 | AC_FAIL_CRC_CHECK_FAIL:CRC 比较失败。 | |||
| 207:200 | acState | AppConfig 状态机的当前内部状态。 | ||
| 0x00 | AC_NODATA:尚未找到配置数据,因为我们尚未开始查找。 | |||
| 0x01 | AC_LOADING_DEFAULT:尝试从出厂默认值加载配置数据。 | |||
| 0x02 | AC_LOADING_SRAM:尝试从 SRAM 加载配置数据。 | |||
| 0x03 | AC_LOADING_FLASH:尝试从闪存加载配置数据。 | |||
| 0x04 | AC_LOADING_I2C:尝试从 I2C 加载配置数据。 | |||
| 0x05 | AC_LOADING_DONE:配置数据加载完成,我们找到了有效数据。 | |||
| 0x06 | AC_ERROR:通用错误状态。 | |||
| 0x07 | AC_DONE_SUCCESS:完全完成了应用程序自定义过程,并成功应用了记录。 | |||
| 0x08 | AC_DONE_FAIL:完全完成了应用程序自定义过程,但未应用记录。 | |||
| 199:192 | configBundleGood | 如果顶级状态机找到有效的配置捆绑包,则为 1,否则为 0。 | ||
| 191:160 | rpRomVersionExpected | 传输的捆绑包补丁标头中的 romVersionExpected | ||
| 159:144 | rpBundleTotalSize | 传输的捆绑包补丁标头中的 bundleTotalSize。 | ||
| 143:128 | rpBundleFlags | 传输的捆绑包补丁标头中的 bundleFlags。 | ||
| 127:96 | rpPatchBodyCrc | 传输的捆绑包补丁标头中的 patchBodyCrc。 | ||
| 95:64 | rpPatchHeaderCrc | 传输的捆绑包补丁标头中的 patchHeaderCrc。 | ||
| OUTPUT DATAX | 位 | 名称 | 说明 | |
| 55:48 | rpBundleSignature | 传输的捆绑包补丁标头中的 bundleSignature。 | ||
| 47:40 | rpState | RomPatch 状态机的当前内部状态。 | ||
| 0x00 | RP_NOPATCH:未加载任何补丁。 | |||
| 0x01 | RP_LOADING:在加载补丁数据的过程中。 | |||
| 0x02 | RP_LOADINGDONE:已收到所有补丁数据。 | |||
| 0x03 | RP_RUNNING:一个补丁已加载并正在运行。也可能指示有一个 NULL 补丁处于活动状态。 | |||
| 0x04 | RP_EARLYLOAD_SKIPPED:指示早期引导过程不需要等待 I2C 上的补丁。 | |||
| 0x05 | RP_UARTBOOTED:检查 RAM 中的补丁。 | |||
| 0x06 | RP_ERROR:通用错误状态。 | |||
| 39:32 | patchBundleGood | 如果顶级状态机找到良好的 ROM 补丁,则为 0x01,否则为 0x00。 | ||
| 31:24 | AppConfigPatchCompleteStatus | 0x00 | ||
| 0x40 | 警告。 | |||
| 0x80 | 失败。 | |||
| 23:16 | DevicePatchCompleteStatus | 一个指示 RomPatch 状态机是否成功执行的返回代码。此值始终有效,并且反映了 RomPatch 机制的内部状态,但仅当传输的捆绑包确实包含补丁数据时才必须纳入考量。 | ||
| 0x00 | 成功。 | |||
| 0x20 | 未就绪。 | |||
| 0x40 | 不是补丁。 | |||
| 0x41 | 补丁标头校验和不匹配。 | |||
| 0x42 | 补丁与此版本的 ROM 不兼容。 | |||
| 0x43 | 补丁代码校验和不匹配。 | |||
| 0x44 | 收到 null 补丁。 | |||
| 0x45 | 收到错误补丁。 | |||
| 15:8 | cpReturn | 始终返回成功,无法使其失败。 | ||
| 字节 1:返回代码 | ||||
| 7:4 | rpReturnIndicator | rpReturn 值的最高有效半字节。 | ||
| 0x0 | 成功。 | |||
| 0x2 | 参考。 | |||
| 0x4 | 警告。 | |||
| 0x8 | 错误。 | |||
| 3:0 | acReturnIndicator | acReturn 值的最高有效半字节。 | ||
| 0x0 | 成功。 | |||
| 0x2 | 参考。 | |||
| 0x4 | 警告。 | |||
| 0x8 | 错误。 | |||
| 任务完成 | 当输出具有有效的 DevicePatchCompleteStatus 和 AppConfigPatchCompleteStatus 时,'PBMc' 任务完成。如果 DATAX 输入不包含总补丁大小,则此任务被拒绝。如果 MODE 寄存器 (0x03) 等于 'APP',则此任务将被拒绝。 | |||
| 副作用 | 在此任务完成之前,它会将 I2C 从器件地址从补丁地址更改回正常值。成功完成此任务后,PD 控制器会将 MODE 寄存器 (0x03) 更改为 'APP' 并进入应用程序模式。 | |||
| 其他信息 | 当 CMDx 寄存器变为 0 时,应检查 Output DATAX 寄存器的状态。如果 MODE 寄存器为 'APP'(表明 PD 控制器处于 APP 模式),则它将拒绝 'PBMc' 任务。 | |||