4.3. CDD DMA Module

4.3.1. Acronyms and Definitions

Abbreviation/Term

Explanation

AUTOSAR

Automotive Open System Architecture

BSW

Basic Software

DET

Default Error Tracer

CDD

Complex Device Driver

DMA

Direct Memory Access

ISR

Interrupt Service Routine

INT

Interrupt

HW

Hardware

SW

Software

MCU

Micro Controller Unit

OS

Operating System

API

Application Programming Interface

4.3.2. Introduction

This document describes the functionality and configuration of the Cdd_Dma module.

Supported AUTOSAR Release

4.3.1

Supported Configuration Variants

Pre-Compile

Vendor ID

DMA_VENDOR_ID (44)

Module ID

DMA_MODULE_ID (255)

Supported Platform

AM263Px

The Cdd_Dma module initiates memory transfer without the intervention of the CPU and used in data transfer within peripheral, based on DMA channel configured.

4.3.3. Functional Overview

Cdd_Dma Driver using HW IP “EDMA”(Enhanced DMA). EDMA performs high-performance data transfer between two target endpoints, memories and peripheral devices without microcontroller support during transfer. EDMA transfer is programmed through a logical EDMA channel which allows the transfer to be optimally tailored to the requirements of the application.

The EDMA controller is based on two major principal blocks:

• EDMA third-party channel controller (EDMA_TPCC)

• EDMA third-party transfer controller (EDMA_TPTC)

Basic Working Principle

Fig. 4.24 Basic Working Principle

The TPCC is a high flexible channel controller that serves as both a user interface and an event interface for the EDMA controller. The EDMA_TPCC serves to prioritize incoming software requests or events from peripherals, and submits transfer requests (TRs) to the transfer controller.

The TPTC performs read and write transfers by EDMA ports to the target peripherals, as programmed in the Active and Pending set of the registers. The transfer controllers are responsible for data movement, and issue read/write commands to the source and destination addresses programmed for a given transfer in the EDMA_TPCC.

The Cdd_Dma module has 64 EDMA channels, which serves the purpose of driving transferring of data.

4.3.3.1. Initialization

Cdd_Dma_Init() has to be called to initialize the Cdd_Dma driver.

4.3.3.2. States

None

4.3.3.3. Assumptions

None

4.3.3.4. Limitations

Below are the IP’s that needed software workaround with EDMA because of the HW Limitations -

  1. UART : A dummy PaRAM needs to be linked to the actual TX PaRAM. This is because UART generates TX empty event after the last character is transferred and it results in an event miss error being set in EDMA (since the TX PaRAM has already been used up for the transfer). A dummy PaRAM set is linked to the actual TX PaRAM to service the extra event generated.

  2. McSpi : Above scenario also applies to McSPI. A dummy PaRAM set is linked to solve the issue.

NOTE: Both of these above limitations are taken care internally by UART and McSpi driver respectively.

4.3.3.5. Design overview

Will be updated in future release

4.3.4. Hardware Features

4.3.4.1. IP Supported Features

  • EDMA channels are supported.

  • Both memory transfer and transfer within peripheral is supported.

  • Both interrupt mode and polling mode are supported.

  • Linking of multiple params are supported.

  • Chaining of multiple channels are supported.

4.3.4.2. Not supported Features

  • QDMA is not supported.

4.3.4.3. Non compliance

4.3.4.3.1. Deviations to requirements (Requirement Traceability)

4.3.4.3.1.1. Deviation of requirements against AUTOSAR specification requirements

None

4.3.5. Source files

Static source C Files are defined below

📦AM263Px
┣ 📂build
┣ 📂mcal
┃ ┣ 📂Dma
┃ ┃ ┣ 📂include
┃ ┃ ┃ ┣ 📜Cdd_Dma.h : Contains the API’s of the Cdd_Dma driver to be used by upper layers.
┃ ┃ ┃ ┣ 📜Cdd_Dma_cslr_tpcc.h : Contains Internal functions definition and initialization of Cdd_Dma driver.
┃ ┃ ┃ ┣ 📜Cdd_Dma_cslr_tptc.h : Contains Internal functions definition and initialization of Cdd_Dma driver.
┃ ┃ ┃ ┣ 📜Cdd_Dma_edma.h : Contains Internal functions definition and initialization of Cdd_Dma driver.
┃ ┃ ┃ ┣ 📜Cdd_Dma_Irq.h : Contains ISR function declaration.
┃ ┃ ┃ ┗ 📜Cdd_Dma_Priv.h : Contains Internal functions definition and initialization of Cdd_Dma driver.
┃ ┃ ┣ 📂src
┃ ┃ ┃ ┣ 📜Cdd_Dma.c : Contains the implementation of the API’s for Cdd_Dma driver.
┃ ┃ ┃ ┣ 📜Cdd_Dma_Irq.c : Contains ISR function definitions.
┃ ┃ ┃ ┗ 📜Cdd_Dma_Priv.c : Contains Internal functions definition and initialization of Cdd_Dma driver.
┃ ┃ ┣ 📂V0
┃ ┃ ┃ ┗ 📜Cdd_Dma_dmaxbar.h : Contains DMA cross bar interrupt information.
┃ ┃ ┃ ┣ 📜Cdd_Dma_soc.c : Contains device specific a function definition, data types and definitions.
┃ ┃ ┃ ┗ 📜Cdd_Dma_trig_xbar.h : Contains DMA cross bar interrupt information.
┃ ┃ ┃ ┣ 📜Cdd_Dma_xbar.h : Contains DMA cross bar interrupt information.
┃ ┃ ┗ 📜Makefile
┃ 📂mcal_config
┃ 📂mcal_docs
┃ 📜README.txt

Plugin files are defined below in the table.

Plugin Files

Description

