Go Down

Topic: It's possible Update atmega328p (old bootloader) (Read 3310 times) previous topic - next topic

ricagome

Hi

It´s posible update the old atmega328p (old bootloader) to the new one bootloader

Thanks

Ricardo

Robin2

You can certainly upload a new bootloader. But you need to have a programmer board - which could be a separate working Uno.

Have a look at this tutorial

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

ricagome


thanks, I read the link, I have a nano with this old bootloader, if I understood correctly I should buy the programming card and update the bootloader

Ricardo

pert

The only significant benefit of switching from the old Nano bootloader to the new Nano bootloader is to fix the bug where the board goes into an endless reset loop after a watchdog reset.

If you're going to burn the bootloader to your Nano you should select Tools > Board > Arduino/Genuino Uno, and then always use the board as an Uno after that. This will free up 1.5 kB of flash memory on your Nano in addition to fixing the watchdog reset bug.

flagtrax

I have 2 Nano (clones) that originally had the old bootloader installed. I was having issues when trying to upload an example sketch for a 2.4" spi display. The compiler kept throwing errors. With my limited knowledge on the subject I thought perhaps it might help to update to the new bootloader. That's where my trouble began. I used an Uno as the programmer, and following instructions here https://www.instructables.com/id/How-To-Burn-a-Bootloader-to-Clone-Arduino-Nano-30/

The upload began then seemed to hang with the (what I call) "traffic" led flashing at a consistently high rate. At a ridiculously long period after I halted the operation. Needless to say the Nano would no longer respond. Nor would it accept a new bootloader. Can anyone help me "restore" this Nano to operation? Thanks for any suggestions.

pert

The compiler kept throwing errors. With my limited knowledge on the subject I thought perhaps it might help to update to the new bootloader.
The bootloader has absolutely nothing to do with compilation. Updating the bootloader will never help with a compilation error. The only error that can be solved by updating the bootloader is an upload error.


, and following instructions here https://www.instructables.com/id/How-To-Burn-a-Bootloader-to-Clone-Arduino-Nano-30/
From the Instructables:
Quote
Now connect the two arduinos together, to do this without female-male jumper cables was time consuming, you have to be VERY CAREFUL and take your time bending the wires, other wise you may short your circuits. ask me first ! In the second picture you can see that first I put the ICSP pins through a piece of paper and then carefully wrapped around them the corresponding wires. Make sure they grab on very tightly, use a small flat head screw driver to bend them.

Wow! Classic Instructables there.

Quote
Nor would it accept a new bootloader.
First of all, make sure your wiring is not a huge mess like in that Instructables.

After that, please do this:
  • (In the Arduino IDE) File > Preferences
  • Check the checkbox next to "Show verbose output during: upload
  • Click "OK"
  • Tools > Burn Bootloader
  • After the Burn Bootloader process fails, you'll see a button on the right side of the orange bar "Copy error messages". Click that button.
  • In a forum reply here, click on the reply field.
  • Click the </> button on the forum toolbar. This will add the forum's code tags markup to your reply.
  • Press "Ctrl + V". This will paste the Burn Bootloader output between the code tags.
  • Move the cursor outside of the code tags before you add any additional text to your reply.

flagtrax

Hi Pert, and thanks for the reply. That instructable says to set the board selection to the target board before burning the bootloader, you didn't mention it, but that's what I did. Let me know if that's incorrect. Thanks again.

Code: [Select]
Arduino: 1.8.7 (Windows 10), Board: "Arduino Nano, ATmega328P (Old Bootloader)"

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM4 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m

avrdude: Version 6.3-20171130
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM4
         Using Programmer              : arduino
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x000000 (retrying)

Error while burning bootloader.
Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0xffffff (probably .avr8x_mega)
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.


I hope I did that right. :smiley-razz:

pert

That instructable says to set the board selection to the target board before burning the bootloader, you didn't mention it, but that's what I did. Let me know if that's incorrect.
That is correct.

Code: [Select]
avrdude: Device signature = 0x000000 (retrying)
This error, and your rapidly blinking LED, could be caused by incorrect wiring. Please double check all your wires to make sure they're correct.

