This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS570LC4357: CPU在正常运行时,如何进入privileged mode

Part Number: TMS570LC4357

有的一些寄存器的参数只有在privileged mode模式下才能写,那么如果我想改这些参数,如何进入privileged mode模式,改完后又如何推出privileged mode模式。

  • 我没有找到解决我目前问题的答案。

    我目前的问题是。我的SCI用DMA发送数据,在一开始初始化的时候我配置DMA发送的数据长度是10个字节。在程序运行的时候我想要SCI分别发送14和18和24个字节的数据包。这时我尝试修改DMA控制包的发送数据长度;dmaRAMREG->PCP[DMA_CH4].ITCOUNT = (14 << 16U) | 1;   dmaSetChEnable(DMA_CH4, DMA_HW);  发现SCI的发送DMA停止了工作。我猜测是因为寄存器dmaRAMREG的ITCOUNT 参数处于privileged mode模式才能够写,所以应该在privileged mode模式下去修改该参数。

    不知道您知道我修改完SCI的DMA控制包后SCI的发送DMA停止工作的原因吗?

  • 好的收到您的问题,已帮您升级到英文论坛,如有答复将尽快给到您。

  • 硬件通道使能位在块传输结束时会被清除。 您需要重新启用才能传输下一个块。 如果 SCI SET_TX_DMA 位被清除,也请重新启用来传输数据。

    1. 清除 SCI TX DMA 位

    2. 重新配置帧计数和元素计数

    3. 设置硬件通道使能位

    4. 设置 SCI TX DMA 位 ti 触发传输

    sciREG1->CLEARINT |= SCI_SET_TX_DMA;

    g_dmaCTRLPKT.FRCNT = size/2;         -->new FRCNT
    g_dmaCTRLPKT.ELCNT = 1;
    dmaRAMREG->PCP[0].ITCOUNT = (g_dmaCTRLPKT.FRCNT << 16U) | g_dmaCTRLPKT.ELCNT;

    /*Set dma channel 0 and 1 to trigger on hardware request*/
    dmaSetChEnable(DMA_CH0, DMA_HW);

    sciREG1->SETINT |= SCI_SET_TX_DMA; 

    希望以上回答对您有所帮助,如有其他问题请随时联系我们。