CDD_Dma_Cfg.h

Contains the Precompile switches, Symbolic names of the handles and xbar, HW units

CDD_Dma_Cfg.c

contains the configuration parameters

4.3.6. Module requirements

Please refer Software Product Specification document provided as part of CSP.

4.3.6.1. Memory Mapping

Memory Mapping Sections

CDD_DMA_CODE

CDD_DMA_CODE_ISR

CDD_DMA_VAR_NO_INIT

CDD_DMA_VAR

CDD_DMA_CFG

CDD_DMA_START_SEC_VAR_INIT_8 (.bss)

x

CDD_DMA_STOP_SEC_VAR_INIT_8

x

CDD_DMA_START_SEC_CONFIG_DATA (.const)

x

CDD_DMA_STOP_SEC_CONFIG_DATA

x

CDD_DMA_START_SEC_CODE (.text)

x

CDD_DMA_STOP_SEC_CODE

x

CDD_DMA_START_SEC_VAR_INIT_32 (.bss)

x

CDD_DMA_STOP_SEC_VAR_INIT_32

x

CDD_DMA_START_SEC_VAR_NO_INIT_UNSPECIFIED (.data)

x

CDD_DMA_STOP_SEC_VAR_NO_INIT_UNSPECIFIED

x

CDD_DMA_START_SEC_ISR_CODE

x

CDD_DMA_STOP_SEC_ISR_CODE

x

4.3.6.2. Scheduling

4.3.6.2.1. SchM (Optional)

Beside the OS the BSW Scheduler provides functions that module Cdd_Dma calls at begin and end of critical sections.

4.3.6.2.2. Critical Sections

There is only one kind of critical sections in this driver. Within these sections all read /modify / write accesses to internal Cdd_Dma driver data structures must be protected. Therefore, switching to tasks that also access Cdd_Dma has to be avoided and all Cdd_Dma interrupts have to be suspended. This is handled internally by Cdd_Dma Driver.

4.3.6.3. Error handling

4.3.6.3.1. Development Error Reporting (DET)

In development mode, the Cdd_Dma module reports development error through the Det_ReportError function of module DET. The errors reported to DET are described in the following table

Type of Error

Related Error code

Value (Hex)

API service called without module initialization.

CDD_DMA_E_UNINIT

0x01

API service for initialization is called when already initialized.

CDD_DMA_E_ALREADY_INITIALIZED

0x02

API parameter checking: invalid value.

CDD_DMA_E_PARAM_VALUE

0x03

API parameter checking: invalid pointer.

CDD_DMA_E_PARAM_POINTER

0x04

API service for indicating callback is already registered

CDD_DMA_E_ALREADY_REGISTERED

0x05

API service for indicating DMA handle already in use

CDD_DMA_E_ALREADY_IN_PROGRESS

0x06

4.3.6.3.2. Runtime Errors

None

4.3.7. Used resources

4.3.7.1. Interrupt Handling

Cdd_Dma driver provides ISR for transfer completion detection. The interrupt category must be configured in Cdd_Dma Driver and OS modules.

Respective ISR for each Cdd_Dma Instance in AM263Px are as follows:

Cdd_Dma Instances

ISR Routines

CDD_DMA_MSS_A

CDD_EDMA_lld_transferCompletionMasterIsrFxn()

CDD_DMA_MSS_A instance of Cdd_Dma has interrupt number as “72” in AM263Px.

4.3.8. Integration description

4.3.8.1. Dependent modules

4.3.8.1.1. MCU

The module MCU powers up the microcontroller’s peripherals at startup time and initializes the PLL as well as the internal clock domains which is connected to the Cdd_Dma unit.

The Cdd_Dma module will not take care of settings which configure the clock and PLL for channels in its init function. This must be done by the MCU module.

4.3.8.1.2. PORT

The Port driver configures the port pins used for the Cdd_Dma driver as input or output. Hence, the Port driver has to be initialized prior to the use of Cdd_Dma functions. Otherwise, Cdd_Dma driver functions will exhibit undefined behavior.

4.3.8.1.3. OS

An operating system can be used for task scheduling, interrupt handling, global suspend and restore of interrupts and creating of the Interrupt Vector Table.The Cdd_Dma module may use AUTOSAR OS to suspend and restore global interrupts.

4.3.8.1.4. DET

The module PWM depends on the DET (by default) in order to report development errors.

4.3.8.1.5. DEM

None

4.3.8.1.6. Callback Functions

None

4.3.8.1.7. Callback Notification

None

4.3.8.2. Multi-core and Resource allocator

Will be updated in the next release

4.3.9. Configuration

The Cdd_Dma can be configured as Pre-Compile variant, using EB tresos tool.

Variants

Configured Files

Pre-Compile

Cdd_Dma_Cfg.c , Cdd_Dma_Cfg.h

4.3.9.1. Parameter Description

Standard Parameters

Description

Default Value

Range

Unit/Datatype

Config Variant

Parameter used to configure the variant of the module.

Pre-Compile

Pre-Compile

ENUMERATION

CddDmaVersionInfoApi

Macro to enable or disable the version info

TRUE

TRUE

FALSE

BOOLEAN

CddDmaDeinitApi

Macro to enable or disable the DeInit Api

TRUE

TRUE

FALSE

BOOLEAN

CddDmaDevErrorDetect

Macro to enable or disable the Development error detection

TRUE

TRUE

FALSE

BOOLEAN

CddDmaIrqType

Parameter specifies the category of Interrupt Request.

CDD_DMA_ISR_VOID

CDD_DMA_ISR_VOID

CDD_DMA_ISR_CAT1

CDD_DMA_ISR_CAT2

ENUMERATION

CddDmaTransferType

