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