]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - processor-sdk/pdk.git/commitdiff
PRSDK-7292:AM335x McSPI example
authorFrank Livingston <frank-livingston@ti.com>
Thu, 5 Dec 2019 19:56:09 +0000 (13:56 -0600)
committerMahesh Radhakrishnan <a0875154@ti.com>
Fri, 13 Dec 2019 16:49:37 +0000 (10:49 -0600)
Add McSPI Slave Mode example with DMA support for AM335x platform, BeagleBone Black.

packages/ti/drv/spi/example/mcspi_slavemode/am335x/armv7/bios/MCSPI_SlaveMode_MasterExample_dma_bbbAM335x_armExampleProject.txt [new file with mode: 0644]
packages/ti/drv/spi/example/mcspi_slavemode/am335x/armv7/bios/MCSPI_SlaveMode_SlaveExample_dma_bbbAM335x_armExampleProject.txt [new file with mode: 0644]
packages/ti/drv/spi/example/mcspi_slavemode/am335x/armv7/bios/spi_arm_dma_bbbAM335x_slavemode.cfg [new file with mode: 0644]

diff --git a/packages/ti/drv/spi/example/mcspi_slavemode/am335x/armv7/bios/MCSPI_SlaveMode_MasterExample_dma_bbbAM335x_armExampleProject.txt b/packages/ti/drv/spi/example/mcspi_slavemode/am335x/armv7/bios/MCSPI_SlaveMode_MasterExample_dma_bbbAM335x_armExampleProject.txt
new file mode 100644 (file)
index 0000000..6927ddc
--- /dev/null
@@ -0,0 +1,9 @@
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/soc/am335x/sample_am335x_arm_int_reg.c"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/soc/am335x/sample_am335x_cfg.c"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/soc/am335x/sample_arm_cs.c"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/soc/am335x/sample_arm_init.c"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/example/mcspi_slavemode/src/main_mcspi_slave_mode.c"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/example/mcspi_slavemode/src/SPI_log.c"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/example/mcspi_slavemode/am335x/armv7/bios/spi_arm_dma_bbbAM335x_slavemode.cfg"
+-ccs.setCompilerOptions "-c -mcpu=cortex-a8 -mtune=cortex-a8 -march=armv7-a -marm -mfloat-abi=hard -DSOC_AM335x -DbbbAM335x -DMCSPI_MASTER_TASK -DSPI_DMA_ENABLE -DMCSPI_MULT_CHANNEL -g -gstrict-dwarf -Wall -MMD -MP -I${PDK_INSTALL_PATH}/ti/drv/spi "  -rtsc.enableRtsc
+-ccs.setLinkerOptions " -lrdimon -lgcc -lm -lnosys -nostartfiles -static -Wl,--gc-sections  "
diff --git a/packages/ti/drv/spi/example/mcspi_slavemode/am335x/armv7/bios/MCSPI_SlaveMode_SlaveExample_dma_bbbAM335x_armExampleProject.txt b/packages/ti/drv/spi/example/mcspi_slavemode/am335x/armv7/bios/MCSPI_SlaveMode_SlaveExample_dma_bbbAM335x_armExampleProject.txt
new file mode 100644 (file)
index 0000000..e235d35
--- /dev/null
@@ -0,0 +1,9 @@
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/soc/am335x/sample_am335x_arm_int_reg.c"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/soc/am335x/sample_am335x_cfg.c"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/soc/am335x/sample_arm_cs.c"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/soc/am335x/sample_arm_init.c"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/example/mcspi_slavemode/src/main_mcspi_slave_mode.c"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/example/mcspi_slavemode/src/SPI_log.c"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/spi/example/mcspi_slavemode/am335x/armv7/bios/spi_arm_dma_bbbAM335x_slavemode.cfg"
+-ccs.setCompilerOptions "-c -mcpu=cortex-a8 -mtune=cortex-a8 -march=armv7-a -marm -mfloat-abi=hard -DSOC_AM335x -DbbbAM335x -DMCSPI_SLAVE_TASK -DSPI_DMA_ENABLE -DMCSPI_MULT_CHANNEL -g -gstrict-dwarf -Wall -MMD -MP -I${PDK_INSTALL_PATH}/ti/drv/spi "  -rtsc.enableRtsc
+-ccs.setLinkerOptions " -lrdimon -lgcc -lm -lnosys -nostartfiles -static -Wl,--gc-sections  "
diff --git a/packages/ti/drv/spi/example/mcspi_slavemode/am335x/armv7/bios/spi_arm_dma_bbbAM335x_slavemode.cfg b/packages/ti/drv/spi/example/mcspi_slavemode/am335x/armv7/bios/spi_arm_dma_bbbAM335x_slavemode.cfg
new file mode 100644 (file)
index 0000000..cfd9f26
--- /dev/null
@@ -0,0 +1,225 @@
+/**
+ *  \file   spi_arm_bbbAM335x_slavemode.cfg
+ *
+ *  \brief  Sysbios config file for MCSPI example project on AM335X BBB EVM.
+ *
+ */
+
+/*
+ * Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of Texas Instruments Incorporated nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+/* ================ General configuration ================ */
+var Defaults = xdc.useModule('xdc.runtime.Defaults');
+var Diags = xdc.useModule('xdc.runtime.Diags');
+var Error = xdc.useModule('xdc.runtime.Error');
+var Main = xdc.useModule('xdc.runtime.Main');
+var Memory = xdc.useModule('xdc.runtime.Memory')
+var SysMin = xdc.useModule('xdc.runtime.SysMin');
+var System = xdc.useModule('xdc.runtime.System');
+var Text = xdc.useModule('xdc.runtime.Text');
+var Clock = xdc.useModule('ti.sysbios.knl.Clock');
+var Swi = xdc.useModule('ti.sysbios.knl.Swi');
+var Task = xdc.useModule('ti.sysbios.knl.Task');
+var Semaphore = xdc.useModule('ti.sysbios.knl.Semaphore');
+var Hwi = xdc.useModule('ti.sysbios.hal.Hwi');
+var Timer = xdc.useModule('ti.sysbios.hal.Timer');
+var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
+var SemihostSupport = xdc.useModule('ti.sysbios.rts.gnu.SemiHostSupport');
+
+
+/*
+ * Program.argSize sets the size of the .args section.
+ * The examples don't use command line args so argSize is set to 0.
+ */
+Program.argSize = 0x0;
+
+
+/* System stack size (used by ISRs and Swis) */
+Program.stack = 0x4000;
+
+/*
+ * Uncomment this line to globally disable Asserts.
+ * All modules inherit the default from the 'Defaults' module.  You
+ * can override these defaults on a per-module basis using Module.common$.
+ * Disabling Asserts will save code space and improve runtime performance.
+Defaults.common$.diags_ASSERT = Diags.ALWAYS_OFF;
+ */
+Defaults.common$.diags_ASSERT = Diags.ALWAYS_OFF;
+
+/*
+ * Uncomment this line to keep module names from being loaded on the target.
+ * The module name strings are placed in the .const section. Setting this
+ * parameter to false will save space in the .const section.  Error and
+ * Assert messages will contain an "unknown module" prefix instead
+ * of the actual module name.
+Defaults.common$.namedModule = false;
+ */
+Defaults.common$.namedModule = false;
+
+/*
+ * Minimize exit handler array in System.  The System module includes
+ * an array of functions that are registered with System_atexit() to be
+ * called by System_exit().
+ */
+System.maxAtexitHandlers = 4;
+
+/*
+ * Uncomment this line to disable the Error print function.
+ * We lose error information when this is disabled since the errors are
+ * not printed.  Disabling the raiseHook will save some code space if
+ * your app is not using System_printf() since the Error_print() function
+ * calls System_printf().
+Error.raiseHook = null;
+ */
+Error.raiseHook = null;
+/*
+ * Uncomment this line to keep Error, Assert, and Log strings from being
+ * loaded on the target.  These strings are placed in the .const section.
+ * Setting this parameter to false will save space in the .const section.
+ * Error, Assert and Log message will print raw ids and args instead of
+ * a formatted message.
+Text.isLoaded = false;
+ */
+Text.isLoaded = false;
+/*
+ * Uncomment this line to disable the output of characters by SysMin
+ * when the program exits.  SysMin writes characters to a circular buffer.
+ * This buffer can be viewed using the SysMin Output view in ROV.
+ */
+SysMin.flushAtExit = false;
+
+
+/* ================ BIOS configuration ================ */
+
+var BIOS = xdc.useModule('ti.sysbios.BIOS');
+BIOS.libType = BIOS.LibType_Custom;
+BIOS.customCCOpts = BIOS.customCCOpts.replace(" -g ","");
+BIOS.assertsEnabled = false;
+BIOS.logsEnabled = false;
+BIOS.swiEnabled = false;
+/*
+ * The BIOS module will create the default heap for the system.
+ * Specify the size of this default heap.
+ */
+BIOS.heapSize = 32000;
+
+Swi.common$.namedInstance = true;
+Program.sectionsExclude = ".*";
+
+Clock.tickPeriod = 1000;
+Hwi.dispatcherSwiSupport = true;
+Hwi.dispatcherTaskSupport = true;
+Hwi.dispatcherAutoNestingSupport = true;
+
+Task.enableIdleTask = false;
+Task.initStackFlag = false;
+Task.checkStackFlag = false;
+
+/* ================ Driver configuration ================ */
+
+/* Load the EDMA package */
+var drv                        = xdc.loadPackage ("ti.sdo.edma3.drv");
+var rm                 = xdc.loadPackage ("ti.sdo.edma3.rm");
+/* rm.profile = "debug"; */
+
+/* Load the Osal package */
+var osType           = "tirtos";
+var Osal             = xdc.loadPackage('ti.osal');
+Osal.Settings.osType = osType;
+
+/*use CSL package*/
+var socType           = "am335x";
+var Csl = xdc.loadPackage('ti.csl');
+Csl.Settings.deviceType = socType;
+
+/* Load the spi package */
+var Spi              = xdc.loadPackage('ti.drv.spi');
+Spi.Settings.socType = socType;
+Spi.Settings.useDma  = "true";
+
+/* Load the I2C package */
+var socType          = "am335x";
+var I2C              = xdc.loadPackage('ti.drv.i2c');
+I2C.Settings.socType = socType;
+
+/* Load the board package */
+var Board = xdc.loadPackage('ti.board');
+Board.Settings.boardName = "bbbAM335x";
+
+/* Load the uart package */
+var socType           = "am335x";
+var Uart              = xdc.loadPackage('ti.drv.uart');
+Uart.Settings.socType = socType;
+
+/* ================ Cache and MMU configuration ================ */
+
+var Cache = xdc.useModule('ti.sysbios.family.arm.a8.Cache');
+Cache.enableCache = false;
+
+var Mmu = xdc.useModule('ti.sysbios.family.arm.a8.Mmu');
+Mmu.enableMMU = true;
+
+/* Force peripheral section to be NON cacheable strongly-ordered memory */
+var peripheralAttrs = {
+    type : Mmu.FirstLevelDesc_SECTION, // SECTION descriptor
+    tex: 0,
+    bufferable : false,                // bufferable
+    cacheable  : false,                // cacheable
+    shareable  : false,                // shareable
+    noexecute  : true,                 // not executable
+};
+
+/* Define the base address of the 1 Meg page the peripheral resides in. */
+var peripheralBaseAddr = 0x44e00400;;
+
+/* Configure the corresponding MMU page descriptor accordingly */
+Mmu.setFirstLevelDescMeta(peripheralBaseAddr,
+                          peripheralBaseAddr,
+                          peripheralAttrs);
+
+
+/* Define the base address of the 1 Meg page the peripheral resides in. */
+var peripheralBaseAddr = 0x481a6000;
+
+/* Configure the corresponding MMU page descriptor accordingly */
+Mmu.setFirstLevelDescMeta(peripheralBaseAddr,
+                          peripheralBaseAddr,
+                          peripheralAttrs);
+
+/* Define the base address of the 1 Meg page the peripheral resides in. */
+var peripheralBaseAddr = 0x49000000;
+
+/* Configure the corresponding MMU page descriptor accordingly */
+Mmu.setFirstLevelDescMeta(peripheralBaseAddr,
+                          peripheralBaseAddr,
+                          peripheralAttrs);
+