Parameter denote the type of transfer either this is memory transfer or peripheral based and even in peripheral based which peripheral is using Dma is decided by this field.

CDD_DMA_TRANSFER_TYPE_MEMORY_TRANSFER

CDD_DMA_TRANSFER_TYPE_MEMORY_TRANSFER

CDD_DMA_TRANSFER_TYPE_UART_TX

CDD_DMA_TRANSFER_TYPE_UART_RX

CDD_DMA_TRANSFER_TYPE_ADC

CDD_DMA_TRANSFER_TYPE_MC_SPI

ENUMERATION

CddDmaInstance

Parameter to select the Dma instance which we want to use.

CDD_DMA_MSS_A

CDD_DMA_MSS_A

ENUMERATION

CddDmaRegionID

There are several dma regions and according to the region selected DMA resources(DMA channels and interrupts) that are assigned to the region can be used by EDMA programmer.

0

0 to 7

INTEGER

CddDmaTccNumber

Tcc field is linked to the logical channel and whenever that channel is involved in the transmission we can see the completion status for that channel based on the Tcc number.

0

0 to 63

INTEGER

CddDmaQueueNumber

Queue number correspond to the priority of the transfer.Lower the number higher the priority.

0

0 to 1

INTEGER

CddDmaEnableInterrupt

Parameter to enable or disable the interrupt mode

TRUE

TRUE

FALSE

BOOLEAN

CddDmaTransferModeSelect

In Cdd_Dma we are supporting multiple transfer mode like linking (used in case linking params) chaining(used in chaining channels)and nomal mode.

CDD_DMA_TRANSFER_MODE_NORMAL

CDD_DMA_TRANSFER_MODE_NORMAL

CDD_DMA_TRANSFER_MODE_LINKING

CDD_DMA_TRANSFER_MODE_CHAINING

ENUMERATION

CddDmaChannel

In a particular handle we have channel group and within this we have channel number(logical channel) we can assign channel number which will be linked to the handle.In case of chaining multiple channels can be configured.

0

0 to 63

INTEGER

CddDmaParamNumber

For a particular channel group we can have multiple params so param number is assigned at channel level and each param has dedicated paramSet which contains transfer parameters.

0

0 to 255

INTEGER

CddDmaDmaChannelModule

The DMA channel selected for module

CDD_DMA_TRIG_XBAR_EDMA_MODULE_0

CDD_DMA_TRIG_XBAR_EDMA_MODULE_0

CDD_DMA_TRIG_XBAR_EDMA_MODULE_1

CDD_DMA_TRIG_XBAR_EDMA_MODULE_2

CDD_DMA_TRIG_XBAR_EDMA_MODULE_3

CDD_DMA_TRIG_XBAR_EDMA_MODULE_4

CDD_DMA_TRIG_XBAR_EDMA_MODULE_5

CDD_DMA_TRIG_XBAR_EDMA_MODULE_6

CDD_DMA_TRIG_XBAR_EDMA_MODULE_7

CDD_DMA_TRIG_XBAR_EDMA_MODULE_8

CDD_DMA_TRIG_XBAR_EDMA_MODULE_9

CDD_DMA_TRIG_XBAR_EDMA_MODULE_10

CDD_DMA_TRIG_XBAR_EDMA_MODULE_11

CDD_DMA_TRIG_XBAR_EDMA_MODULE_12

CDD_DMA_TRIG_XBAR_EDMA_MODULE_13

CDD_DMA_TRIG_XBAR_EDMA_MODULE_14

CDD_DMA_TRIG_XBAR_EDMA_MODULE_15

CDD_DMA_TRIG_XBAR_EDMA_MODULE_16

CDD_DMA_TRIG_XBAR_EDMA_MODULE_17

CDD_DMA_TRIG_XBAR_EDMA_MODULE_18

CDD_DMA_TRIG_XBAR_EDMA_MODULE_19

CDD_DMA_TRIG_XBAR_EDMA_MODULE_20

CDD_DMA_TRIG_XBAR_EDMA_MODULE_21

CDD_DMA_TRIG_XBAR_EDMA_MODULE_22

CDD_DMA_TRIG_XBAR_EDMA_MODULE_23

CDD_DMA_TRIG_XBAR_EDMA_MODULE_24

CDD_DMA_TRIG_XBAR_EDMA_MODULE_25

CDD_DMA_TRIG_XBAR_EDMA_MODULE_26

CDD_DMA_TRIG_XBAR_EDMA_MODULE_27

CDD_DMA_TRIG_XBAR_EDMA_MODULE_28

CDD_DMA_TRIG_XBAR_EDMA_MODULE_29

CDD_DMA_TRIG_XBAR_EDMA_MODULE_30

CDD_DMA_TRIG_XBAR_EDMA_MODULE_31

CDD_DMA_TRIG_XBAR_EDMA_MODULE_32

CDD_DMA_TRIG_XBAR_EDMA_MODULE_33

CDD_DMA_TRIG_XBAR_EDMA_MODULE_34

CDD_DMA_TRIG_XBAR_EDMA_MODULE_35

CDD_DMA_TRIG_XBAR_EDMA_MODULE_36

CDD_DMA_TRIG_XBAR_EDMA_MODULE_37

CDD_DMA_TRIG_XBAR_EDMA_MODULE_38

CDD_DMA_TRIG_XBAR_EDMA_MODULE_39

CDD_DMA_TRIG_XBAR_EDMA_MODULE_40

CDD_DMA_TRIG_XBAR_EDMA_MODULE_41

CDD_DMA_TRIG_XBAR_EDMA_MODULE_42

CDD_DMA_TRIG_XBAR_EDMA_MODULE_43

CDD_DMA_TRIG_XBAR_EDMA_MODULE_44

CDD_DMA_TRIG_XBAR_EDMA_MODULE_45

