# ############################### # AVR-GCC toolchain file # ############################### # Specify the cross-compiler set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_VERSION 1) set(CMAKE_SYSTEM_PROCESSOR avr) # Without this flag, CMake is unable to pass the test compilation check set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) # Specify the compiler and linker #set(AVR_MCU atmega328p) # The old Classic #set(AVR_MCU attiny85) # The older ATtiny series, avr25 set(AVR_MCU attiny404) # this is the avrxmega3 series #set(AVR_MCU avr64dd28) # Newer DX series, avrxmega2 # The default frequency of an 328p devboard using the external crystal. #set(F_CPU 16000000UL) set(F_CPU 20000000UL) #set(F_CPU 8000000) #set(F_PER 3333333) add_compile_definitions(F_CPU=${F_CPU}) # add_compile_definitions(MCU=atmega328p) #add_compile_definitions(__AVR_ATmega328P__) add_compile_definitions(__AVR_ATtiny404__) # Set up the programmer for it #set(PROGRAMMER usbasp-clone) #set(PROGRAMMER arduino) set(PROGRAMMER serialupdi) # Set the Port for the programmer set(PORT /dev/ttyUSB0) # Define the toolchain executables set(CMAKE_C_COMPILER avr-gcc) set(CMAKE_CXX_COMPILER avr-g++) set(CMAKE_ASM_COMPILER avr-gcc) set(CMAKE_LINKER avr-ld) set(CMAKE_OBJCOPY avr-objcopy) set(CMAKE_SIZE avr-size) # Define compile options set(CMAKE_C_FLAGS " -Os -mmcu=${AVR_MCU} -DF_CPU=${F_CPU}") set(CMAKE_CXX_FLAGS "-mmcu=${AVR_MCU} -DF_CPU=${F_CPU}") set(CMAKE_EXE_LINKER_FLAGS_INIT "-mmcu=${AVR_MCU}") # Define the archiver and other tools set(CMAKE_AR avr-ar) set(CMAKE_RANLIB avr-ranlib)