setup cmake for avr
This commit is contained in:
38
CMakeLists.txt
Normal file
38
CMakeLists.txt
Normal file
@@ -0,0 +1,38 @@
|
||||
cmake_minimum_required(VERSION 3.15)
|
||||
|
||||
# Project name and version
|
||||
project(tool_probe VERSION 1.0)
|
||||
|
||||
|
||||
# enable_language(C ASM)
|
||||
|
||||
# toolchain file for AVR
|
||||
# set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/avr-gcc-toolchain.cmake)
|
||||
|
||||
# Set executable name
|
||||
add_executable(${PROJECT_NAME})
|
||||
|
||||
# generate hex file
|
||||
add_custom_command(
|
||||
TARGET ${PROJECT_NAME} POST_BUILD
|
||||
COMMAND avr-objcopy -O ihex -R .eeprom ${PROJECT_NAME}.elf ${PROJECT_NAME}.hex
|
||||
COMMAND avr-size ${PROJECT_NAME}.elf
|
||||
COMMENT "Generating HEX file"
|
||||
)
|
||||
|
||||
# add custom target for uploading
|
||||
add_custom_target(flash
|
||||
COMMAND avrdude -p ${AVR_MCU} -c ${AVR_PROGRAMMER} -U flash:w:${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.hex:i
|
||||
DEPENDS ${PROJECT_NAME}
|
||||
COMMENT "Uploading HEX file to microcontroller"
|
||||
)
|
||||
|
||||
# Link directories setup
|
||||
target_link_directories(${PROJECT_NAME} PRIVATE
|
||||
src
|
||||
)
|
||||
|
||||
# Add sources to executable
|
||||
target_sources(${PROJECT_NAME} PRIVATE
|
||||
src/main.c
|
||||
)
|
||||
26
CMakePresets.json
Normal file
26
CMakePresets.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"version": 3,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "default",
|
||||
"hidden": true,
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/build/${presetName}",
|
||||
"toolchainFile": "${sourceDir}/avr-gcc-toolchain.cmake",
|
||||
"cacheVariables": {}
|
||||
},
|
||||
{
|
||||
"name": "Release",
|
||||
"inherits": "default",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
}
|
||||
],
|
||||
"buildPresets": [
|
||||
{
|
||||
"name": "Release",
|
||||
"configurePreset": "Release"
|
||||
}
|
||||
]
|
||||
}
|
||||
30
avr-gcc-toolchain.cmake
Normal file
30
avr-gcc-toolchain.cmake
Normal file
@@ -0,0 +1,30 @@
|
||||
# CMake toolchain file for AVR microcontrollers
|
||||
set(CMAKE_SYSTEM_NAME Generic)
|
||||
set(CMAKE_SYSTEM_PROCESSOR avr)
|
||||
|
||||
set(AVR_MCU "ATtiny24")
|
||||
set(AVR_PROGRAMMER "usbasp")
|
||||
|
||||
# compiler and linker settings
|
||||
set(CMAKE_C_COMPILER avr-gcc)
|
||||
set(CMAKE_CXX_COMPILER avr-g++)
|
||||
set(CMAKE_OBJCOPY avr-objcopy)
|
||||
set(CMAKE_SIZE_UTIL avr-size)
|
||||
|
||||
set(CMAKE_EXECUTABLE_SUFFIX_ASM ".elf")
|
||||
set(CMAKE_EXECUTABLE_SUFFIX_C ".elf")
|
||||
set(CMAKE_EXECUTABLE_SUFFIX_CXX ".elf")
|
||||
|
||||
# compiler flags
|
||||
# set(CMAKE_C_FLAGS "-mmcu=${AVR_MCU} -Wall -Os" CACHE STRING "")
|
||||
set(CMAKE_C_FLAGS "-mmcu=${AVR_MCU} -Wall -Os -DF_CPU=8000000UL" CACHE STRING "")
|
||||
|
||||
# compiler flags
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-mmcu=${AVR_MCU}" CACHE STRING "")
|
||||
|
||||
#
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
|
||||
####
|
||||
|
||||
|
||||
11
src/main.c
Normal file
11
src/main.c
Normal file
@@ -0,0 +1,11 @@
|
||||
#include <avr/io.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
// Main loop
|
||||
while (1)
|
||||
{
|
||||
// Do nothing
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user