CDD_DMA_TRIG_XBAR_EDMA_MODULE_46

CDD_DMA_TRIG_XBAR_EDMA_MODULE_47

CDD_DMA_TRIG_XBAR_EDMA_MODULE_48

CDD_DMA_TRIG_XBAR_EDMA_MODULE_49

CDD_DMA_TRIG_XBAR_EDMA_MODULE_50

CDD_DMA_TRIG_XBAR_EDMA_MODULE_51

CDD_DMA_TRIG_XBAR_EDMA_MODULE_52

CDD_DMA_TRIG_XBAR_EDMA_MODULE_53

CDD_DMA_TRIG_XBAR_EDMA_MODULE_54

CDD_DMA_TRIG_XBAR_EDMA_MODULE_55

CDD_DMA_TRIG_XBAR_EDMA_MODULE_56

CDD_DMA_TRIG_XBAR_EDMA_MODULE_57

CDD_DMA_TRIG_XBAR_EDMA_MODULE_58

CDD_DMA_TRIG_XBAR_EDMA_MODULE_59

CDD_DMA_TRIG_XBAR_EDMA_MODULE_60

CDD_DMA_TRIG_XBAR_EDMA_MODULE_61

CDD_DMA_TRIG_XBAR_EDMA_MODULE_62

CDD_DMA_TRIG_XBAR_EDMA_MODULE_63

ENUMERATION

CddDmaChannelTriggerSource

Source to Trigger DMA Channel

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_0

CDD_DMA_TRIG_XBAR_LIN0_RXDMA

CDD_DMA_TRIG_XBAR_LIN0_TXDMA

CDD_DMA_TRIG_XBAR_LIN1_RXDMA

CDD_DMA_TRIG_XBAR_LIN1_TXDMA

CDD_DMA_TRIG_XBAR_LIN2_RXDMA

CDD_DMA_TRIG_XBAR_LIN2_TXDMA

CDD_DMA_TRIG_XBAR_LIN3_RXDMA

CDD_DMA_TRIG_XBAR_LIN3_TXDMA

CDD_DMA_TRIG_XBAR_LIN4_RXDMA

CDD_DMA_TRIG_XBAR_LIN4_TXDMA

CDD_DMA_TRIG_XBAR_I2C0_TX

CDD_DMA_TRIG_XBAR_I2C0_RX

CDD_DMA_TRIG_XBAR_I2C1_TX

CDD_DMA_TRIG_XBAR_I2C1_RX

CDD_DMA_TRIG_XBAR_I2C2_TX

CDD_DMA_TRIG_XBAR_I2C2_RX

CDD_DMA_TRIG_XBAR_I2C3_TX

CDD_DMA_TRIG_XBAR_I2C3_RX

CDD_DMA_TRIG_XBAR_SPI0_DMA_READ_REQ0

CDD_DMA_TRIG_XBAR_SPI0_DMA_READ_REQ1

CDD_DMA_TRIG_XBAR_SPI0_DMA_READ_REQ2

CDD_DMA_TRIG_XBAR_SPI0_DMA_READ_REQ3

CDD_DMA_TRIG_XBAR_SPI0_DMA_WRITE_REQ0

CDD_DMA_TRIG_XBAR_SPI0_DMA_WRITE_REQ1

CDD_DMA_TRIG_XBAR_SPI0_DMA_WRITE_REQ2

CDD_DMA_TRIG_XBAR_SPI0_DMA_WRITE_REQ3

CDD_DMA_TRIG_XBAR_SPI1_DMA_READ_REQ0

CDD_DMA_TRIG_XBAR_SPI1_DMA_READ_REQ1

CDD_DMA_TRIG_XBAR_SPI1_DMA_READ_REQ2

CDD_DMA_TRIG_XBAR_SPI1_DMA_READ_REQ3

CDD_DMA_TRIG_XBAR_SPI1_DMA_WRITE_REQ0

CDD_DMA_TRIG_XBAR_SPI1_DMA_WRITE_REQ1

CDD_DMA_TRIG_XBAR_SPI1_DMA_WRITE_REQ2

CDD_DMA_TRIG_XBAR_SPI1_DMA_WRITE_REQ3

CDD_DMA_TRIG_XBAR_SPI2_DMA_READ_REQ0

CDD_DMA_TRIG_XBAR_SPI2_DMA_READ_REQ1

CDD_DMA_TRIG_XBAR_SPI2_DMA_READ_REQ2

CDD_DMA_TRIG_XBAR_SPI2_DMA_READ_REQ3

CDD_DMA_TRIG_XBAR_SPI2_DMA_WRITE_REQ0

CDD_DMA_TRIG_XBAR_SPI2_DMA_WRITE_REQ1

CDD_DMA_TRIG_XBAR_SPI2_DMA_WRITE_REQ2

CDD_DMA_TRIG_XBAR_SPI2_DMA_WRITE_REQ3

CDD_DMA_TRIG_XBAR_SPI3_DMA_READ_REQ0

CDD_DMA_TRIG_XBAR_SPI3_DMA_READ_REQ1

CDD_DMA_TRIG_XBAR_SPI3_DMA_READ_REQ2

CDD_DMA_TRIG_XBAR_SPI3_DMA_READ_REQ3

CDD_DMA_TRIG_XBAR_SPI3_DMA_WRITE_REQ0

CDD_DMA_TRIG_XBAR_SPI3_DMA_WRITE_REQ1

CDD_DMA_TRIG_XBAR_SPI3_DMA_WRITE_REQ2

CDD_DMA_TRIG_XBAR_SPI3_DMA_WRITE_REQ3

CDD_DMA_TRIG_XBAR_SPI4_DMA_READ_REQ0

CDD_DMA_TRIG_XBAR_SPI4_DMA_READ_REQ1

