Almost ready to build for arm stm32g030
authorandre Ebersold <andre.ebersold@free.fr>
Wed, 10 Jan 2024 21:11:20 +0000 (22:11 +0100)
committerandre Ebersold <andre.ebersold@free.fr>
Wed, 10 Jan 2024 21:11:20 +0000 (22:11 +0100)
Application/CMakeLists.txt
Application/DCMotor/CMakeLists.txt
CMakeLists.txt
Communication/CommunicationHandler.cpp
rules/gcc-arm-generic.cmake
rules/target-atmega328p.cmake [new file with mode: 0644]
rules/target-stm32g030.cmake [new file with mode: 0644]
setupenvstm32g030.bat [new file with mode: 0644]

index e365e03ed1e2923a43aa9a0c99776c6627338b99..b7215e37a3d3bb614e69791e686f52a0fe39252b 100644 (file)
@@ -1 +1,25 @@
-subdirs(Led0 DCMotor PowerSwitch ShutterCtrl WorkhourMeter)
+SET(APPLIST "")
+if(TINYAPP_LED0)
+  LIST(APPEND APPLIST Led0)
+endif()
+if(TINYAPP_DCMOTOR)
+  LIST(APPEND APPLIST DCMotor)
+endif()
+if(TINYAPP_SHUTTERCTRL)
+  LIST(APPEND APPLIST ShutterCtrl)
+endif()
+if(TINYAPP_POWERSWITCH)
+  LIST(APPEND APPLIST PowerSwitch)
+endif()
+if(TINYAPP_WORKHOURMETER)
+  LIST(APPEND APPLIST WorkhourMeter)
+endif()
+
+OPTION(TINYAPP_LED0          "Build Led application" ON)
+OPTION(TINYAPP_DCMOTOR       "Build DC Motor application" OFF)
+OPTION(TINYAPP_SHUTTERCTRL   "Build Shutter Handler application" ON)
+OPTION(TINYAPP_POWERSWITCH   "Build Powerswitch application" ON)
+OPTION(TINYAPP_WORKHOURMETER "Build WorkHourMeter application" ON)
+
+subdirs(${APPLIST})
+#subdirs(Led0 DCMotor PowerSwitch ShutterCtrl WorkhourMeter)
index 624792c2ce902947225ccbae1013486fec87d259..2c38bcc53d1859bbc12d2c8b73ed8a298e30c618 100644 (file)
@@ -8,7 +8,7 @@ add_avr_executable(
    DCMotor.cpp
    MotorHandler.cpp
    )
