From a9ea586ed44fbbf926658338eaf8eedb5a2fbb4e Mon Sep 17 00:00:00 2001 From: Allen Hill Date: Sun, 10 Sep 2023 16:05:44 -0400 Subject: [PATCH] Setup and bugfix programming with avrdude --- CMakeLists.txt | 3 +++ cmake/avr-gcc-toolchain.cmake | 24 +++++++----------------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b8786b..081dadc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,9 @@ include(CMakeDependentOption) set(WITH_MCU OFF) set(AVR_MCU "attiny3216") +set(AVR_UPLOADTOOL_PORT /dev/ttyUSB1) +set(AVR_PROGRAMMER serialupdi) +set(AVR_UPLOADTOOL_BAUDRATE 230400) set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/avr-gcc-toolchain.cmake") diff --git a/cmake/avr-gcc-toolchain.cmake b/cmake/avr-gcc-toolchain.cmake index aacf56e..450e597 100644 --- a/cmake/avr-gcc-toolchain.cmake +++ b/cmake/avr-gcc-toolchain.cmake @@ -103,7 +103,7 @@ if(NOT AVR_SIZE_ARGS) if(APPLE) set(AVR_SIZE_ARGS -B) else(APPLE) - set(AVR_SIZE_ARGS -C;--mcu=${AVR_MCU}) + set(AVR_SIZE_ARGS -G) endif(APPLE) endif(NOT AVR_SIZE_ARGS) @@ -167,13 +167,12 @@ function(add_avr_executable EXECUTABLE_NAME) endif(NOT ARGN) # set file names - set(elf_file ${EXECUTABLE_NAME}${MCU_TYPE_FOR_FILENAME}.elf) set(hex_file ${EXECUTABLE_NAME}${MCU_TYPE_FOR_FILENAME}.hex) set(lst_file ${EXECUTABLE_NAME}${MCU_TYPE_FOR_FILENAME}.lst) set(map_file ${EXECUTABLE_NAME}${MCU_TYPE_FOR_FILENAME}.map) set(eeprom_image ${EXECUTABLE_NAME}${MCU_TYPE_FOR_FILENAME}-eeprom.hex) - set (${EXECUTABLE_NAME}_ELF_TARGET ${elf_file} PARENT_SCOPE) + set (${EXECUTABLE_NAME}_ELF_TARGET ${EXECUTABLE_NAME} PARENT_SCOPE) set (${EXECUTABLE_NAME}_HEX_TARGET ${hex_file} PARENT_SCOPE) set (${EXECUTABLE_NAME}_LST_TARGET ${lst_file} PARENT_SCOPE) set (${EXECUTABLE_NAME}_MAP_TARGET ${map_file} PARENT_SCOPE) @@ -188,19 +187,10 @@ function(add_avr_executable EXECUTABLE_NAME) LINK_FLAGS "-mmcu=${AVR_MCU} -Wl,--gc-sections -mrelax -Wl,-Map,${map_file}" ) - add_custom_command( - OUTPUT ${hex_file} - COMMAND - ${AVR_OBJCOPY} -j .text -j .data -O ihex ${elf_file} ${hex_file} - COMMAND - ${AVR_SIZE_TOOL} ${AVR_SIZE_ARGS} ${elf_file} - DEPENDS ${EXECUTABLE_NAME} - ) - add_custom_command( OUTPUT ${lst_file} COMMAND - ${AVR_OBJDUMP} -d ${elf_file} > ${lst_file} + ${AVR_OBJDUMP} -d ${EXECUTABLE_NAME} > ${lst_file} DEPENDS ${EXECUTABLE_NAME} ) @@ -210,7 +200,7 @@ function(add_avr_executable EXECUTABLE_NAME) COMMAND ${AVR_OBJCOPY} -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings - -O ihex ${elf_file} ${eeprom_image} + -O ihex ${EXECUTABLE_NAME} ${eeprom_image} DEPENDS ${EXECUTABLE_NAME} ) @@ -225,9 +215,9 @@ function(add_avr_executable EXECUTABLE_NAME) add_custom_target( upload_${EXECUTABLE_NAME} ${AVR_UPLOADTOOL} ${AVR_UPLOADTOOL_BASE_OPTIONS} ${AVR_UPLOADTOOL_OPTIONS} - -U flash:w:${hex_file} + -U flash:w:${EXECUTABLE_NAME}:e -P ${AVR_UPLOADTOOL_PORT} - DEPENDS ${hex_file} + DEPENDS ${EXECUTABLE_NAME} COMMENT "Uploading ${hex_file} to ${AVR_MCU} using ${AVR_PROGRAMMER}" ) @@ -245,7 +235,7 @@ function(add_avr_executable EXECUTABLE_NAME) # disassemble add_custom_target( disassemble_${EXECUTABLE_NAME} - ${AVR_OBJDUMP} -h -S ${elf_file} > ${EXECUTABLE_NAME}.lst + ${AVR_OBJDUMP} -h -S ${EXECUTABLE_NAME} > ${EXECUTABLE_NAME}.lst DEPENDS ${EXECUTABLE_NAME} ) endfunction(add_avr_executable)