This commit is contained in:
Mason 2023-11-14 22:04:59 -05:00
parent dc91238650
commit 747d322e59
Signed by untrusted user who does not match committer: guangzong
GPG Key ID: 095389BACAE97D19
7 changed files with 52 additions and 45 deletions

18
Cargo.lock generated
View File

@ -84,6 +84,15 @@ version = "0.2.150"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
[[package]]
name = "libu5-sys"
version = "0.1.0"
dependencies = [
"cmake",
"cortex-m",
"cortex-m-rt",
]
[[package]] [[package]]
name = "nb" name = "nb"
version = "0.1.3" version = "0.1.3"
@ -158,15 +167,6 @@ dependencies = [
"unicode-ident", "unicode-ident",
] ]
[[package]]
name = "u5"
version = "0.1.0"
dependencies = [
"cmake",
"cortex-m",
"cortex-m-rt",
]
[[package]] [[package]]
name = "unicode-ident" name = "unicode-ident"
version = "1.0.12" version = "1.0.12"

View File

@ -1,8 +1,9 @@
[package] [package]
name = "u5" name = "libu5-sys"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
build = "build.rs" build = "build.rs"
links = "u5"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[net] [net]

View File

@ -2,8 +2,9 @@
use cmake::Config; use cmake::Config;
fn main() { fn main() {
// Tell Cargo to tell rustc to link the C++ library. // set target to thumbv8m.main-none-eabi
println!("cargo:rustc-link-lib=static=stm32u5"); // let out_dir = std::env::var("OUT_DIR").unwrap();
println!("cargo:rustc-cfg=feature=\"cortex-m\"");
// Use cmake to build the C++ project // Use cmake to build the C++ project
let dst = Config::new("stm32u5").build(); let dst = Config::new("stm32u5").build();
@ -13,8 +14,6 @@ fn main() {
// get the out dir of dependcy `cortex-m` // get the out dir of dependcy `cortex-m`
// //
println!("cargo:include=/includes") // provide DEP_U5_INCLUDE var println!("cargo:include={}", dst.display());
} }

View File

@ -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}/startup DESTINATION .)
install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/filex DESTINATION .) install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/filex DESTINATION .)
install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/link_script 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 .)

View File

@ -1,19 +1,20 @@
set(COMPILE_PREFIX "") # set(COMPILE_PREFIX "")
if (APPLE) # if (APPLE)
set(COMPILE_PREFIX /opt/homebrew/bin/) # set(COMPILE_PREFIX /opt/homebrew/bin/)
endif () # endif ()
#
set(CMAKE_C_COMPILER ${COMPILE_PREFIX}arm-none-eabi-gcc) # set(CMAKE_C_COMPILER ${COMPILE_PREFIX}arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER ${COMPILE_PREFIX}arm-none-eabi-g++) # set(CMAKE_CXX_COMPILER ${COMPILE_PREFIX}arm-none-eabi-g++)
set(CMAKE_ASM_COMPILER ${COMPILE_PREFIX}arm-none-eabi-gcc) # set(CMAKE_ASM_COMPILER ${COMPILE_PREFIX}arm-none-eabi-gcc)
set(CMAKE_AR ${COMPILE_PREFIX}arm-none-eabi-ar) # set(CMAKE_AR ${COMPILE_PREFIX}arm-none-eabi-ar)
set(CMAKE_OBJCOPY ${COMPILE_PREFIX}arm-none-eabi-objcopy) # set(CMAKE_OBJCOPY ${COMPILE_PREFIX}arm-none-eabi-objcopy)
set(CMAKE_OBJDUMP ${COMPILE_PREFIX}arm-none-eabi-objdump) # set(CMAKE_OBJDUMP ${COMPILE_PREFIX}arm-none-eabi-objdump)
set(SIZE ${COMPILE_PREFIX}arm-none-eabi-size) # set(SIZE ${COMPILE_PREFIX}arm-none-eabi-size)
# add definition for filex # add definition for filex
add_definitions(-DFX_INCLUDE_USER_DEFINE_FILE) add_definitions(-DFX_INCLUDE_USER_DEFINE_FILE)
add_definitions(-DSTM32U575xx)
include_directories( include_directories(
${CMAKE_CURRENT_LIST_DIR}/includes ${CMAKE_CURRENT_LIST_DIR}/includes
@ -32,23 +33,29 @@ file(GLOB_RECURSE LIB_SOURCES
"${CMAKE_CURRENT_LIST_DIR}/startup/startup_stm32u575zitxq.s" "${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}") message(STATUS "CMAKE_CURRENT_LIST_DIR: ${CMAKE_CURRENT_LIST_DIR}")
#Uncomment for hardware floating point # #Uncomment for hardware floating point
# add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING) # # add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING)
add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) # add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)
add_link_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(-mcpu=cortex-m33 -mthumb -mthumb-interwork)
add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0) # add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0)
# Enable assembler files preprocessing # # Enable assembler files preprocessing
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-x$<SEMICOLON>assembler-with-cpp>) # add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-x$<SEMICOLON>assembler-with-cpp>)
#
# add link script # # add link script
set(LINKER_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/link_script/STM32U575ZITXQ_FLASH.ld) set(LINKER_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/link_script/STM32U575ZITXQ_FLASH.ld)
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
add_link_options(-mcpu=cortex-m33 -mthumb -mthumb-interwork) # 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_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)