CDD_DMA_TRIG_XBAR_SPI4_DMA_READ_REQ2

CDD_DMA_TRIG_XBAR_SPI4_DMA_READ_REQ3

CDD_DMA_TRIG_XBAR_SPI4_DMA_WRITE_REQ0

CDD_DMA_TRIG_XBAR_SPI4_DMA_WRITE_REQ1

CDD_DMA_TRIG_XBAR_SPI4_DMA_WRITE_REQ2

CDD_DMA_TRIG_XBAR_SPI4_DMA_WRITE_REQ3

CDD_DMA_TRIG_XBAR_RTI0_DMA_0

CDD_DMA_TRIG_XBAR_RTI0_DMA_1

CDD_DMA_TRIG_XBAR_RTI0_DMA_2

CDD_DMA_TRIG_XBAR_RTI0_DMA_3

CDD_DMA_TRIG_XBAR_RTI1_DMA_0

CDD_DMA_TRIG_XBAR_RTI1_DMA_1

CDD_DMA_TRIG_XBAR_RTI1_DMA_2

CDD_DMA_TRIG_XBAR_RTI1_DMA_3

CDD_DMA_TRIG_XBAR_RTI2_DMA_0

CDD_DMA_TRIG_XBAR_RTI2_DMA_1

CDD_DMA_TRIG_XBAR_RTI2_DMA_2

CDD_DMA_TRIG_XBAR_RTI2_DMA_3

CDD_DMA_TRIG_XBAR_RTI3_DMA_0

CDD_DMA_TRIG_XBAR_RTI3_DMA_1

CDD_DMA_TRIG_XBAR_RTI3_DMA_2

CDD_DMA_TRIG_XBAR_RTI3_DMA_3

CDD_DMA_TRIG_XBAR_MCANSS0_TX_DMA_0

CDD_DMA_TRIG_XBAR_MCANSS0_TX_DMA_1

CDD_DMA_TRIG_XBAR_MCANSS0_TX_DMA_2

CDD_DMA_TRIG_XBAR_MCANSS0_TX_DMA_3

CDD_DMA_TRIG_XBAR_MCANSS1_TX_DMA_0

CDD_DMA_TRIG_XBAR_MCANSS1_TX_DMA_1

CDD_DMA_TRIG_XBAR_MCANSS1_TX_DMA_2

CDD_DMA_TRIG_XBAR_MCANSS1_TX_DMA_3

CDD_DMA_TRIG_XBAR_MCANSS2_TX_DMA_0

CDD_DMA_TRIG_XBAR_MCANSS2_TX_DMA_1

CDD_DMA_TRIG_XBAR_MCANSS2_TX_DMA_2

CDD_DMA_TRIG_XBAR_MCANSS2_TX_DMA_3

CDD_DMA_TRIG_XBAR_MCANSS3_TX_DMA_0

CDD_DMA_TRIG_XBAR_MCANSS3_TX_DMA_1

CDD_DMA_TRIG_XBAR_MCANSS3_TX_DMA_2

CDD_DMA_TRIG_XBAR_MCANSS3_TX_DMA_3

CDD_DMA_TRIG_XBAR_USART0_DMA_0

CDD_DMA_TRIG_XBAR_USART0_DMA_1

CDD_DMA_TRIG_XBAR_USART1_DMA_0

CDD_DMA_TRIG_XBAR_USART1_DMA_1

CDD_DMA_TRIG_XBAR_USART2_DMA_0

CDD_DMA_TRIG_XBAR_USART2_DMA_1

CDD_DMA_TRIG_XBAR_USART3_DMA_0

CDD_DMA_TRIG_XBAR_USART3_DMA_1

CDD_DMA_TRIG_XBAR_USART4_DMA_0

CDD_DMA_TRIG_XBAR_USART4_DMA_1

CDD_DMA_TRIG_XBAR_USART5_DMA_0

CDD_DMA_TRIG_XBAR_USART5_DMA_1

CDD_DMA_TRIG_XBAR_MCRC_DMA_EVENT_0

CDD_DMA_TRIG_XBAR_MCRC_DMA_EVENT_1

CDD_DMA_TRIG_XBAR_MCRC_DMA_EVENT_2

CDD_DMA_TRIG_XBAR_MCRC_DMA_EVENT_3

CDD_DMA_TRIG_XBAR_QSPI_INTR

CDD_DMA_TRIG_XBAR_GPIO_INT_XBAR_OUT_0

CDD_DMA_TRIG_XBAR_GPIO_INT_XBAR_OUT_1

CDD_DMA_TRIG_XBAR_GPIO_INT_XBAR_OUT_2

CDD_DMA_TRIG_XBAR_GPIO_INT_XBAR_OUT_3

CDD_DMA_TRIG_XBAR_SOC_TIMESYNC_XBAR1_OUT_0

CDD_DMA_TRIG_XBAR_SOC_TIMESYNC_XBAR1_OUT_1

CDD_DMA_TRIG_XBAR_SOC_TIMESYNC_XBAR0_OUT_0

CDD_DMA_TRIG_XBAR_SOC_TIMESYNC_XBAR0_OUT_1

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_0

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_1

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_2

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_3

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_4

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_5

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_6

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_7

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_8

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_9

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_10

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_11

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_12

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_13

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_14

CDD_DMA_TRIG_XBAR_DMA_XBAR_OUT_15

CDD_DMA_TRIG_XBAR_MMC_DMA_RD

CDD_DMA_TRIG_XBAR_MMC_DMA_WR

CDD_DMA_TRIG_XBAR_DTHE_SHA_DMA_REQ0

CDD_DMA_TRIG_XBAR_DTHE_SHA_DMA_REQ1

CDD_DMA_TRIG_XBAR_DTHE_SHA_DMA_REQ2