-
+if (AVR_MCU)
 target_link_libraries(
   dcmotor-${AVR_MCU}.elf
   avrHAL-${AVR_MCU}
@@ -17,7 +17,6 @@ target_link_libraries(
   avrPtf-${AVR_MCU}
   avrDCMotorParameters-${AVR_MCU}
 )
-
 IF (${AVR_MCU} EQUAL "atmega328p")
  SET(AVRPROG arduino)
  SET(AVRPROG_MCU Atmega328p)
@@ -26,10 +25,20 @@ ELSE(${AVR_MCU} EQUAL "atmega328p")
  SET(AVRPROG_MCU m32u4)
 ENDIF(${AVR_MCU} EQUAL "atmega328p")
 
+elseif(STM32_MCU)
+target_link_libraries(
+       dcmotor-${STM32_MCU}.elf
+       avrHAL-${STM32_MCU}
+       avrDrivers-${STM32_MCU}
+       avrComm-${STM32_MCU}
+       avrPtf-${STM32_MCU}
+       avrDCMotorParameters-${STM32_MCU}
+)
+endif()
+
 add_custom_target(
       flash_dcmotor
       COMMAND
-      # avrdude -c arduino -P ${AVRDUDE_PORT} -p Atmega328p -b 57600 -Uflash:w:${CMAKE_CURRENT_BINARY_DIR}/dcmotor-${AVR_MCU}.hex:i
       avrdude -c ${AVRPROG} -P ${AVRDUDE_PORT} -p ${AVRPROG_MCU} -b 57600 -Uflash:w:${CMAKE_CURRENT_BINARY_DIR}/dcmotor-${AVR_MCU}.hex:i
       DEPENDS dcmotor-${AVR_MCU}.hex
     )
index a32554033fc78ddd6e7e45f35b9be0d306420d09..6d9f5f5748c075cbe78dfaaf1135b8157bf493eb 100644 (file)
@@ -1,31 +1,16 @@
 cmake_minimum_required(VERSION 2.8)
-
-
-##########################################################################
-# tools to beused for programming the AVR
-##########################################################################
-set(AVR_UPLOADTOOL avrdude CACHE STRING "AVR MCU Programmer ")
-set(AVR_PROGRAMMER arduino)
-set(AVR_UPLOADTOOL_PORT CACHE STRING "AVRdude upload port")
-set(AVR_UPLOADTOOL_BAUDRATE 57600)
-
-##########################################################################
-# AVR and fuses needs to be set
-##########################################################################
-#set(AVR_MCU atmega32)
-set(AVR_MCU atmega328p CACHE STRING "AVR MCU type choose between atmega32_p or atmega32 atmega328p")
-set(AVR_H_FUSE 0xd9)
-set(AVR_L_FUSE 0xc3)
-
-### END TOOLCHAIN SETUP AREA #############################################
-
-include(${CMAKE_CURRENT_SOURCE_DIR}/rules/gcc-avr-generic.cmake)
-
-PROJECT(tinyapp)
-
-include(${CMAKE_CURRENT_SOURCE_DIR}/rules/gcc-avr-common.cmake)
-
-IF(NOT CMAKE_BUILD_TYPE)
+project(tinyapp)
+if("${BUILD_TARGET}" STREQUAL "atmega328p")
+  include(${CMAKE_CURRENT_SOURCE_DIR}/rules/target-atmega328p.cmake)
+elseif ("${BUILD_TARGET}" STREQUAL "atmega32u4")
+  include(${CMAKE_CURRENT_SOURCE_DIR}/rules/target-atmega328p.cmake)
+elseif ("${BUILD_TARGET}" STREQUAL "stm32g030")
+  include(${CMAKE_CURRENT_SOURCE_DIR}/rules/target-stm32g030.cmake)
+else()
+  include(${CMAKE_CURRENT_SOURCE_DIR}/rules/target-atmega328p.cmake)
+endif()
+
+if (NOT CMAKE_BUILD_TYPE)
   SET(CMAKE_BUILD_TYPE "Debug")
 ENDIF(NOT CMAKE_BUILD_TYPE)
 
@@ -41,8 +26,9 @@ INCLUDE_DIRECTORIES("${tinyapp_BINARY_DIR}/Application")
 
 
 OPTION(TINYAPP_LED0        "Build Led application" ON)
-OPTION(TINYAPP_DC_MOTOR    "Build DC Motor application" OFF)
+OPTION(TINYAPP_DCMOTOR     "Build DC Motor application" OFF)
 OPTION(TINYAPP_SHUTTERCTRL "Build Shutter Handler application" ON)
+OPTION(TINYAPP_POWERSWITCH "Build Powerswitch application" ON)
 
 IF (WIN32)
        SET(AVRDUDE_PORT "COM3" CACHE STRING "Avrdude port to use for flashing")
index 95f113f148ccbff335af2069aff4a38651a85370..91056d554f2bb7bffada593baf93962167d4219e 100644 (file)
@@ -145,11 +145,18 @@ void CommunicationHandler::writeParameter(const Uint8_t paramId
             m_Params->writeValue(paramId,result);
         }
         else 
+        if (_eType == TYPE_U32)
         {
            Uint32_t val;
             parse_num(_buf,len,val);
             m_Params->writeValue(paramId,val);
         }
+        else 
+        {
+           Uint32_t val;
+            parse_num(_buf,len,val);
+            m_Params->writeValue(paramId,reinterpret_cast<Uint8_t & >(val));
+        }
 }
 
 void 
index 8af87f40a70b12f37460e76817d9c6bee116d121..00e1715e137039e541e9cb5bf76e9d0e6629f2d3 100644 (file)
@@ -15,12 +15,23 @@ option(WITH_MCU "Add the mCU type to the target file name." ON)
 # executables in use
 ##########################################################################
 SET(TRIPLE arm-none-eabi)
+SET(CMAKE_CROSSCOMPILING 1)
+SET(CROSS_TARGET_TRIPLE "arm-none-eabi-")
 find_program(ARM_CC ${TRIPLE}-gcc)
 find_program(ARM_CXX ${TRIPLE}-g++)
 find_program(ARM_OBJCOPY ${TRIPLE}-objcopy)
 find_program(ARM_SIZE_TOOL ${TRIPLE}-size)
 find_program(ARM_OBJDUMP ${TRIPLE}-objdump)
 
