From 385c7be8afb9ce4d3e7bdad9813bf75fc219abb6 Mon Sep 17 00:00:00 2001 From: Gil Pitney Date: Tue, 25 Oct 2016 16:49:35 -0700 Subject: [PATCH] cc3200: Add support for the TI CC32xx SoC Series Initial support is for the CC3200 SoC, comprising a network coprocessor and Cortex-M4 MPU. This leverages the CC3200 SDK driver peripheral library, installed separately, or built from ext/hal/. Jira: ZEP-1109 Change-Id: I508afc8596c165b309a4ec641c39abadc779eea3 Signed-off-by: Gil Pitney --- arch/arm/soc/ti_simplelink/Kbuild | 1 + arch/arm/soc/ti_simplelink/Kconfig | 15 +++++++++ arch/arm/soc/ti_simplelink/Kconfig.defconfig | 1 + arch/arm/soc/ti_simplelink/Kconfig.soc | 4 +++ .../cc32xx/Kconfig.defconfig.cc3200 | 32 +++++++++++++++++++ .../cc32xx/Kconfig.defconfig.series | 18 +++++++++++ .../soc/ti_simplelink/cc32xx/Kconfig.series | 10 ++++++ arch/arm/soc/ti_simplelink/cc32xx/Kconfig.soc | 13 ++++++++ arch/arm/soc/ti_simplelink/cc32xx/Makefile | 1 + arch/arm/soc/ti_simplelink/cc32xx/README | 10 ++++++ arch/arm/soc/ti_simplelink/cc32xx/linker.ld | 3 ++ arch/arm/soc/ti_simplelink/cc32xx/soc.c | 31 ++++++++++++++++++ arch/arm/soc/ti_simplelink/cc32xx/soc.h | 17 ++++++++++ 13 files changed, 156 insertions(+) create mode 100644 arch/arm/soc/ti_simplelink/Kbuild create mode 100644 arch/arm/soc/ti_simplelink/Kconfig create mode 100644 arch/arm/soc/ti_simplelink/Kconfig.defconfig create mode 100644 arch/arm/soc/ti_simplelink/Kconfig.soc create mode 100644 arch/arm/soc/ti_simplelink/cc32xx/Kconfig.defconfig.cc3200 create mode 100644 arch/arm/soc/ti_simplelink/cc32xx/Kconfig.defconfig.series create mode 100644 arch/arm/soc/ti_simplelink/cc32xx/Kconfig.series create mode 100644 arch/arm/soc/ti_simplelink/cc32xx/Kconfig.soc create mode 100644 arch/arm/soc/ti_simplelink/cc32xx/Makefile create mode 100644 arch/arm/soc/ti_simplelink/cc32xx/README create mode 100644 arch/arm/soc/ti_simplelink/cc32xx/linker.ld create mode 100644 arch/arm/soc/ti_simplelink/cc32xx/soc.c create mode 100644 arch/arm/soc/ti_simplelink/cc32xx/soc.h diff --git a/arch/arm/soc/ti_simplelink/Kbuild b/arch/arm/soc/ti_simplelink/Kbuild new file mode 100644 index 00000000000..2fe772fee6a --- /dev/null +++ b/arch/arm/soc/ti_simplelink/Kbuild @@ -0,0 +1 @@ +obj-y += $(SOC_SERIES)/ diff --git a/arch/arm/soc/ti_simplelink/Kconfig b/arch/arm/soc/ti_simplelink/Kconfig new file mode 100644 index 00000000000..8247b7190b0 --- /dev/null +++ b/arch/arm/soc/ti_simplelink/Kconfig @@ -0,0 +1,15 @@ +# Kconfig - Texas Instruments SimpleLink Family +# + +config SOC_FAMILY_TISIMPLELINK + bool + # omit prompt to signify a "hidden" option + default n + +if SOC_FAMILY_TISIMPLELINK +config SOC_FAMILY + string + default ti_simplelink +endif + +source "arch/arm/soc/ti_simplelink/*/Kconfig.soc" diff --git a/arch/arm/soc/ti_simplelink/Kconfig.defconfig b/arch/arm/soc/ti_simplelink/Kconfig.defconfig new file mode 100644 index 00000000000..98f6ef6dcf9 --- /dev/null +++ b/arch/arm/soc/ti_simplelink/Kconfig.defconfig @@ -0,0 +1 @@ +source "arch/arm/soc/ti_simplelink/*/Kconfig.defconfig.series" diff --git a/arch/arm/soc/ti_simplelink/Kconfig.soc b/arch/arm/soc/ti_simplelink/Kconfig.soc new file mode 100644 index 00000000000..d17c7ca69f3 --- /dev/null +++ b/arch/arm/soc/ti_simplelink/Kconfig.soc @@ -0,0 +1,4 @@ +# Kconfig - Texas Instruments SimpleLink Family +# + +source "arch/arm/soc/ti_simplelink/*/Kconfig.series" diff --git a/arch/arm/soc/ti_simplelink/cc32xx/Kconfig.defconfig.cc3200 b/arch/arm/soc/ti_simplelink/cc32xx/Kconfig.defconfig.cc3200 new file mode 100644 index 00000000000..91d67328043 --- /dev/null +++ b/arch/arm/soc/ti_simplelink/cc32xx/Kconfig.defconfig.cc3200 @@ -0,0 +1,32 @@ +# Kconfig.defconfig.cc3200- TI SimpleLink CC3200 SoC +# + +if SOC_CC3200 + +config SOC + string + default cc3200 + +config SYS_CLOCK_HW_CYCLES_PER_SEC + int + default 80000000 + +config SRAM_SIZE + default 240 + +config FLASH_SIZE + default 0 + +config CC3200SDK_LIBRARY + def_bool n + +config CC3200SDK_INSTALL_PATH + default "" + +config NUM_IRQS + int + # must be >= the highest interrupt number used + # This includes the NWP interrupt + default 179 + +endif # SOC_CC3200 diff --git a/arch/arm/soc/ti_simplelink/cc32xx/Kconfig.defconfig.series b/arch/arm/soc/ti_simplelink/cc32xx/Kconfig.defconfig.series new file mode 100644 index 00000000000..be8bf8b437f --- /dev/null +++ b/arch/arm/soc/ti_simplelink/cc32xx/Kconfig.defconfig.series @@ -0,0 +1,18 @@ +# Kconfig.defconfig.series - TI SimpleLink Family +# + +if SOC_SERIES_CC32XX + +source "arch/arm/soc/ti_simplelink/cc32xx/Kconfig.defconfig.cc32*" + +config SOC_SERIES + default cc32xx + +config SRAM_BASE_ADDRESS + default 0x20004000 + +config NUM_IRQ_PRIO_BITS + int + default 3 + +endif # SOC_SERIES_CC32XX diff --git a/arch/arm/soc/ti_simplelink/cc32xx/Kconfig.series b/arch/arm/soc/ti_simplelink/cc32xx/Kconfig.series new file mode 100644 index 00000000000..739ef9b47ac --- /dev/null +++ b/arch/arm/soc/ti_simplelink/cc32xx/Kconfig.series @@ -0,0 +1,10 @@ +# Kconfig.series - TI SimpleLink CC32xx +# + +config SOC_SERIES_CC32XX + bool "TI SimpleLink Family" + select CPU_CORTEX_M + select CPU_CORTEX_M4 + select SOC_FAMILY_TISIMPLELINK + help + Enable support for TI SimpleLink CC32xx diff --git a/arch/arm/soc/ti_simplelink/cc32xx/Kconfig.soc b/arch/arm/soc/ti_simplelink/cc32xx/Kconfig.soc new file mode 100644 index 00000000000..28332c99a76 --- /dev/null +++ b/arch/arm/soc/ti_simplelink/cc32xx/Kconfig.soc @@ -0,0 +1,13 @@ +# Kconfig.soc - Texas Instruments CC3200 +# + +choice +prompt "TI SimpleLink MCU Selection" +depends on SOC_SERIES_CC32XX + +config SOC_CC3200 + bool "CC3200" + select CPU_HAS_FPU + select HAS_CC3200SDK + +endchoice diff --git a/arch/arm/soc/ti_simplelink/cc32xx/Makefile b/arch/arm/soc/ti_simplelink/cc32xx/Makefile new file mode 100644 index 00000000000..52341f86c0b --- /dev/null +++ b/arch/arm/soc/ti_simplelink/cc32xx/Makefile @@ -0,0 +1 @@ +obj-y += soc.o diff --git a/arch/arm/soc/ti_simplelink/cc32xx/README b/arch/arm/soc/ti_simplelink/cc32xx/README new file mode 100644 index 00000000000..70ef782350e --- /dev/null +++ b/arch/arm/soc/ti_simplelink/cc32xx/README @@ -0,0 +1,10 @@ +CC3200 Board and Bootloader info taken from: +* http://www.ti.com.cn/cn/lit/ug/swru367c/swru367c.pdf +* http://www.ti.com/lit/ug/swru369c/swru369c.pdf + +Notes: + * CC3200 has no integrated flash Memory. + * TI bootloader takes first 16Kb of the 256Kb SRAM, so app must start at + 0x20004000. CC3200 Kconfig must set SRAM size to 240Kb or less, since + Zephyr computes TOP_OF_MEMORY (used for stack) based on SRAM_BASE_ADDRESS + + SRAM_SIZE. diff --git a/arch/arm/soc/ti_simplelink/cc32xx/linker.ld b/arch/arm/soc/ti_simplelink/cc32xx/linker.ld new file mode 100644 index 00000000000..c4f825afd37 --- /dev/null +++ b/arch/arm/soc/ti_simplelink/cc32xx/linker.ld @@ -0,0 +1,3 @@ +/* linker.ld - Linker command/script file */ + +#include diff --git a/arch/arm/soc/ti_simplelink/cc32xx/soc.c b/arch/arm/soc/ti_simplelink/cc32xx/soc.c new file mode 100644 index 00000000000..893d1670e99 --- /dev/null +++ b/arch/arm/soc/ti_simplelink/cc32xx/soc.c @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2016, Texas Instruments Incorporated + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include + +static int ti_cc3200_init(struct device *arg) +{ + ARG_UNUSED(arg); + + PRCMCC3200MCUInit(); + + return 0; +} + +SYS_INIT(ti_cc3200_init, PRIMARY, 0); diff --git a/arch/arm/soc/ti_simplelink/cc32xx/soc.h b/arch/arm/soc/ti_simplelink/cc32xx/soc.h new file mode 100644 index 00000000000..7226cfb3185 --- /dev/null +++ b/arch/arm/soc/ti_simplelink/cc32xx/soc.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2016, Texas Instruments Incorporated + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include +#include