CDD_DMA_TRIG_XBAR_DTHE_SHA_DMA_REQ3

CDD_DMA_TRIG_XBAR_DTHE_SHA_DMA_REQ4

CDD_DMA_TRIG_XBAR_DTHE_SHA_DMA_REQ5

CDD_DMA_TRIG_XBAR_DTHE_AES_DMA_REQ0

CDD_DMA_TRIG_XBAR_DTHE_AES_DMA_REQ1

CDD_DMA_TRIG_XBAR_DTHE_AES_DMA_REQ2

CDD_DMA_TRIG_XBAR_DTHE_AES_DMA_REQ3

CDD_DMA_TRIG_XBAR_DTHE_AES_DMA_REQ4

CDD_DMA_TRIG_XBAR_DTHE_AES_DMA_REQ5

CDD_DMA_TRIG_XBAR_DTHE_AES_DMA_REQ6

CDD_DMA_TRIG_XBAR_DTHE_AES_DMA_REQ7

CDD_DMA_TRIG_XBAR_MCANSS0_FE_0

CDD_DMA_TRIG_XBAR_MCANSS0_FE_1

CDD_DMA_TRIG_XBAR_MCANSS0_FE_2

CDD_DMA_TRIG_XBAR_MCANSS0_FE_3

CDD_DMA_TRIG_XBAR_MCANSS0_FE_4

CDD_DMA_TRIG_XBAR_MCANSS0_FE_5

CDD_DMA_TRIG_XBAR_MCANSS0_FE_6

CDD_DMA_TRIG_XBAR_MCANSS1_FE_0

CDD_DMA_TRIG_XBAR_MCANSS1_FE_1

CDD_DMA_TRIG_XBAR_MCANSS1_FE_2

CDD_DMA_TRIG_XBAR_MCANSS1_FE_3

CDD_DMA_TRIG_XBAR_MCANSS1_FE_4

CDD_DMA_TRIG_XBAR_MCANSS1_FE_5

CDD_DMA_TRIG_XBAR_MCANSS1_FE_6

CDD_DMA_TRIG_XBAR_MCANSS2_FE_0

CDD_DMA_TRIG_XBAR_MCANSS2_FE_1

CDD_DMA_TRIG_XBAR_MCANSS2_FE_2

CDD_DMA_TRIG_XBAR_MCANSS2_FE_3

CDD_DMA_TRIG_XBAR_MCANSS2_FE_4

CDD_DMA_TRIG_XBAR_MCANSS2_FE_5

CDD_DMA_TRIG_XBAR_MCANSS2_FE_6

CDD_DMA_TRIG_XBAR_MCANSS3_FE_0

CDD_DMA_TRIG_XBAR_MCANSS3_FE_1

CDD_DMA_TRIG_XBAR_MCANSS3_FE_2

CDD_DMA_TRIG_XBAR_MCANSS3_FE_3

CDD_DMA_TRIG_XBAR_MCANSS3_FE_4

CDD_DMA_TRIG_XBAR_MCANSS3_FE_5

CDD_DMA_TRIG_XBAR_MCANSS3_FE_6

CDD_DMA_TRIG_XBAR_GPMC_SDMAREQ

ENUMERATION

CddDmaDmaChannelXbar

DMA Channel Cross bar source

CDD_DMA_XBAR_DMA_TRIG_XBAR_0

CDD_DMA_XBAR_DMA_TRIG_XBAR_0

CDD_DMA_XBAR_DMA_TRIG_XBAR_1

CDD_DMA_XBAR_DMA_TRIG_XBAR_2

CDD_DMA_XBAR_DMA_TRIG_XBAR_3

CDD_DMA_XBAR_DMA_TRIG_XBAR_4

CDD_DMA_XBAR_DMA_TRIG_XBAR_5

CDD_DMA_XBAR_DMA_TRIG_XBAR_6

CDD_DMA_XBAR_DMA_TRIG_XBAR_7

CDD_DMA_XBAR_DMA_TRIG_XBAR_8

CDD_DMA_XBAR_DMA_TRIG_XBAR_9

CDD_DMA_XBAR_DMA_TRIG_XBAR_10

CDD_DMA_XBAR_DMA_TRIG_XBAR_11

CDD_DMA_XBAR_DMA_TRIG_XBAR_12

CDD_DMA_XBAR_DMA_TRIG_XBAR_13

CDD_DMA_XBAR_DMA_TRIG_XBAR_14

CDD_DMA_XBAR_DMA_TRIG_XBAR_15

ENUMERATION

CddDmaDmaChannelXbarMap

DMA Channel Cross bar trigger mapping to interrupt trigger source from external modules

CDD_DMA_XBAR_ADC0_INT1

CDD_DMA_XBAR_EPWM0_SOCA

CDD_DMA_XBAR_EPWM1_SOCA

CDD_DMA_XBAR_EPWM2_SOCA

CDD_DMA_XBAR_EPWM3_SOCA

CDD_DMA_XBAR_EPWM4_SOCA

CDD_DMA_XBAR_EPWM5_SOCA

CDD_DMA_XBAR_EPWM6_SOCA

CDD_DMA_XBAR_EPWM7_SOCA

CDD_DMA_XBAR_EPWM8_SOCA

CDD_DMA_XBAR_EPWM9_SOCA

CDD_DMA_XBAR_EPWM10_SOCA

CDD_DMA_XBAR_EPWM11_SOCA

CDD_DMA_XBAR_EPWM12_SOCA

CDD_DMA_XBAR_EPWM13_SOCA

CDD_DMA_XBAR_EPWM14_SOCA

CDD_DMA_XBAR_EPWM15_SOCA

CDD_DMA_XBAR_EPWM16_SOCA

