I've been reviewing the 8-bit family and the various boards and chip types supported. I'm thinking the Open source-ness could be expanded to cover more chip types as supported replacement parts (why should an Uno be just a 328P when there are other drop-in replacements available?) and that 2 new families could be easily supported, both of which really just support a different number of ports between the 20 of the Uno/Leonardo type and the 70 of the Mega.
My review suggests the number of supported chip types could easily be expanded with just a few additions to the avrdude.conf, adding about 6 types by copying existing types and changing the signature byte & memory size.
Then adding some new board types that will be based on the processor selected.
The family names could be cleaned up to reflect the processor selected.
For example we could have the:
Uno4,8, 88, 168, 328 and Uno4p, 8p, 88p, 168p, 328p in 3.3V/8MHz and 5V/16MHz options.
Lilypad, Diecimla, Duemilanove, Fio, Nano, BT, and Mini's would get programmed as one of these.
Things like external Serial adapters, voltage regulators/selection, are are just different board form factors for the same 20 IO pin chip which the bootloader shouldn't care about.
Expand the pins_arduino.h in each family to make all IO available - so really just use the 22 pins called out by the Fio (I think that's the one that supports A6/A7 of the '328).
Mega640, 1280, 2560, in 3.3V/8MHz and 5V/16MHz options.
Leonardo16 and 32. The Micro would get programmed as one of these. 3.3V & 5V options?
And add 2 new families:
Mighty16, 32, 162, 164a, 164p, 324a, 324p, 324pa, 644, 644p, 1284, and 1284p in 3.3V/8MHz and 5V/16MHz options. All are just memory size variations really of maniacbug's mighty 1284.
Milli64, 128, 1281, 2561 in 3.3V/8MHz and 5V/16MHz options. These would be new with # of less than a Mega but more than the Mighty. I think the Mega could be easily modified to cut out a few pins and end up as this pretty easily.
Expand the Tools:Board selection to cover these.
Tools:Board:Speed/Voltage:Uno/Mega/Leonardo/Milli/Mighty, with the boards above listed under each family so the drop down list doesn't become unwieldy as it does now when Variants are added.
Could even add one selection level - internal/external oscillator with 1/4/8/16 MHz options for lower power situations.
The difference in any family is really just memory size, reflected in the name/signature bytes, with a voltage/speed option.
For example, a Mega168, 168A, and 168V all use the same signature bytes,
while Mega168P, 168PA, 168PV have a different signature byte.
All 20 IO pin parts would use the same bootloader, the fuse bytes would be slightly different for 8 MHZ vs 16 MHZ, and for external/internal oscilator.
Then the number of bootloaders could be cleaned up also, I think to just 1 per family, vs the current 9 for 168s and 5 for '328s for example.
I could do some of these pretty easily:
copy/paste/modify sections of avrdude.conf is straightforward
copy/paste/modify sections of boards.txt is straightforward. New fuse choices a little more invovled, but not much.
Mucking with the menu structure to provide the speed choice/oscilator choice/family choice is beyond me. Adding to boards.txt as is just results in a really long list.
Thoughts?
chip comparison.xls (55.5 KB)