From 747d322e59e9b5faf51342fd419404563dbeabfe Mon Sep 17 00:00:00 2001 From: Mason Date: Tue, 14 Nov 2023 22:04:59 -0500 Subject: [PATCH] update --- Cargo.lock | 18 ++++----- Cargo.toml | 3 +- build.rs | 9 ++--- stm32u5/CMakeLists.txt | 4 +- stm32u5/Stm32U5LibConfig.cmake | 63 +++++++++++++++++------------- stm32u5/{src => newlib}/syscalls.c | 0 stm32u5/{src => newlib}/sysmem.c | 0 7 files changed, 52 insertions(+), 45 deletions(-) rename stm32u5/{src => newlib}/syscalls.c (100%) rename stm32u5/{src => newlib}/sysmem.c (100%) diff --git a/Cargo.lock b/Cargo.lock index 1a3acd9..8e87349 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -84,6 +84,15 @@ version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +[[package]] +name = "libu5-sys" +version = "0.1.0" +dependencies = [ + "cmake", + "cortex-m", + "cortex-m-rt", +] + [[package]] name = "nb" version = "0.1.3" @@ -158,15 +167,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "u5" -version = "0.1.0" -dependencies = [ - "cmake", - "cortex-m", - "cortex-m-rt", -] - [[package]] name = "unicode-ident" version = "1.0.12" diff --git a/Cargo.toml b/Cargo.toml index 5c371c3..bc82898 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,9 @@ [package] -name = "u5" +name = "libu5-sys" version = "0.1.0" edition = "2021" build = "build.rs" +links = "u5" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [net] diff --git a/build.rs b/build.rs index 90dde5c..6c4f6fd 100644 --- a/build.rs +++ b/build.rs @@ -2,8 +2,9 @@ use cmake::Config; fn main() { - // Tell Cargo to tell rustc to link the C++ library. - println!("cargo:rustc-link-lib=static=stm32u5"); + // set target to thumbv8m.main-none-eabi + // let out_dir = std::env::var("OUT_DIR").unwrap(); + println!("cargo:rustc-cfg=feature=\"cortex-m\""); // Use cmake to build the C++ project let dst = Config::new("stm32u5").build(); @@ -13,8 +14,6 @@ fn main() { // get the out dir of dependcy `cortex-m` // - println!("cargo:include=/includes") // provide DEP_U5_INCLUDE var - - + println!("cargo:include={}", dst.display()); } diff --git a/stm32u5/CMakeLists.txt b/stm32u5/CMakeLists.txt index f16da10..ccd2703 100644 --- a/stm32u5/CMakeLists.txt +++ b/stm32u5/CMakeLists.txt @@ -51,5 +51,5 @@ install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/CMSIS DESTINATION .) install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/startup DESTINATION .) install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/filex DESTINATION .) install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/link_script DESTINATION .) - - +install(FILES ${CMAKE_CURRENT_LIST_DIR}/Stm32U5LibConfig.cmake DESTINATION .) +install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/newlib DESTINATION .) diff --git a/stm32u5/Stm32U5LibConfig.cmake b/stm32u5/Stm32U5LibConfig.cmake index c7ec917..df18735 100644 --- a/stm32u5/Stm32U5LibConfig.cmake +++ b/stm32u5/Stm32U5LibConfig.cmake @@ -1,19 +1,20 @@ -set(COMPILE_PREFIX "") -if (APPLE) - set(COMPILE_PREFIX /opt/homebrew/bin/) -endif () - -set(CMAKE_C_COMPILER ${COMPILE_PREFIX}arm-none-eabi-gcc) -set(CMAKE_CXX_COMPILER ${COMPILE_PREFIX}arm-none-eabi-g++) -set(CMAKE_ASM_COMPILER ${COMPILE_PREFIX}arm-none-eabi-gcc) -set(CMAKE_AR ${COMPILE_PREFIX}arm-none-eabi-ar) -set(CMAKE_OBJCOPY ${COMPILE_PREFIX}arm-none-eabi-objcopy) -set(CMAKE_OBJDUMP ${COMPILE_PREFIX}arm-none-eabi-objdump) -set(SIZE ${COMPILE_PREFIX}arm-none-eabi-size) +# set(COMPILE_PREFIX "") +# if (APPLE) +# set(COMPILE_PREFIX /opt/homebrew/bin/) +# endif () +# +# set(CMAKE_C_COMPILER ${COMPILE_PREFIX}arm-none-eabi-gcc) +# set(CMAKE_CXX_COMPILER ${COMPILE_PREFIX}arm-none-eabi-g++) +# set(CMAKE_ASM_COMPILER ${COMPILE_PREFIX}arm-none-eabi-gcc) +# set(CMAKE_AR ${COMPILE_PREFIX}arm-none-eabi-ar) +# set(CMAKE_OBJCOPY ${COMPILE_PREFIX}arm-none-eabi-objcopy) +# set(CMAKE_OBJDUMP ${COMPILE_PREFIX}arm-none-eabi-objdump) +# set(SIZE ${COMPILE_PREFIX}arm-none-eabi-size) # add definition for filex add_definitions(-DFX_INCLUDE_USER_DEFINE_FILE) +add_definitions(-DSTM32U575xx) include_directories( ${CMAKE_CURRENT_LIST_DIR}/includes @@ -32,23 +33,29 @@ file(GLOB_RECURSE LIB_SOURCES "${CMAKE_CURRENT_LIST_DIR}/startup/startup_stm32u575zitxq.s" ) +file(GLOB_RECURSE EXPORT_SOURCES + "${CMAKE_CURRENT_LIST_DIR}/newlib/*.c" + "${CMAKE_CURRENT_LIST_DIR}/startup/startup_stm32u575zitxq.s" + ) + message(STATUS "CMAKE_CURRENT_LIST_DIR: ${CMAKE_CURRENT_LIST_DIR}") -#Uncomment for hardware floating point -# add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING) -add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) -add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) -add_compile_options(-mcpu=cortex-m33 -mthumb -mthumb-interwork) -add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0) -# Enable assembler files preprocessing -add_compile_options($<$:-x$assembler-with-cpp>) - -# add link script +# #Uncomment for hardware floating point +# # add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING) +# add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) +# add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) +# add_compile_options(-mcpu=cortex-m33 -mthumb -mthumb-interwork) +# add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0) +# # Enable assembler files preprocessing +# add_compile_options($<$:-x$assembler-with-cpp>) +# +# # add link script set(LINKER_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/link_script/STM32U575ZITXQ_FLASH.ld) - -# add link options -add_link_options(-Wall -Wl,-gc-sections,--print-memory-usage,-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map) -add_link_options(-mcpu=cortex-m33 -mthumb -mthumb-interwork) +message ("LINKER_SCRIPT: ${LINKER_SCRIPT}") +# +# # add link options +# add_link_options(-Wall -Wl,-gc-sections,--print-memory-usage,-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map) +add_link_options(-Wall -Wl,-gc-sections,--print-memory-usage) +# add_link_options(-mcpu=cortex-m33 -mthumb -mthumb-interwork) add_link_options(-T ${LINKER_SCRIPT}) -add_definitions(-DSTM32U575xx) -# set(LIB_BIN ${CMAKE_CURRENT_LIST_DIR}/libSTM32U5.a) +set(LIB_BIN ${CMAKE_CURRENT_LIST_DIR}/libSTM32U5.a) diff --git a/stm32u5/src/syscalls.c b/stm32u5/newlib/syscalls.c similarity index 100% rename from stm32u5/src/syscalls.c rename to stm32u5/newlib/syscalls.c diff --git a/stm32u5/src/sysmem.c b/stm32u5/newlib/sysmem.c similarity index 100% rename from stm32u5/src/sysmem.c rename to stm32u5/newlib/sysmem.c