CDD_DMA_XBAR_EPWM17_SOCA

CDD_DMA_XBAR_EPWM18_SOCA

CDD_DMA_XBAR_EPWM19_SOCA

CDD_DMA_XBAR_EPWM20_SOCA

CDD_DMA_XBAR_EPWM21_SOCA

CDD_DMA_XBAR_EPWM22_SOCA

CDD_DMA_XBAR_EPWM23_SOCA

CDD_DMA_XBAR_EPWM24_SOCA

CDD_DMA_XBAR_EPWM25_SOCA

CDD_DMA_XBAR_EPWM26_SOCA

CDD_DMA_XBAR_EPWM27_SOCA

CDD_DMA_XBAR_EPWM28_SOCA

CDD_DMA_XBAR_EPWM29_SOCA

CDD_DMA_XBAR_EPWM30_SOCA

CDD_DMA_XBAR_EPWM31_SOCA

CDD_DMA_XBAR_EPWM0_SOCB

CDD_DMA_XBAR_EPWM1_SOCB

CDD_DMA_XBAR_EPWM2_SOCB

CDD_DMA_XBAR_EPWM3_SOCB

CDD_DMA_XBAR_EPWM4_SOCB

CDD_DMA_XBAR_EPWM5_SOCB

CDD_DMA_XBAR_EPWM6_SOCB

CDD_DMA_XBAR_EPWM7_SOCB

CDD_DMA_XBAR_EPWM8_SOCB

CDD_DMA_XBAR_EPWM9_SOCB

CDD_DMA_XBAR_EPWM10_SOCB

CDD_DMA_XBAR_EPWM11_SOCB

CDD_DMA_XBAR_EPWM12_SOCB

CDD_DMA_XBAR_EPWM13_SOCB

CDD_DMA_XBAR_EPWM14_SOCB

CDD_DMA_XBAR_EPWM15_SOCB

CDD_DMA_XBAR_EPWM16_SOCB

CDD_DMA_XBAR_EPWM17_SOCB

CDD_DMA_XBAR_EPWM18_SOCB

CDD_DMA_XBAR_EPWM19_SOCB

CDD_DMA_XBAR_EPWM20_SOCB

CDD_DMA_XBAR_EPWM21_SOCB

CDD_DMA_XBAR_EPWM22_SOCB

CDD_DMA_XBAR_EPWM23_SOCB

CDD_DMA_XBAR_EPWM24_SOCB

CDD_DMA_XBAR_EPWM25_SOCB

CDD_DMA_XBAR_EPWM26_SOCB

CDD_DMA_XBAR_EPWM27_SOCB

CDD_DMA_XBAR_EPWM28_SOCB

CDD_DMA_XBAR_EPWM29_SOCB

CDD_DMA_XBAR_EPWM30_SOCB

CDD_DMA_XBAR_EPWM31_SOCB

CDD_DMA_XBAR_ADC0_INT1

CDD_DMA_XBAR_ADC0_INT2

CDD_DMA_XBAR_ADC0_INT3

CDD_DMA_XBAR_ADC0_INT4

CDD_DMA_XBAR_ADC0_EVTINT

CDD_DMA_XBAR_ADC1_INT1

CDD_DMA_XBAR_ADC1_INT2

CDD_DMA_XBAR_ADC1_INT3

CDD_DMA_XBAR_ADC1_INT4

CDD_DMA_XBAR_ADC1_EVTINT

CDD_DMA_XBAR_ADC2_INT1

CDD_DMA_XBAR_ADC2_INT2

CDD_DMA_XBAR_ADC2_INT3

CDD_DMA_XBAR_ADC2_INT4

CDD_DMA_XBAR_ADC2_EVTINT

CDD_DMA_XBAR_ADC3_INT1

CDD_DMA_XBAR_ADC3_INT2

CDD_DMA_XBAR_ADC3_INT3

CDD_DMA_XBAR_ADC3_INT4

CDD_DMA_XBAR_ADC3_EVTINT

CDD_DMA_XBAR_ADC4_INT1

CDD_DMA_XBAR_ADC4_INT2

CDD_DMA_XBAR_ADC4_INT3

CDD_DMA_XBAR_ADC4_INT4

CDD_DMA_XBAR_ADC4_EVTINT

CDD_DMA_XBAR_FSI0_RX_DMA_EVT

CDD_DMA_XBAR_FSI0_DMA_TRIG1

CDD_DMA_XBAR_FSI0_DMA_TRIG2

CDD_DMA_XBAR_FSI1_RX_DMA_EVT

CDD_DMA_XBAR_FSI1_DMA_TRIG1

CDD_DMA_XBAR_FSI1_DMA_TRIG2

CDD_DMA_XBAR_FSI2_RX_DMA_EVT

CDD_DMA_XBAR_FSI2_DMA_TRIG1

CDD_DMA_XBAR_FSI2_DMA_TRIG2

CDD_DMA_XBAR_FSI3_RX_DMA_EVT

CDD_DMA_XBAR_FSI3_DMA_TRIG1

CDD_DMA_XBAR_FSI3_DMA_TRIG2

CDD_DMA_XBAR_FSI0_TX_DMA_EVT

CDD_DMA_XBAR_FSI1_TX_DMA_EVT

CDD_DMA_XBAR_FSI2_TX_DMA_EVT

CDD_DMA_XBAR_FSI3_TX_DMA_EVT

CDD_DMA_XBAR_SD0_FILT0_DRINT

CDD_DMA_XBAR_SD0_FILT1_DRINT

CDD_DMA_XBAR_SD0_FILT2_DRINT

CDD_DMA_XBAR_SD0_FILT3_DRINT

CDD_DMA_XBAR_SD1_FILT0_DRINT

CDD_DMA_XBAR_SD1_FILT1_DRINT