+##########################################################################
+# toolchain starts with defining mandatory variables
+##########################################################################
+set(CMAKE_SYSTEM_NAME Generic)
+set(CMAKE_SYSTEM_PROCESSOR arm)
+set(CMAKE_C_COMPILER ${ARM_CC})
+set(CMAKE_CXX_COMPILER ${ARM_CXX})
+SET(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")
+
 ######
 # Identification
 ######
@@ -47,10 +58,10 @@ endif(NOT STM32_MCU)
 # default CORE
 if(NOT STM32_CORE)
     SET(
-           STM32_MCU cortex-m3
+           STM32_CORE cortex-m3
            CACHE STRING "Set default CPU cortex-m3"
     )
-endif(NOT STM32_MCU)
+endif(NOT STM32_CORE)
 
 # default uploadtool
 if(NOT STM32_UPLOADTOOL)
@@ -66,7 +77,7 @@ if(NOT STM32_UPLOAD_CONFIG)
            STM32_UPLOAD_CONFIG board/stm32
            CACHE STRING "Set default openocd config file for target"
     )
-endif(NOT STM32_UPLOADTOOL)
+endif(NOT STM32_UPLOAD_CONFIG)
 
 
 #default stm32-size args
diff --git a/rules/target-atmega328p.cmake b/rules/target-atmega328p.cmake
new file mode 100644 (file)
index 0000000..f6f5534
--- /dev/null
@@ -0,0 +1,24 @@
+##########################################################################
+# tools to beused for programming the AVR
+##########################################################################
+set(AVR_UPLOADTOOL avrdude CACHE STRING "AVR MCU Programmer ")
+set(AVR_PROGRAMMER arduino)
+set(AVR_UPLOADTOOL_PORT CACHE STRING "AVRdude upload port")
+set(AVR_UPLOADTOOL_BAUDRATE 57600)
+
+##########################################################################
+# AVR and fuses needs to be set
+##########################################################################
+#set(AVR_MCU atmega32)
+set(AVR_MCU atmega328p CACHE STRING "AVR MCU type choose between atmega32_p or atmega32 atmega328p")
+set(AVR_H_FUSE 0xd9)
+set(AVR_L_FUSE 0xc3)
+
+### END TOOLCHAIN SETUP AREA #############################################
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/rules/gcc-avr-generic.cmake)
+
+PROJECT(tinyapp)
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/rules/gcc-avr-common.cmake)
+
diff --git a/rules/target-stm32g030.cmake b/rules/target-stm32g030.cmake
new file mode 100644 (file)
index 0000000..6da861c
--- /dev/null
@@ -0,0 +1,24 @@
+##########################################################################
+# tools to beused for programming the AVR
+##########################################################################
+set(STM32_UPLOADTOOL openocd CACHE STRING "STM32 MCU Programmer")
+set(STM32_PROGRAMMER openocd)
+set(STM32_UPLOADTOOL_PORT CACHE STRING "AVRdude upload port")
+set(STM32_UPLOADTOOL_BAUDRATE 57600)
+
+##########################################################################
+# AVR and fuses needs to be set
+##########################################################################
+set(STM32_MCU stm32g030 CACHE STRING "STM32 MCU type stm32g030")
+set(AVR_H_FUSE 0xd9)
+set(AVR_L_FUSE 0xc3)
+
+### END TOOLCHAIN SETUP AREA #############################################
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/rules/gcc-arm-generic.cmake)
+
+PROJECT(tinyapp)
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/rules/gcc-arm-common.cmake)
+
+
diff --git a/setupenvstm32g030.bat b/setupenvstm32g030.bat
new file mode 100644 (file)
index 0000000..2529978
--- /dev/null
@@ -0,0 +1,7 @@
+
+SET PATH=%PATH%;C:\Tools\gcc-arm-none-eabi-10.3-win32\gcc-arm-none-eabi-10.3-2021.10\bin
+SET PATH=%PATH%;C:\Program Files\CMake\bin
+SET PATH=%PATH%;C:\msys64\usr\bin
+SET PATH=%PATH%;C:\tools\avrdude
+
+SET STM32_FIND_ROOT_PATH=C:\Tools\gcc-arm-none-eabi-10.3-win32\gcc-arm-none-eabi-10.3-2021.10\bin