From 64e03b834741d025aa575f46f692225869031b4d Mon Sep 17 00:00:00 2001 From: Jing Ma Date: Thu, 2 Apr 2020 14:53:34 +0800 Subject: [PATCH] [cmake] add support for cc1352 (#4690) --- examples/platforms/cc1352/CMakeLists.txt | 90 +++++++++++++++++++ examples/platforms/cc1352/arm-none-eabi.cmake | 52 +++++++++++ script/check-arm-build-cmake | 26 ++++++ 3 files changed, 168 insertions(+) create mode 100644 examples/platforms/cc1352/CMakeLists.txt create mode 100644 examples/platforms/cc1352/arm-none-eabi.cmake diff --git a/examples/platforms/cc1352/CMakeLists.txt b/examples/platforms/cc1352/CMakeLists.txt new file mode 100644 index 000000000..60d1be85a --- /dev/null +++ b/examples/platforms/cc1352/CMakeLists.txt @@ -0,0 +1,90 @@ +# +# Copyright (c) 2020, The OpenThread Authors. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. 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. +# 3. Neither the name of the copyright holder 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 HOLDER 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. +# + +set(OT_PLATFORM_LIB "openthread-cc1352" PARENT_SCOPE) + +if(NOT OT_CONFIG) + set(OT_CONFIG "openthread-core-cc1352-config.h") + set(OT_CONFIG ${OT_CONFIG} PARENT_SCOPE) +endif() + +list(APPEND OT_PLATFORM_DEFINES + "OPENTHREAD_CORE_CONFIG_PLATFORM_CHECK_FILE=\"openthread-core-cc1352-config-check.h\"" + "MBEDTLS_CONFIG_FILE=\"mbedtls-config.h\"" +) +set(OT_PLATFORM_DEFINES ${OT_PLATFORM_DEFINES} PARENT_SCOPE) + +list(APPEND OT_PRIVATE_DEFINES "MBEDTLS_USER_CONFIG_FILE=\"cc1352-mbedtls-config.h\"") +list(APPEND OT_PUBLIC_INCLUDES + "${PROJECT_SOURCE_DIR}/examples/platforms/cc1352/crypto" + "${PROJECT_SOURCE_DIR}/third_party/ti/devices/cc13x2_cc26x2" +) +set(OT_PUBLIC_INCLUDES ${OT_PUBLIC_INCLUDES} PARENT_SCOPE) + +list(APPEND OT_PLATFORM_DEFINES "OPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"${OT_CONFIG}\"") + +add_library(openthread-cc1352 + alarm.c + diag.c + entropy.c + flash.c + logging.c + misc.c + radio.c + system.c + uart.c + crypto/aes_alt.c + cc1352_ccfg.c + cc1352_startup.c + cxx_helpers.c +) + +set_property(TARGET openthread-cc1352 PROPERTY C_STANDARD 99) + +target_link_libraries(openthread-cc1352 PRIVATE "${PROJECT_SOURCE_DIR}/third_party/ti/devices/cc13x2_cc26x2/driverlib/bin/gcc/driverlib.a") +target_link_options(openthread-cc1352 PUBLIC -T${PROJECT_SOURCE_DIR}/third_party/ti/devices/cc13x2_cc26x2/linker_files/cc26x2r1f.lds) +target_link_options(openthread-cc1352 PUBLIC -Wl,-Map=$.map) + +target_compile_definitions(openthread-cc1352 + PUBLIC + ${OT_PLATFORM_DEFINES} + PRIVATE + ${OT_PRIVATE_DEFINES} +) + +target_compile_options(openthread-cc1352 PRIVATE ${OT_CFLAGS}) + +target_include_directories(openthread-cc1352 + PRIVATE + ${OT_PUBLIC_INCLUDES} + ${OT_PRIVATE_INCLUDES} + ${PROJECT_SOURCE_DIR}/src/core + ${PROJECT_SOURCE_DIR}/examples/platforms + ${PROJECT_SOURCE_DIR}/third_party/mbedtls/repo/include + ${PROJECT_SOURCE_DIR}/third_party/mbedtls +) diff --git a/examples/platforms/cc1352/arm-none-eabi.cmake b/examples/platforms/cc1352/arm-none-eabi.cmake new file mode 100644 index 000000000..334ad6387 --- /dev/null +++ b/examples/platforms/cc1352/arm-none-eabi.cmake @@ -0,0 +1,52 @@ +# +# Copyright (c) 2020, The OpenThread Authors. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. 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. +# 3. Neither the name of the copyright holder 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 HOLDER 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. +# + +set(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_SYSTEM_PROCESSOR ARM) + +set(CMAKE_C_COMPILER arm-none-eabi-gcc) +set(CMAKE_CXX_COMPILER arm-none-eabi-g++) +set(CMAKE_ASM_COMPILER arm-none-eabi-as) +set(CMAKE_RANLIB arm-none-eabi-ranlib) + +set(COMMON_C_FLAGS "-mcpu=cortex-m4 -march=armv7e-m -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -fdata-sections -ffunction-sections") + +set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -std=gnu99") +set(CMAKE_CXX_FLAGS "${COMMON_C_FLAGS} -fno-exceptions -fno-rtti") +set(CMAKE_ASM_FLAGS "${COMMON_C_FLAGS}") +set(CMAKE_EXE_LINKER_FLAGS "${COMMON_C_FLAGS} -nostartfiles -specs=nano.specs -specs=nosys.specs -Wl,--gc-sections -Wl,-Map=map.map") + +set(CMAKE_C_FLAGS_DEBUG "-Og -g") +set(CMAKE_CXX_FLAGS_DEBUG "-Og -g") +set(CMAKE_ASM_FLAGS_DEBUG "-g") +set(CMAKE_EXE_LINKER_FLAGS_DEBUG "") + +set(CMAKE_C_FLAGS_RELEASE "-Os") +set(CMAKE_CXX_FLAGS_RELEASE "-Os") +set(CMAKE_ASM_FLAGS_RELEASE "") +set(CMAKE_EXE_LINKER_FLAGS_RELEASE "") diff --git a/script/check-arm-build-cmake b/script/check-arm-build-cmake index 52b65050d..b6b5bad45 100755 --- a/script/check-arm-build-cmake +++ b/script/check-arm-build-cmake @@ -39,6 +39,30 @@ reset_source() git clean -xfd } +build_cc1352() +{ + local options=("${OT_COMMON_OPTIONS[@]}") + + options+=( + "-DOT_PLATFORM=cc1352" + "-DCMAKE_TOOLCHAIN_FILE=examples/platforms/cc1352/arm-none-eabi.cmake" + "-DOT_COMMISSIONER=on" + "-DOT_DHCP6_CLIENT=on" + "-DOT_DHCP6_SERVER=on" + "-DOT_DNS_CLIENT=on" + "-DOT_JOINER=on" + "-DOT_SLAAC=on" + "-DCMAKE_BUILD_TYPE=Release" + ) + + reset_source + mkdir build + cd build + cmake -GNinja "${options[@]}" .. + ninja + cd .. +} + build_cc2538() { local options=("${OT_COMMON_OPTIONS[@]}") @@ -53,10 +77,12 @@ build_cc2538() cd build cmake -GNinja "${options[@]}" .. ninja + cd .. } main() { + build_cc1352 build_cc2538 }