ZHDU116G January 2018 – June 2024 CC1312PSIP , CC1312R , CC1352P , CC1352R , CC2642R , CC2642R-Q1 , CC2652P , CC2652PSIP , CC2652R , CC2652RB , CC2652RSIP , CC2662R-Q1
将 COMMAND_SET_CCFG 命令发送到引导加载程序,以配置闪存 CCFG 区域中由 ROM 引导固件读取的定义字段。在执行实际的闪存编程操作之后,该命令会发送 ACK 信号以响应命令。该命令在写入操作之前不执行任何擦除操作。
该命令包含两个 32 位值,这两个值都以 MSB 优先的方式传输。第一个 32 位值是 CCFG 字段 ID,用于标识要写入的 CCFG 参数,第二个 32 位值是要编程的字段值。命令处理程序会屏蔽掉与 CCFG 参数大小不对应的字段值位。
COMMAND_SET_CCFG 命令只能将 CCFG 参数值位从 1 更改成 0。
尝试将任何位从 0 更改为 1 会导致错误状态,可通过以下 COMMAND_GET_STATUS 命令观察到该状态。
仅有在 ROM 引导期间控制器件配置的 CCFG 字段才能通过该命令写入。(从 BL_CONFIG 到结束的字段)。
要将 CCFG 参数值位从 0 更改为 1,唯一方法是擦除整个 CCFG 闪存扇区。在实际闪存编程终止后,该命令会发送 ACK 信号以响应命令。
如果 CCFG 区域(闪存顶部扇区)由 FCFG1 或 CCFG 中的保护位进行写保护,则编程操作会失败。
包括该命令在内的数据包格式如下:
unsigned char ucCommand[11];
ucCommand[0] = <size=11>;
ucCommand[1] = <checksum>;
ucCommand[2] = COMMAND_SET_CCFG;
ucCommand[3] = Field Id[31:24];
ucCommand[4] = Field Id[23:16];
ucCommand[5] = Field Id[15:8];
ucCommand[6] = Field Id[7:0];
ucCommand[7] = Field Value[31:24];
ucCommand[8] = Field Value[23:16];
ucCommand[9] = Field Value[15:8];
ucCommand[10] = Field Value[7:0];
表 11-5 中介绍了定义的 CCFG 字段 ID 以及相应的字段值。
| 字段 ID | 字段值 | 说明 |
|---|---|---|
| 0: ID_SECTOR_PROT | Bit[31:0] - 用来防止编程和擦除的闪存扇区的数量 | CCFG 中对应于指定扇区编号的扇区写保护位设置为 0。这样可以保护该扇区不被编程及擦除。第一个闪存扇区的扇区编号为 0。 此命令还用于设置闪存包装程序寄存器中的粘滞扇区保护位。 请注意是否保护扇区 31,即 CCFG 扇区。如果扇区 31 受到保护,则无法设置其他 CCFG 参数。 |
| 1: ID_IMAGE_VALID | Bit[31:0] - 0x0000 0000 | 为了将执行控制传输到闪存映像的引导序列,此字段值必须设置为闪存映像矢量表的起始地址。 |
| 2: ID_TEST_TAP_LCK | Bit[31:8] – 不用考虑 Bit[7:0] – 0xC5 = TAP 已解锁 | 0xC5 以外的任何其他值都会在执行以下引导序列后强制执行锁定 TAP |
| 3: ID_PWRPROF_TAP_LCK | Bit[31:8] – 不用考虑 Bit[7:0] – 0xC5 = TAP 已解锁 | 0xC5 以外的任何其他值都会在执行以下引导序列后强制执行锁定 TAP。 |
| 4: ID_CPU_DAP_LCK | Bit[31:8] – 不用考虑 Bit[7:0] – 0xC5 = DAP 已解锁 | 0xC5 以外的任何其他值都会在执行以下引导序列后强制执行锁定 DAP。 |
| 5: ID_AON_TAP_LCK | Bit[31:8] – 不用考虑 Bit[7:0] – 0xC5 = TAP 已解锁 | 0xC5 以外的任何其他值都会在执行以下引导序列后强制执行锁定 TAP。 |
| 6:ID_PBIST1_TAP_LCK | Bit[31:8] – 不用考虑 Bit[7:0] – 0xC5 = TAP 已解锁 | 0xC5 以外的任何其他值都会在执行以下引导序列后强制执行锁定 TAP。 |
| 7:ID_PBIST2_TAP_LCK | Bit[31:8] – 不用考虑 Bit[7:0] – 0xC5 = TAP 已解锁 | 0xC5 以外的任何其他值都会在执行以下引导序列后强制执行锁定 TAP。 |
| 8: ID_BANK_ERASE_DIS | Bit[31:1] – 不用考虑 Bit[0] – 0 = 组擦除禁用 | 如果设置为 0,COMMAND_BANK_ERASE 引导加载程序命令不会强制执行任何擦除操作。 |
| 9: ID_CHIP_ERASE_DIS | Bit[31:1] – 不用考虑 Bit[0] – 0 = 芯片擦除禁用 | 如果设置为 0,则无论任何芯片擦除请求如何,启动序列都不会执行任何芯片擦除操作。 |
| 10: ID_TI_FA_ENABLE | Bit[31:8] – 不用考虑 Bit[7:0] – 0xC5 = TI FA 启用 | 除 0xC5 以外的任何值都会在后续引导中禁用 TI FA 启用功能。 |
| 11: ID_BL_BACKDOOR_EN | Bit[31:8] – 不用考虑 Bit[7:0] – 0xC5 = 引导加载程序后门启用 | 除 0xC5 以外的任何其他值都会强制在后续引导序列中禁用引导加载程序后门。 |
| 12: ID_BL_BACKDOOR_PIN | Bit[31:8] – 不用考虑 Bit[7:0] – 引导加载程序后门 I/O 引脚编号 | 如果引脚编号超过器件上的 I/O 引脚数量,则会选择器件上最高的 I/O 引脚编号。 |
| 13: ID_BL_BACKDOOR_LEVEL | Bit[31:1] – 不用考虑 Bit[0] – 引导加载程序后门引脚有效电平 | 0 = 低电平有效 |
| 14: ID_BL_ENABLE | Bit[31:8] – 不用考虑 Bit[7:0] – 引导加载程序启用 | 除 0xC5 以外的任何值都会强制引导加载程序忽略任何接收到的命令。 |