CDD_DMA_XBAR_SD1_FILT2_DRINT

CDD_DMA_XBAR_SD1_FILT3_DRINT

CDD_DMA_XBAR_ECAP0_DMA_INT

CDD_DMA_XBAR_ECAP1_DMA_INT

CDD_DMA_XBAR_ECAP2_DMA_INT

CDD_DMA_XBAR_ECAP3_DMA_INT

CDD_DMA_XBAR_ECAP4_DMA_INT

CDD_DMA_XBAR_ECAP5_DMA_INT

CDD_DMA_XBAR_ECAP6_DMA_INT

CDD_DMA_XBAR_ECAP7_DMA_INT

CDD_DMA_XBAR_ECAP8_DMA_INT

CDD_DMA_XBAR_ECAP9_DMA_INT

ENUMERATION

Below parameters are applicable for AM263Px device only

  1. Parameter “CddDmaDmaChannelModule” represents the Cdd_Dma channel of EDMA module i.e., from 0 to 63.

  2. Parameter “CddDmaChannelTriggerSource” represents the Cdd_Dma trigger source from external module (such as UART, SPI , Cross Bar etc)

  3. Parameter “CddDmaDmaChannelXbar” represents the cross bar triggers that are represented in Parameter “CddDmaChannelTriggerSource” ( from “DMA_TRIG_XBAR_DMA_XBAR_OUT_0” to “DMA_TRIG_XBAR_DMA_XBAR_OUT_15”).

  4. Parameter “CddDmaDmaChannelXbarMap” represents the trigger source, where cross bar triggers are mapped to particular interrupt trigger source from external modules (such as ADC, EPWM, FSI etc.., )

4.3.9.2. Symbolic Names deviations

None

4.3.9.3. Configuration rules and constraints to enable plausibility checks

None

4.3.10. Examples

4.3.10.1. Overview

Will be updated in the next release

4.3.10.2. Hardware Software Setup and Tools

None

4.3.10.3. Steps to build and run example

  1. Cdd_Dma example applications demonstrates the MCAL CDD_DMA driver features, which is referred from folder <MCAL_ROOT>/examples/Dma.

  2. There are 4 example applications provided to verify all the features of the module.

  3. These applications can be built from the build folder by giving :

    “gmake –s dma_pollingmode_app PLATFORM=am263px” for polling mode example

    “gmake –s dma_interruptmode_app PLATFORM=am263px” for interrupt mode example

    “gmake –s dma_linkingmode_app PLATFORM=am263px” for linking mode example

    “gmake –s dma_chainingmode_app PLATFORM=am263px” for chaining mode example

    • In case of linking mode example multiple params are configured within the channel and once the execution gets completed with first paramSet then automatically second paramSet data will be loaded.

    • In case of chaining mode example multiple channels are chained together so in this case once the trigger for first channel happen for transmission it will internally trigger for second channel as well.So in this way with less number of trigger transmission happens.

  4. Once the build is completed we get a binary file,which is loaded in our controller and executed.

4.3.10.4. Example Logs

Will be updated in next release

4.3.10.5. File Structure

📦AM263Px
┣ 📂build
┣ 📂mcal
┃ ┣ 📂examples
┃ ┃ ┣ 📂Dma
┃ ┃ ┃ ┣ 📂Dma_ChainingMode
┃ ┃ ┃ ┃ ┣ 📂soc
┃ ┃ ┃ ┃ ┣ 📜DmaChainingModeApp.c : Contains DMA test example.
┃ ┃ ┃ ┃ ┣ 📜DmaChainingModeApp.h : Contains DMA test example header.
┃ ┃ ┃ ┃ ┣ 📜Makefile
┃ ┃ ┃ ┣ 📂Dma_InterruptMode
┃ ┃ ┃ ┃ ┣ 📂soc
┃ ┃ ┃ ┃ ┣ 📜DmaInterruptModeApp.c : Contains DMA test example.
┃ ┃ ┃ ┃ ┣ 📜DmaInterruptModeApp.h : Contains DMA test example header.
┃ ┃ ┃ ┃ ┣ 📜Makefile
┃ ┃ ┃ ┣ 📂Dma_LinkingMode
┃ ┃ ┃ ┃ ┣ 📂soc
┃ ┃ ┃ ┃ ┣ 📜DmaLinkingModeApp.c : Contains DMA test example.
┃ ┃ ┃ ┃ ┣ 📜DmaLinkingModeApp.h : Contains DMA test example header.
┃ ┃ ┃ ┃ ┣ 📜Makefile
┃ ┃ ┃ ┣ 📂Dma_PollingMode
┃ ┃ ┃ ┃ ┣ 📂soc
┃ ┃ ┃ ┃ ┣ 📜DmaPollingModeApp.c : Contains DMA test example.
┃ ┃ ┃ ┃ ┣ 📜DmaPollingModeApp.h : Contains DMA test example header.
┃ ┃ ┃ ┃ ┣ 📜Makefile
┃ ┣ 📂examples_config
┃ ┃ ┣ 📂Dma_Demo_Cfg
┃ ┃ ┃ ┣ 📂soc
┃ ┃ ┃ ┃ ┣ 📂am263px
┃ ┃ ┃ ┃ ┃ ┣ 📂r5f0_0
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂include
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Cdd_Dma_Cfg.h : Contains the Precompile switches, Symbolic names.
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂src
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Cdd_Dma_Cfg.c : Contains all Pre-Compile Configured parameters
┃ 📂mcal_config
┃ 📂mcal_docs
┣ 📜README.txt

4.3.11. FAQ’s

None

4.3.12. Test Report

Please refer AM26x CDD DMA Driver Test Case Report as part of CSP provided in the release package.

4.3.13. References

Technical Reference Manual