diff --git a/boards.txt b/boards.txt index 88a7143..e65953c 100644 --- a/boards.txt +++ b/boards.txt @@ -1,6 +1,7 @@ ############################################################## uno.name=Arduino Uno +uno.platform=avr uno.upload.protocol=stk500 uno.upload.maximum_size=32256 uno.upload.speed=115200 @@ -19,7 +20,7 @@ uno.build.pins=standard ############################################################## atmega328.name=Arduino Duemilanove or Nano w/ ATmega328 - +atmega328.platform=avr atmega328.upload.protocol=stk500 atmega328.upload.maximum_size=30720 atmega328.upload.speed=57600 @@ -40,7 +41,7 @@ atmega328.build.pins=standard ############################################################## diecimila.name=Arduino Diecimila, Duemilanove, or Nano w/ ATmega168 - +diecimila.platform=avr diecimila.upload.protocol=stk500 diecimila.upload.maximum_size=14336 diecimila.upload.speed=19200 @@ -61,7 +62,7 @@ diecimila.build.pins=standard ############################################################## mega2560.name=Arduino Mega 2560 - +mega2560.platform=avr mega2560.upload.protocol=stk500v2 mega2560.upload.maximum_size=258048 mega2560.upload.speed=115200 @@ -82,7 +83,7 @@ mega2560.build.pins=mega ############################################################## mega.name=Arduino Mega (ATmega1280) - +mega.platform=avr mega.upload.protocol=stk500 mega.upload.maximum_size=126976 mega.upload.speed=57600 @@ -103,7 +104,7 @@ mega.build.pins=mega ############################################################## mini.name=Arduino Mini - +mini.platform=avr mini.upload.protocol=stk500 mini.upload.maximum_size=14336 mini.upload.speed=19200 @@ -124,7 +125,7 @@ mini.build.pins=standard ############################################################## fio.name=Arduino Fio - +fio.platform=avr fio.upload.protocol=stk500 fio.upload.maximum_size=30720 fio.upload.speed=57600 @@ -145,7 +146,7 @@ fio.build.pins=standard ############################################################## bt328.name=Arduino BT w/ ATmega328 - +bt328.platform=avr bt328.upload.protocol=stk500 bt328.upload.maximum_size=28672 bt328.upload.speed=19200 @@ -167,7 +168,7 @@ bt328.build.pins=standard ############################################################## bt.name=Arduino BT w/ ATmega168 - +bt.platform=avr bt.upload.protocol=stk500 bt.upload.maximum_size=14336 bt.upload.speed=19200 @@ -189,7 +190,7 @@ bt.build.pins=standard ############################################################## lilypad328.name=LilyPad Arduino w/ ATmega328 - +lilypad328.platform=avr lilypad328.upload.protocol=stk500 lilypad328.upload.maximum_size=30720 lilypad328.upload.speed=57600 @@ -210,7 +211,7 @@ lilypad328.build.pins=standard ############################################################## lilypad.name=LilyPad Arduino w/ ATmega168 - +lilypad.platform=avr lilypad.upload.protocol=stk500 lilypad.upload.maximum_size=14336 lilypad.upload.speed=19200 @@ -231,7 +232,7 @@ lilypad.build.pins=standard ############################################################## pro5v328.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328 - +pro5v328.platform=avr pro5v328.upload.protocol=stk500 pro5v328.upload.maximum_size=30720 pro5v328.upload.speed=57600 @@ -252,7 +253,7 @@ pro5v328.build.pins=standard ############################################################## pro5v.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega168 - +pro5v.platform=avr pro5v.upload.protocol=stk500 pro5v.upload.maximum_size=14336 pro5v.upload.speed=19200 @@ -273,7 +274,7 @@ pro5v.build.pins=standard ############################################################## pro328.name=Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328 - +pro328.platform=avr pro328.upload.protocol=stk500 pro328.upload.maximum_size=30720 pro328.upload.speed=57600 @@ -294,7 +295,7 @@ pro328.build.pins=standard ############################################################## pro.name=Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168 - +pro.platform=avr pro.upload.protocol=stk500 pro.upload.maximum_size=14336 pro.upload.speed=19200 @@ -315,7 +316,7 @@ pro.build.pins=standard ############################################################## atmega168.name=Arduino NG or older w/ ATmega168 - +atmega168.platform=avr atmega168.upload.protocol=stk500 atmega168.upload.maximum_size=14336 atmega168.upload.speed=19200 @@ -336,7 +337,7 @@ atmega168.build.pins=standard ############################################################## atmega8.name=Arduino NG or older w/ ATmega8 - +atmega8.platform=avr atmega8.upload.protocol=stk500 atmega8.upload.maximum_size=7168 atmega8.upload.speed=19200 diff --git a/cores/arduino/HardwareSerial.cpp b/cores/arduino/HardwareSerial.cpp index d6d7b60..db6b149 100644 --- a/cores/arduino/HardwareSerial.cpp +++ b/cores/arduino/HardwareSerial.cpp @@ -278,6 +278,8 @@ void HardwareSerial::begin(unsigned long baud) use_u2x = false; } #endif + +try_again: if (use_u2x) { *_ucsra = 1 << _u2x; @@ -286,6 +288,12 @@ void HardwareSerial::begin(unsigned long baud) *_ucsra = 0; baud_setting = (F_CPU / 8 / baud - 1) / 2; } + + if ((baud_setting > 4095) && use_u2x) + { + use_u2x = false; + goto try_again; + } // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) *_ubrrh = baud_setting >> 8; diff --git a/platforms.txt b/platforms.txt new file mode 100755 index 0000000..d946b82 --- /dev/null +++ b/platforms.txt @@ -0,0 +1,64 @@ +#########Compiler Recipe################################# +##compile c object files +##Default.recipe, overide if overide exists, these defauls should remain the same, if you need to change them do it as an overide. + +#default.recipe.c.o.pattern={0}{1}|{2}|{3}{4}|-DF_CPU={5}|-D{6}={7}|{8}|{9}|-o|{10} +#default.recipe.cpp.o.pattern={0}{1}|{2}|{3}{4}|-DF_CPU={5}|-D{6}={7}|{8}|{9}|-o|{10} +#default.recipe.ar.pattern={0}{1}|{2}|{3}{4}|{5} +#default.recipe.c.combine.pattern={0}{1}|{2}|{3}{4}|-o|{5}{6}.elf|{7}|{8}|-L{9}|-lm +#default.recipe.objcopy.eep.pattern={0}{1}|{2}|{3}.elf|{4}.eep +#default.recipe.objcopy.hex.pattern={0}{1}|{2}|{3}.elf|{4}.hex + +########avr compile pattern ########## +#avr.recipe.c.o.pattern={0=compiler.path}{1=compiler.c.cmd}{2=compiler.c.flags}{3=compiler.cpudef}{4=build.mcu}-DF_CPU={5=build.f_cpu}-D{7=ARDUINO}={6=Base.REVISION}{7=-I/INCLUDE_PATHS} {8=SOURCE_NAME} -o{9=OBJECT_NAME} +#object name seems to have build path in it. +avr.recipe.c.o.pattern={0}{1}|{2}|{3}{4}|-DF_CPU={5}|-D{6}={7}|{8}|{9}|-o|{10} + + +##compile cc object files +#avr.recipe.cc.o.pattern={0=compiler.path}{1=compiler.cc.cmd}{2=compiler.c.flags}{3=compiler.cpudef}{4=build.mcu}-DF_CPU={5=build.f_cpu}-DARDUINO={6=Base.REVISION}{-7=I/INCLUDE_PATHS} {8=SOURCE_NAME} -o{9=BUILD_PATH}{10=OBJECT_NAME} +avr.recipe.cpp.o.pattern={0}{1}|{2}|{3}{4}|-DF_CPU={5}|-D{6}={7}|{8}|{9}|-o|{10} +##create archives +#avr.recipe.ar.pattern={0=compiler.path}{1=compiler.ar.cmd}{2=compiler.ar.flags}{3=BUILD_PATH}{4=CORE_NAME=core.a}{5=BUILD_PATH}{6=OBJECT_NAME} +avr.recipe.ar.pattern={0}{1}|{2}|{3}{4}|{5} + +##combine gc-sections| archives, and objects +#avr.recipe.c.combine.pattern={0=compiler.path}{1=compiler.c.cmd}{2=compiler.combine.flags}{3=compiler.cpudef}{4=build.mcu} -o {5=BUILD_PATH}{6=SOURCE_NAME}.elf {7=BUILD_PATH}{8=SOURCE_NAME}.o {9=BUILD_PATH}{10=CORE_NAME=core.a} -L{11=BUILD_PATH} -lm +#avr.recipe.c.combine.pattern={0}{1}|{2}|{3}{4}|-o|{5}{6}.elf|{7}{8}|{9}|-L{10}|-lm +avr.recipe.c.combine.pattern={0}{1}|{2}|{3}{4}|-o|{5}{6}.elf|{7}|{8}|-L{9}|-lm + +##create eeprom +#avr.recipe.objcopy.eep.pattern={0=compiler.path}{1=compiler.objcopy.cmd}{2=compiler.objcopy.eep.flags} {3=BUILD_PATH}{4=SOURCE_NAME}.elf {5=BUILD_PATH}{6=SOURCE_NAME}.eep +avr.recipe.objcopy.eep.pattern={0}{1}|{2}|{3}.elf|{4}.eep + +##create hex +#avr.recipe.objcopy.hex.pattern={0=compiler.path}{1=compiler.objcopy.cmd}{2=compiler.objcopy.elf.flags} {3=BUILD_PATH}{4=SOURCE_NAME}.elf {5=BUILD_PATH}{6=SOURCE_NAME}.hex +avr.recipe.objcopy.hex.pattern={0}{1}|{2}|{3}.elf|{4}.hex + + + +######################################################## +avr.name=Arduino +#avr.compiler.path Official default is correct, only need to change this if you want to overide the initial default +#avr.compiler.path={0}/hardware/tools/avr/bin/ +avr.compiler.c.cmd=avr-gcc +avr.compiler.c.flags=|-c|-g|-Os|-w|-ffunction-sections|-fdata-sections +avr.compiler.c.elf.flags=|-Os|-Wl|--gc-sections +avr.compiler.c.elf.cmd=avr-gcc +avr.compiler.S.flags=|-c|-g|-assembler-with-cpp +avr.compiler.cpp.cmd=avr-g++ +avr.compiler.cpp.flags=|-c|-g|-Os|-w|-fno-exceptions|-ffunction-sections|-fdata-sections +avr.compiler.ar.cmd=avr-ar +avr.compiler.ar.flags=rcs +avr.compiler.objcopy.cmd=avr-objcopy +avr.compiler.objcopy.eep.flags=|-O|ihex|-j|.eeprom|--set-section-flags=.eeprom=alloc,load|--no-change-warnings|--change-section-lma|.eeprom=0 +avr.compiler.elf2hex.flags=|-O|ihex|-R|.eeprom +avr.compiler.elf2hex.cmd=avr-objcopy +avr.compiler.ldflags= +avr.compiler.cpudef=-mmcu= +avr.compiler.upload.cmd= +avr.compiler.upload.flags= +avr.compiler.define=-DARDUINO= +avr.library.path=./hardware/arduino/cores/arduino +avr.library.core.path=./libraries +