# HG changeset patch # User Jacob Alexander # Date 1397891428 25200 # Node ID 15814bf7b0cc33cfdb0bc2120baae6772aac8bd5 # Parent 95da03b438603604b77f1ade57236ea4d8762b3f Adding chip usage display after build completion. - Uses an internal database of microcontroller sizes diff -r 95da03b43860 -r 15814bf7b0cc Lib/CMake/arm.cmake --- a/Lib/CMake/arm.cmake Fri Apr 18 22:57:14 2014 -0700 +++ b/Lib/CMake/arm.cmake Sat Apr 19 00:10:28 2014 -0700 @@ -33,6 +33,23 @@ set( MCU "${CHIP}" ) # For loading script compatibility +#| Chip Size Database +#| Teensy 3.0 +if ( "${CHIP}" MATCHES "mk20dx128" ) + set( SIZE_RAM 16384 ) + set( SIZE_FLASH 131072 ) + +#| Teensy 3.1 +elseif ( "${CHIP}" MATCHES "mk20dx256" ) + set( SIZE_RAM 65536 ) + set( SIZE_FLASH 262144 ) + +#| Unknown ARM +else () + message( AUTHOR_WARNING "CHIP: ${CHIP} - Unknown ARM microcontroller" ) +endif () + + #| Chip Base Type #| Automatically chosed based on the chip name. if ( "${CHIP}" MATCHES "^mk20dx.*$" ) diff -r 95da03b43860 -r 15814bf7b0cc Lib/CMake/avr.cmake --- a/Lib/CMake/avr.cmake Fri Apr 18 22:57:14 2014 -0700 +++ b/Lib/CMake/avr.cmake Sat Apr 19 00:10:28 2014 -0700 @@ -36,6 +36,33 @@ message( "${MCU}" ) +#| Chip Size Database +#| Teensy 1.0 +if ( "${CHIP}" MATCHES "at90usb162" ) + set( SIZE_RAM 512 ) + set( SIZE_FLASH 15872 ) + +#| Teensy 2.0 +elseif ( "${CHIP}" MATCHES "atmega32u4" ) + set( SIZE_RAM 2560 ) + set( SIZE_FLASH 32256 ) + +#| Teensy++ 1.0 +elseif ( "${CHIP}" MATCHES "at90usb646" ) + set( SIZE_RAM 4096 ) + set( SIZE_FLASH 64512 ) + +#| Teensy++ 2.0 +elseif ( "${CHIP}" MATCHES "at90usb1286" ) + set( SIZE_RAM 8192 ) + set( SIZE_FLASH 130048 ) + +#| Unknown AVR +else () + message( AUTHOR_WARNING "CHIP: ${CHIP} - Unknown AVR microcontroller" ) +endif () + + #| Extra Compiler Sources #| Mostly for convenience functions like interrupt handlers set( COMPILER_SRCS diff -r 95da03b43860 -r 15814bf7b0cc Lib/CMake/modules.cmake --- a/Lib/CMake/modules.cmake Fri Apr 18 22:57:14 2014 -0700 +++ b/Lib/CMake/modules.cmake Sat Apr 19 00:10:28 2014 -0700 @@ -67,7 +67,6 @@ - ### # Module Processing # @@ -286,11 +285,11 @@ # #| After Changes Size Information -#| TODO Do lookup on Flash and RAM sizes and do % used add_custom_target( SizeAfter ALL - COMMAND ${CMAKE_SIZE} --target=${FORMAT} ${TARGET_HEX} ${TARGET_ELF} + COMMAND ${CMAKE_SOURCE_DIR}/Lib/CMake/sizeCalculator ${CMAKE_SIZE} ${FORMAT} ${TARGET_ELF} ${SIZE_RAM} " SRAM" + COMMAND ${CMAKE_SOURCE_DIR}/Lib/CMake/sizeCalculator ${CMAKE_SIZE} ${FORMAT} ${TARGET_HEX} ${SIZE_FLASH} "Flash" DEPENDS ${TARGET_ELF} - COMMENT "Size after generation\n\tFlash Usage: data (hex)\n\t RAM Usage: data (elf)" + COMMENT "Chip usage for ${CHIP}" ) diff -r 95da03b43860 -r 15814bf7b0cc Lib/CMake/sizeCalculator --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/CMake/sizeCalculator Sat Apr 19 00:10:28 2014 -0700 @@ -0,0 +1,41 @@ +#!/bin/bash +#| Jacob Alexander 2014 +#| Arg List +#| 1 - size binary (e.g. avr-size) +#| 2 - target binary (e.g. ihex) +#| 3 - binary file (e.g. kiibohd.hex) +#| 4 - total available (flash/ram) in bytes +#| 5 - flash/ram + + +# Looks for the data column, to get the flash/ram used (in bytes) +# --target= | cut -f2 | tail -n 1 +USED=$("$1" --target="$2" "$3" | cut -f2 | tail -n 1) + +# Calculates the total flash/ram used +TOTAL="$4" +PERCENTAGE=$((USED * 100 / TOTAL)) + +# Size Colours +# Red/Flashing - Almost full +if (( PERCENTAGE > 95 )); then + COLOR="\t\033[1;5;31m" +# Red - Getting full +elif (( PERCENTAGE > 90 )); then + COLOR="\t\033[1;31m" + +# Yellow - Starting to fill up +elif (( PERCENTAGE > 50 )); then + COLOR="\t\033[1;33m" + +# Green - Lots of room +else + COLOR="\t\033[1;32m" +fi + +# Displays Results +NAME="$5" +echo -e "\t\033[1m${NAME}\033[m: ${COLOR}${PERCENTAGE}%\033[m ${USED}/${TOTAL}\tbytes" + +exit 0 +