14

Is it possible to upgrade the firmware on an Arduino so that it can do more things such as change undervolting/ overvolting in order to provide more processing power. To do this you would have to most likely re flash the chip itself, so how would that be accomplished?

7
  • 2
    Most new functionality is provided by libraries and programming. What kind of "more things" are you talking about?
    – TheDoctor
    Feb 11, 2014 at 23:12
  • What TheDoctor said, what you mean by more things? Also, what are you referring to by "firmware"? The software/OS's onboard?
    – hichris123
    Feb 11, 2014 at 23:30
  • Should I just delete the question
    – JVarhol
    Feb 11, 2014 at 23:31
  • @JVarhol If you can make it clearer, nah, keep it. Just explain to us what exactly you're thinking of...
    – hichris123
    Feb 11, 2014 at 23:32
  • I know you can install new firmware on the USB-serial chip so it can emulate a keyboard
    – TheDoctor
    Feb 11, 2014 at 23:52

2 Answers 2

8

To answer the aspect of your question regarding the "firmware" on the ATmega328p MCU used in most of the Arduino boards:

There is no firmware on the ATmega at all aside from the bootloader. The programs you write are running directly on the hardware.

There are certain "fuse" settings which are set with a ISP programmer. However, there are only 24 of them (three bytes), and they largely relate to low-level configuration, and are not what I think you're asking:
enter image description here

There is also the Bootloader, which is a small program that sits in a separate segment of the MCU's program memory and allows it to update itself at startup (which is how all arduinos are programmed). However, it only runs for a short period of time at startup, and is completely removed from memory after the MCU has jumped to the main program.

Lastly, there are auxiliary MCUs (ATmega16U2/8U2) on most arduino boards that are used as USB-serial interfaces, that can be updated to behave differently (e.g. emulate a keyboard/mouse), but again, this isn't actually a change to the core processor, so whether it counts as "installing a different firmware" depends on how you define the arduino.

Really, I'd strongly reccomend reading the ATmega328P datasheet. This is the documentation for the MCU that basically forms the "Arduino". It should address what seems to be misconceptions.

6

Note the below chart, in regard to your under/over volting the device for different F_CPU, indicates the relationship. As a result you find most Arduino's run at 5V and a clock rate of 16MHz. While there are some 3.3V variants that run at 8MHz.

Freq vs Vcc

However, the core library provided with the IDE typically has specific #if's for both 8 and 16 MHz F_CPU speeds, not using a formula in most places.

Hence it is possible to do what you ask. However, you will find the core library limitations affecting. Tipping the cost vs benefit ratio, to that of the very intent. And then likely one would leave the Stock IDE and core libraries to a more makefile method.

4
  • Apparently it can be overclocked to 20 mHz
    – TheDoctor
    Feb 12, 2014 at 4:56
  • @TheDoctor - that's not overclocking. The ATmega328p is rated to 20 Mhz. Arduinos are actually underclocked to 16 Mhz. Feb 12, 2014 at 6:50
  • @FakeName yes, I meant that you can modify an Arduino board to have the nessecary resonator to tun at 20 mHz
    – TheDoctor
    Feb 12, 2014 at 13:50
  • Oh, another side-note. You can generally exceed the safe-operating-area without major issues. I have a number of boards running 16 Mhz with 3.3V rails without issues. They may have stability issues at extreme temperatures, but it seems to work mostly fine at room-temperature. Feb 26, 2014 at 6:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.