USER GUIDE / SECURITY / SC HASH / CONFIGURATION

配置

硬件支持两种请求(传输)模式:CPU 和 DMA。HSCR.DMAE 应该被正确的配置。

在置 HSCR.EN 为 1 后,应该配置 HSCR.DMAE 来选择哪种模式,然后再配置 HSCR.INIT 为 1,表明 HASH 新的一轮,之后 HASH 将会等待输入数据的写入。CPU 操作应该把原始数据写入 HSDI,然而 DMA 操作应该通过 AHB 主机的读来将原始数据写入内部寄存器,以上两种模式均从 HSDO 中读取结果数据。

CPU 操作

当 HSCR.DMAE 置为 0 时,软件执行 CPU 操作。

CPU配置流程
图 1 CPU 配置流程

DMA 操作

当 HSCR.DMAE 置为 1 时,软件执行 DMA 操作。然后当 HSCR.DMAS 置为 1 后,内部的 DMA 才会真正启动。

当使用 DMA 模式传输大文件时,文件可以被分段送入 HASH 计算消息摘要,利用 PDMA 更新每一段的 HSSA、HSTC 寄存器即可由硬件自主实现文件计算;如果文件不需要分段传输,HSSA、HSTC 也可以通过 CPU 配置一次即可。无论是 PDMA 还是 CPU 配置 ADDR 和 TC 寄存器,必须保证先配置 ADDR,再配置 TC 的顺序(其中 HSCR.DMAS 在地址和数据量寄存器配置前/后置 1 都可以)。具体传输流程如下:

DMA配置流程
图 2 DMA 配置流程

当在使用 PDMA 配置 ADDR 和 TC 时,要正确执行无描述符 DMA 传输,请参考 PDMA 寄存器表执行以下步骤:

  1. 检查 PDMA 控制器的状态是否可用,即对于全局控制 (DMAC),确保 DMAC.AR=0 和 DMAC.HLT=0;然后对于预期通道 n,确保 DCSn.AR=0、DCSn.HLT=0、DCSn.TT=0、DTCn=0;
  2. 对于使用的通道 n,正确初始化 DSAn、DTAn、DTCn、DRTn、DCSn、DCMn;
  3. 设置 DMAC.DMAE=1 和 DCSn.CTE=1 以启动 DMA 传输:

对于具有自动请求(DRTn.RT=0x8)的通道,当 DCSn.CTE 位和 DMAC.DMAE 位设置为 1 时,传输将自动开始。而对于具有其他请求类型的通道,只有当传输请求被 DMA 检测到时,传输才会开始。

对于任何通道 n,每成功传输一个数据单元,DTCn 值就会递减 1。当指定数量的传输数据单元完成后(DTCn = 0),传输正常结束。同时,如果 DCMn.TIE=1,DIRQP 的相应位将被置 1,以发出中断请求。但是,在传输过程中,如果发生 DMA 地址错误,则应暂停传输。