What resides in top of Progam Memory?

ok thanks for those links.

But before I do that I should at least check my current optiboot version. So yet another question! How do I do that ?

Mr. WestfW comes through once again for you!

https://github.com/WestfW/fusebytes

:) his name seems to pop up everywhere :)

cheers

hmmm. downloaded fusebytes.pde and cpuname.h, put them in a directory under sketches named "fusebytes" started up IDE 1.0

But it compiles with heaps of errors, and the code is nothing like Arduion code, rather HTML. I'm obviously doing something majorly wrong ??

On the Github click "downloads" at the far right, then click "download as zip". Open that Zip file and extract the fusebytes.pde and cpuname.h files to a folder called "fusebytes".

I just tested it on IDE 1.0 on my Mac to make sure this works; it compiled without errors.

thanks Chris, here's my report, but the last line only deepens the mystery ??

Compiled for ATmega328P No Serial Number

Fuse bits (L/H/E): FF DE FD Lock bits: CF Signature: 1E 95 F (ATmega328P) Oscal: BC

Fuse Low = 11111111 (FF) ||||++++___Low Power Crystal 8 - 16MHz ||++____Start Up Time=11 |+______Clock Output Disabled +__________(no divide)

Fuse High = 11011110 (DE) |||||||+___Reset to Bootstrap |||||++_256 words (512 bytes) ||||+___EEPROM Erased on chip erase |||+____Watchdog programmable ||+_____ISP programming enabled |+______DebugWire off +__________RST enabled

Fuse Extended = 11111101 (FD) |||||+++______Brownout at 2.7V

Lock Bits = 11001111 (CF) ||||||++___Read/Write to everywhere ||||++__R/W Application ||++_______No Write to Boot, no read from App

Bootloader at 0x7E00 is not readable

What kind of Arduino board do you have?

it's a USBdroid from Freetronics: http://www.freetronics.com/products/usbdroid

I've got a genuine brand new Uno here that I thought I'd try fusebytes on to compare, but when I connected it to my computer windows fails to load a USB driver for it. Stand by ....!

well my standard Uno gives similar / same report for fusebytes :

Compiled for ATmega328P
No Serial Number

Fuse bits (L/H/E): FF D6 FD
Lock bits: CF
Signature: 1E 95 F (ATmega328P)
Oscal: A2

Fuse Low = 11111111 (FF)
||||++++______Low Power Crystal 8 - 16MHz
||++_________Start Up Time=11
|+Clock Output Disabled
+
(no divide)

Fuse High = 11010110 (D6)
|||||||+______Reset to Bootstrap
|||||++_______256 words (512 bytes)
||||+_________EEPROM Preserved on chip erase
|||+__________Watchdog programmable
||+___________ISP programming enabled
|+____________DebugWire off
+_____________RST enabled

Fuse Extended = 11111101 (FD)
|||||+++______Brownout at 2.7V

Lock Bits = 11001111 (CF)
||||||++______Read/Write to everywhere
||||++________R/W Application
||++__________No Write to Boot, no read from App

Bootloader at 0x7E00 is not readable

My guess is your boards are running an older version of the bootloader; I think fusebytes will only report the version for optiboot itself (there's no universally-agreed way to store "bootloader version" across all versions).

In the old days the Arduino team had their version of the bootloader (that was either 4K or 2K...can't remember), AdaFruit had theirs, SparkFun had theirs, etc. WestfW came alone and optimized optiboot down to 512 bytes (the smallest size possible for a bootloader); now everybody's migrated from their own versions to this one.

Since your original problem was you're running out of flash around 30K you've probably got one of the older, larger bootloaders.

The good news is Optiboot will work just fine on older boards. I flashed the chips in my Duemilanove and Nano to Optiboot many months ago now; the only change I had to make was selecting "Uno" as a board in the IDE instead of "Duemilanove".

[edit - changed 'optiloader' in last paragraph to 'optiboot'....it's getting late...]

yes I think that's the best option, although I only purchased the Uno recently. I'll give it a go. Although do you think it's possible the USBdroid needs a unique bootloader ? ... then I may have to reload that version later. hmmm ... thinking, thinking

More than you want to know:
The details of the 28k problem are here: http://code.google.com/p/arduino/issues/detail?id=380 and http://code.google.com/p/optiboot/issues/detail?id=23

fusebytes will only report the version for optiboot itself (there’s no universally-agreed way to store “bootloader version” across all versions).

In order for “Fusebytes” to report the optiboot version number, you need to have both a version of optiboot that CONTAINS a version number, AND a slightly changed fuse configuration that allows the sketch to read that version. This change (https://github.com/WestfW/Arduino/commit/39a496616f241a3908d7821dcb15520f16ecd871 ) to the fuses was rejected by the Arduino team (nervous about changing the fuse bytes!), and was made somewhat unnecessary by https://github.com/WestfW/Arduino/commit/7b1ee0f1b0192143fffbbed66dc046b6568f4386 , which lets AVRDUDE see the correct version number.

If you run your sketch upload in verbose mode, somewhere within the output (use a short sketch) should be a report of the Firmware Version:

avrdude: Recv: . [03] 
avrdude: Recv: . [10] 
         Hardware Version: 3
         Firmware Version: 4.4
avrdude: Send: A [41] . [84]   [20]

This will show “3.3” for the old production version of optiboot (with the 28k bug), and “4.4” for the new production version of optiboot (with “most” bugs fixed.) It’s slightly possible for an Arduino to be running a bootloader with the 28k fix and still be telling avrdude that it’s running 3.3, if someone installed optiboot from the optiboot project source code, or from my Arduino fork, before that second commit was added (the 28k bug was actually fixed by the original optiboot author, JUST after the arduino team pulled the version they ended up using…)

You'll probably want to contact the manufacturer directly to make sure, but I don't see any reason why not. I don't see anything in the USBdroid that would require a custom bootloader. It looks like there's a lot more circuitry for all the fancy stuff it does, but the ATMega328 portion seems to be pretty standard (USB IO on pins 0 & 1, LED on pin 13, etc.).

great info thanks westfw I'll study that in detail over weekend.

Freetronics have advised "The bootloader installed on the USBDroid is the Optiboot bootloader used on the Uno, but with our USB PID/VID." I've asked for version number, but it may take a while to get that response.

So how do I switch upload mode to "verbose" so I can see bootloader version?

So how do I switch upload mode to “verbose” so I can see bootloader version?

In 1.0, there’s a checkbox in “preferences”
In 0023 and earlier, hold “shift” when you click the upload button.

well, well .... it's reporting:

avrdude: Recv: . [10] Hardware Version: 3 Firmware Version: 3.3

and I see what you mean about using a small sketch. I blindly ignored this advice and compiled my 27,600 bytes sketch, which promptly spewed out so much output in verbose mode it would probably have filled 200 printed pages. Trying to find the above text in so much ascii without a search function is not a good idea :blush: but I did eventually run a miniature sketch and found it quite easily.

so ... now I've gotta learn how to upgrade the boot loader to 4.4. somehow I think I'm in the right forum for that question.

westfw:
It’s slightly possible for an Arduino to be running a bootloader with the 28k fix and still be telling avrdude that it’s running 3.3 …

should I check for this possibility in my arduino now, or just “go the whole hog” and ugrade to 4.4 ASAP ?