I hope I did that right. :smiley-razz:
Perfect, thanks!

flagtrax

#8
Mar 24, 2019, 03:14 am Last Edit: Mar 24, 2019, 03:17 am by flagtrax
this is the wiring pattern I used:

Nano                   Uno
SPI
Header
   V                       V

pin 1 on clone to D12 on working arduino

pin 2 on clone to 5V on working arduino

pin 3 on clone to D13 on working arduino



pin 4 on clone to D11 on working arduino

pin 5 on clone to D10 on working arduino

pin 6 on clone to GND on working arduino

I need to point out at this point there is no led activity at all. That lasted only until I terminated the attempt to burn the bootloader.

arijitkrhaldar

Hello, would like to shed some light on bootloading. Its not always cool to copy things from Instructables, without understanding. If you understood...cool...if not..please refer below.

If you hold an Arduino UNO, the top side facing you, with the USB and DC jack pointed towards your left, and the ICSP headers to your right...then the ICSP pinout is like this :

MISO        VCC
SCK          MOSI
SS            GND

And if it is an Arduino NANO, then the pinout for the ICSPs towards your right, and USB mini B towards your left is:

GND          SS
MOSI         SCK
VCC           MISO

Now, most Arduino boards have wiring such that D10 or the 10 marked Digital pin is SS. So connect similar pins of your programmer Arduino to your programmed Arduino accordingly, and connect the SS ICSP pin of the board you are programming to D10 of the board you are using to program it. Please note, the SS ICSP pin of the board you are using as a programmer will be left open, only all 6 ICSP pins will be wired on the board you are uploading the bootloader on.

If using any board other than NANO, UNO, etc as programmer, search for its SS pin on the internet, and connect on that pin instead of D10.

Enjoy.

Aiki-bot51

soooo.... i burned the new bootloader to my nano, after that when im uploading a code at the end it says this

{
writing flash (23326 bytes):

Writing | ################################################## | 100% 3.67s

avrdude: 23326 bytes of flash written
avrdude: verifying flash memory against C:\Users\####~1\AppData\Local\Temp\arduino_build_630200/WriteInstinct.ino.hex:
avrdude: load data flash data from input file C:\Users\####~1\AppData\Local\Temp\arduino_build_630200/WriteInstinct.ino.hex:
avrdude: input file C:\Users\BADARS~1\AppData\Local\Temp\arduino_build_630200/WriteInstinct.ino.hex contains 23326 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 2.86s

avrdude: verifying ...
avrdude: 23326 bytes of flash verified

avrdude done.  Thank you.
}

it uploaded the code but why does it does that???

and i burned the new nano bootloader, but should i burn an uno bootloader?
i have a pro micro, and it uses arduino leonardo's bootloader, can i burn a pro mini's bootloader to it?

pert

why does it does that???
It's a verification process. It checks that the data in the microcontroller's flash memory matches that in the .hex file you uploaded. You can disable this in File > Preferences > Verify code after upload. That will make the upload process slightly faster but I think it's worth the couple extra seconds to make sure there was no problem. Imagine how much confusion that could cause if your program wasn't working correctly because it was corrupted during the upload, but you assumed the problem was caused by a bug in your code!

should i burn an uno bootloader?
They're both the same bootloaders. The difference is that the new Nano bootloader configuration unnecessarily still reserves 2 kB of flash memory for the bootloader, even though the bootloader only requires 0.5 kB boot section. So by burning the Uno bootloader you free up 1.5 kB of precious flash memory with no drawbacks!. If you do that, remember to select Tools > Board > Arduino/Genuino Uno when you use your Nano from then on.

i have a pro micro, and it uses arduino leonardo's bootloader, can i burn a pro mini's bootloader to it?
If you truly meant to say "a pro mini's bootloader", then the answer is no. The Pro Mini uses a different microcontroller (ATmega328P) from the Pro Micro (ATmega32U4) and you can't use the Pro Mini bootloader on a Pro Micro. If you actually intended to say "a pro micro's bootloader", then yes you can do that, but there's no benefit to it.

Go Up