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.

pdk_am335x_1_0_2: UART DMA driver is not available

The documentation for the UART driver implies that you can use the following settings to enable DMA:

var Uart              = xdc.loadPackage('ti.drv.uart');
Uart.Settings.socType = "am335x";
Uart.Settings.useDma = "true";

However, the linker complains:

"C:\\ti\\ccsv6\\utils\\bin\\gmake" -k -j 8 all 
'Building file: ../er301.cfg'
'Invoking: XDCtools'
"C:/ti/xdctools_3_32_00_06_core/xs" --xdcpath="C:/ti/bios_6_45_01_29/packages;C:/ti/edma3_lld_02_12_01_22/packages;C:/ti/uia_2_00_03_43/packages;C:/ti/pdk_am335x_1_0_2/packages;C:/Users/clarkson/ccsv6.1/rtsc;C:/ti/ccsv6/ccs_base;" xdc.tools.configuro -o configPkg -t gnu.targets.arm.A8F -p od.er301.rev1 -r release -c "C:/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_8-2014q3" "../er301.cfg"
configuring er301.xa8fg from package/cfg/er301_pa8fg.cfg ...
generating custom ti.sysbios library makefile ... 
js: "C:/ti/pdk_am335x_1_0_2/packages/ti/drv/uart/package.xs", line 102: Error: 	Library not found: C:/ti/pdk_am335x_1_0_2/packages/ti/drv/uart/./lib/am335x/armv7/ti.drv.uart.am335x.dma.aa8fg

Specifically its seems that the DMA-enabled version of the UART driver library (ti.drv.uart.am335x.dma.aa8fg) is not in the pdk distribution.  It is also not mentioned in any of the makefiles.

Please advise.

  • I will bring this to the attention of the industrial team.
  • Brian,

    Are you building C:\ti\pdk_am335x_1_0_2\packages\MyExampleProjects\UART_BasicExample_Dma_evmAM335x_armTestProject ?

    I was able to build and run this example without issue. The cfg file in this project loads:

    /* Load the EDMA package */

    var drv = xdc.loadPackage ("ti.sdo.edma3.drv");
    var rm = xdc.loadPackage ("ti.sdo.edma3.rm");

    Lali

  • The same problem exists with UART_BasicExample_Dma_evmAM335x_armTestProject.  If you compile and use the example as-is without any changes, it does NOT use the DMA version of the UART drivers.  If you do not believe me check how it uses UART_soc.c and take note of the function table that is used in the UART_config structure, it uses UART_FxnTable_v1!  To use the DMA-enabled handlers, the projecdt must use UART_dma_soc.c instead and you need to specify the correct library to link against by editing the cfg file and adding

    UartPackage.Settings.useDma = true;

    However, as I stated before this tries to link a library that does not exist and is not mentioned anywhere in the PDK makefiles.

    Why am I more familiar with the example projects than TI support? :-/

  • Hello.  May I please have an answer on the availability of UART DMA on the AM335x?  

  • Brian,
    You are correct that the library is missing from the path: pdk_am335x_1_0_2\packages\ti\drv\uart\lib\am335x\armv7\ti.drv.uart.am335x.dma.aa8fg

    You may notice in other platform releases such as AM57x, the library is present in: pdk_am57xx_1_0_2\packages\ti\drv\uart\lib\am572x\armv7\ti.drv.uart.am572x.dma.aa15fg

    I have opened a bug report with the development team on this . Thank you very much for reporting this.

    Lali