Skip to content

Commit

Permalink
Addressed much larger flash size with avr-gcc v4.9.2. Refactored repo…
Browse files Browse the repository at this point in the history
…rts to save 160KB.

- The newest Arduino IDE 1.6.12 has recently updated to avr-gcc v4.9.2.
Unfortunately, it produces a compiled size almost 0.7KB to 1KB larger
than prior versions! This can easily cause the base build to exceed the
Arduino Duemilanove/Nano flash limit of 30.5KB. The Arduino Uno seems
to be ok still with its 31.5KB flash limit.

- Makefile `-flto` compile flag added to cut down on the horrible flash
size when using the new avr-gcc. (Edit Makefile and remove comment on
COMPILE definition). This brings it in-line with what the IDE produces.

- Functionalized repetitive tasks in report.c to try to reduce overall
flash size. Successfully cut down about 160bytes.

- Removed printFloat_SettingValue() and printFloat_RPMValue()
functions. These aren’t required and can be replaced with a direct call
to printFloat() because they don’t require a unit conversion check.
  • Loading branch information
chamnit committed Sep 25, 2016
1 parent c0f61e4 commit b04faaf
Show file tree
Hide file tree
Showing 6 changed files with 144 additions and 112 deletions.
6 changes: 6 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,14 @@ FUSES = -U hfuse:w:0xd2:m -U lfuse:w:0xff:m
# Tune the lines below only if you know what you are doing:

AVRDUDE = avrdude $(PROGRAMMER) -p $(DEVICE) -B 10 -F

# Compile flags for avr-gcc v4.8.1. Does not produce -flto warnings.
COMPILE = avr-gcc -Wall -Os -DF_CPU=$(CLOCK) -mmcu=$(DEVICE) -I. -ffunction-sections

# Compile flags for avr-gcc v4.9.2 compatible with the IDE. Or if you don't care about the warnings.
# COMPILE = avr-gcc -Wall -Os -DF_CPU=$(CLOCK) -mmcu=$(DEVICE) -I. -ffunction-sections -flto


OBJECTS = $(addprefix $(BUILDDIR)/,$(notdir $(SOURCE:.c=.o)))

# symbolic targets:
Expand Down
18 changes: 18 additions & 0 deletions doc/log/commit_log_v1.1.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
----------------
Date: 2016-09-24
Author: Sonny Jeon
Subject: Serial RX count bug fix. Settings codes CSV. More documentation.

- Reverted back the serial RX count function to how it was. The
variable type was unsigned and cause an integer underflow whenever the
calculation produced a negative number. The old way was the correct way.

- Lots of minor edits to the code CSVs and markdown documents.

- Expanded on explaining feedback messages and startup line execution
feedback.

- Created a new settings codes CSV to help GUIs import the values and
meanings.


----------------
Date: 2016-09-22
Author: Sonny Jeon
Expand Down
2 changes: 1 addition & 1 deletion grbl/grbl.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

// Grbl versioning system
#define GRBL_VERSION "1.1a"
#define GRBL_VERSION_BUILD "20160922"
#define GRBL_VERSION_BUILD "20160925"

// Define standard libraries used by Grbl.
#include <avr/io.h>
Expand Down
5 changes: 0 additions & 5 deletions grbl/print.c
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,6 @@ void printFloat(float n, uint8_t decimal_places)
// in the config.h.
// - CoordValue: Handles all position or coordinate values in inches or mm reporting.
// - RateValue: Handles feed rate and current velocity in inches or mm reporting.
// - SettingValue: Handles all floating point settings values (always in mm.)
void printFloat_CoordValue(float n) {
if (bit_istrue(settings.flags,BITFLAG_REPORT_INCHES)) {
printFloat(n*INCH_PER_MM,N_DECIMAL_COORDVALUE_INCH);
Expand All @@ -190,10 +189,6 @@ void printFloat_RateValue(float n) {
}
}

// void printFloat_SettingValue(float n) { printFloat(n,N_DECIMAL_SETTINGVALUE); }

void printFloat_RPMValue(float n) { printFloat(n,N_DECIMAL_RPMVALUE); }

// Debug tool to print free memory in bytes at the called point.
// NOTE: Keep commented unless using. Part of this function always gets compiled in.
// void printFreeMemory()
Expand Down
4 changes: 0 additions & 4 deletions grbl/print.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,8 @@ void printFloat(float n, uint8_t decimal_places);
// Floating value printing handlers for special variables types used in Grbl.
// - CoordValue: Handles all position or coordinate values in inches or mm reporting.
// - RateValue: Handles feed rate and current velocity in inches or mm reporting.
// - SettingValue: Handles all floating point settings values (always in mm.)
// - RPMValue: Handles spindle RPM values in settings and reports.
void printFloat_CoordValue(float n);
void printFloat_RateValue(float n);
// void printFloat_SettingValue(float n);
void printFloat_RPMValue(float n);

// Debug tool to print free memory in bytes at the called point. Not used otherwise.
void printFreeMemory();
Expand Down
Loading

0 comments on commit b04faaf

Please sign in to comment.