F28-F29 Software Migration Guide  1.00.00.00
DMA

Table of Contents

F29 devices have RTDMA (Real-Time DMA) which is an enhanced version of the DMA module present in F28 devices.

  • F28 devices had 1 DMA module (6 channels each) per CPU subsystem. F29 devices have 2 RTDMA modules (10 channels each) which is shared across all the CPUs. The 2 RTDMA modules can be configured in lockstep or splitlock mode.
  • Since there are 2 independent DMA modules, many of the driverlib functions have an additional parameter for base address.
    • RTDMA module base address macros : RTDMA1_BASE, RTDMA2_BASE
    • RTDMA channel base address macros : RTDMA1CH1_BASE - RTDMA1CH10_BASE, RTDMA2CH1_BASE - RTDMA2CH10_BASE
  • RTDMA has independent Read and Write buses. The read and write data sizes are separately configurable. For backward compatibility, the macros DMA_CFG_SIZE_16BIT and DMA_CFG_SIZE_32BIT are retained and configures both read and write sizes as 16/32 bits.
  • RTDMA supports 8-bit, 16-bit, 32-bit, and 64-bit transfers.
  • RTDMA supports access protection through the Memory Protection Unit (MPU). RTDMA MPU is enabled by default. Users migrating from F28 to F29 application should either disable MPU, or configure the MPU regions as per the need.
  • Since F29 is a byte addressable system, configuration parameters like burst size, src/dest step size should be in multiples of 8 bit bytes. In case of F28 devices, these were in multiples of 16 bit words.
  • Priorities of the DMA channels is configurable in software.
  • Unlike F28 DMA, F29 RTDMA has access to all RAM regions in the device.
  • Driverlib files are renamed as rtdma.h/c. But APIs still uses the module prefix as "DMA_".
Note
Checks for users migrating F28 code to F29 :
  • Update the DMA and DMA_CH base parameters.
  • Make sure the same channel is not used in different CPU applications. If the device is configured in splitlock mode, recommended to use separate RTDMA modules in each CPU applications.
  • Update the burst size, src step size, dest step size. Note that the transfer size is in multiples of burst, hence no change is needed.
  • Configure MPU regions or disable MPU.

Driverlib API mapping

F28 Function F29 Function Comments
DMA_initController DMA_initController Additional parameter base.
DMA_setEmulationMode DMA_setEmulationMode Additional parameter base.
DMA_setPriorityMode DMA_setPriorityMode F29 allows selection between Round Robin priority mode and Software configurable priority, In F28, the selection is between Round Robin priority mode and High priority for channel 1. Also, Additional parameter base.
DMA_configMode DMA_configMode Function is compatible with F28. F29 API provides support for independently configuring the data size of write access. Refer to the API guide for more details.
DMA_configChannel DMA_configChannel Update the transfParams parameter with the correct burst size, and address step sizes.
DMA_configBurst DMA_configBurst Update the parameters size, srcStep and destStep.
DMA_configTransfer DMA_configTransfer Update the parameters srcStep and destStep.
DMA_configWrap DMA_configWrap Update the parameters srcStep and destStep.

New functions added in RTDMA driverlb :

  • DMA_setChannelPriority
  • DMA_resetPriority
  • DMA_setBurstSignalingMode
  • DMA_lockDMAConfig
  • DMA_unlockDMAConfig
  • DMA_commitDMAConfig
  • DMA_lockAllChannelConfig
  • DMA_unlockAllChannelConfig
  • DMA_commitAllChannelConfig
  • DMA_lockChannelConfig
  • DMA_unlockChannelConfig
  • DMA_commitChannelConfig
  • DMA_enableMPU
  • DMA_disableMPU
  • DMA_lockMPUConfig
  • DMA_unlockMPUConfig
  • DMA_commitMPUConfig
  • DMA_configMPURegion
  • DMA_lockAllMPURegion
  • DMA_unlockAllMPURegion
  • DMA_commitAllMPURegion
  • DMA_lockMPURegion
  • DMA_unlockMPURegion
  • DMA_commitMPURegion
  • DMA_commitAllDMASettings