I had contemplated trying to reprogram the 16U2 but decided to return the board and this raised the question of whether a UNO could program its own 16U2 using the onboard ISP sockets which are separate for the AT328 and 16U2. Of course the 328 would have to be loaded with the correct program and the ISP jumpers would have to be correct etcetera but I am curious it the process has been tried by anyone.
When using the Arduino IDE (version 1.0.2) in "serial monitor" mode
In principle this could probably be done. To program /RESET has to be held low, but as far as I can see the 16U2 has its own reset (net name RESET2). I haven't attempted it myself. You would, of course, not be able to get serial debugging messages out (the USB port) while you were doing it.
All serial monitor does is open up the serial port. That's it.
Yes it is a serial port, and yes the port is simply opened but the question still remains: is what comes out when I type "qwerty" any different when different boards are selected?
"Is there any difference in the data?"
If, for example, one board firmware uses parity bits and another does not use parity bits and one opens the serial port then depending on the board it would/wouldn't need a parity bit. Before you say that the boards do/don't use parity I am merely using the example of a possible difference in the characters of the data stream. If you do not like the parity example use BigEndian and LittleEndian. Again I do not know of any difference so my question remains, if different boards are selected would the data remain the same. To state that the serial port is simply opened does not answer the underlying question: "Is there any difference in the data?" I am not privy to the internal workings of the IDE and what it may or may not do when the different boards are selected and when a serial port is opened but I am loath the assume that there is no difference.