ZHCUAN6E October 2022 – May 2025 MSPM0L1105 , MSPM0L1106 , MSPM0L1116 , MSPM0L1117 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1
调试子系统邮箱 (DSSM) 使调试探针能够通过 SWD 接口将消息传递到目标器件,以及使目标器件能够将数据返回到调试探针。
DSSM 支持以下功能:
为 TX 数据(调试探针到目标器件)和 RX 数据(目标器件到调试探针)提供了两个 32 位字数据缓冲区。这些数据缓冲区在 DEBUGSS 中实现为 32 位存储器映射寄存器。此外,还提供了 TXCTL 和 RXCTL 寄存器,用于启用流控制和指示邮箱的状态。
| DSSM 寄存器 | 说明 | 调试探针 | 目标器件 | 操作 |
|---|---|---|---|---|
| TX_DATA | 数据缓冲区 | RW | R | TXCTL.TRANSMIT 在调试探针进行写入时设置,并在目标器件进行读取时清零;TXIFG 也在调试探针进行写入时设置 |
| TXCTL | 流控制和状态 | RW | R | 无 |
| RX_DATA | 数据缓冲区 | R | RW | RXCTL.RECEIVE 在目标器件进行写入时设置,并在调试探针进行读取时清零;RXIFG 也在目标器件进行写入时设置 |
| RXCTL | 流控制和状态 | R | RW | 无 |
TXCTL 和 RXCTL 寄存器提供通用的发送和接收标志。TXCTL 和 RXCTL 寄存器的 BIT0 位置提供特定的 TRANSMIT 和 RECEIVE 标志,用来指示 TX_DATA 和 RX_DATA 的状态。当调试探针向 TX_DATA 缓冲区寄存器写入数据时,将设置 TXCTL 寄存器中的 TRANSMIT 位。然后,TRANSMIT 标志将保持为设置状态,直到目标器件中的 CPU 读取 TX_DATA 或发生 POR。当目标器件中的 CPU 向 RX_DATA 缓冲区寄存器写入数据时,将设置 RXCTL 寄存器中的 RECEIVE 标志。然后,RECEIVE 标志将保持为设置状态,直到调试探针从 RX_DATA 读取数据。
目标器件上运行的软件无法写入 TX_DATA,并且,除了通过读取 TX_DATA 之外,目标软件也无法清除 TRANSMIT 标志。
TXCTL 寄存器的高 31 位 TRANSMIT_FLAGS 包含通用标志位,如果需要,调试探针可以设置或清除这些标志位以实现协议。只有调试探针才能写入 TXCTL 中的 TRANSMIT_FLAGS 字段。DSSM 命令 是与目标器件通信的协议的示例。另请参阅节 1.4,了解与 DSSM 命令相关的安全级别控制。
类似地,只有目标器件软件才可以写入 RX_DATA 和 RXCTL。调试探针无法写入 RX_DATA,它只能通过读取 RX_DATA 来清除 RXCTL 中的 RECEIVE 标志。RXCTL 的 BIT1 到 BIT7 (0xFE) 包含 RECEIVE_FLAGS 字段。如果需要,目标器件上的软件可以设置或清除 RECEIVE_FLAGS 字段中的位以实现协议。这些标志可以由调试探针读取,但不能由调试探针修改。
| AP SEL | ADDR | BANK | INDEX | 寄存器名称 | 位 31 - 8 | 位 7 - 1 | 位 0 |
|---|---|---|---|---|---|---|---|
| 2 | 0x00 | 0 | 0 | TXDATA | TX 数据 | ||
| 0x04 | 0 | 1 | TXCTL | TRANSMIT_FLAGS | 发送 | ||
| 0x08 | 0 | 2 | RXDATA | RX 数据 | |||
| 0x0C | 0 | 3 | RXCTL | 保留 | RECEIVE_FLAGS | RECEIVE | |
| 0x0FC | 15 | 3 | IDR | 访问点 ID | |||