11

I'm about to work on my very first project using arduino (I'm just about to buy one next week), and one of our professor says that we can only upload a program or sketch in an Arduino Uno Board for approximately 8 times. He also added that if we're using a clone version, it'll can only last for 2 sketch uploads. Is this true or is he bluffing? Thank you in advance.

  • 2
    I've been flashing sketches to one particular Nano multiple times an hour as I build and test and I have been curious about this over the past few days myself. I knew it would be at least in the 100s of times but wasn't sure how many. Thanks for asking. – raddevus Jun 18 '18 at 17:46
  • 9
    Time to question that professor's credibility. The program will be flashed into to the ATMega328P's internal flash memory, and flash will survive a few thousand write cycles. Even more for EEPROM. STMicro quotes "10K to 100K cycles" (st.com/resource/en/application_note/cd00165693.pdf) – Maximilian Gerhardt Jun 18 '18 at 18:46
  • Related: SPIFFS on the 8266 wear-levels, so if you're saving 3KB with 3MB free, you can save 1024X before the first overwrite (in theory, 512X on average w/o block overlap), which means millions of saves. – dandavis Jun 19 '18 at 6:48
  • 4
    @jsotola unless Google shows you this question was already answered on SE, please don't tell users to Google (source: FAQ) – Cephalopod Jun 19 '18 at 7:36
  • 1
    This is the ASE equivalent of fake news. – copper.hat Jun 19 '18 at 12:01
25

He's talking complete and utter gibberish. To quote from the ATMega328P datasheet:

  • High Endurance Non-volatile Memory Segments
    • 32KBytes of In-System Self-Programmable Flash program Memory
    • 1KBytes EEPROM
    • 2KBytes Internal SRAM
    • Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
    • Data Retention: 20 years at 85°C/100 years at 25°C(1)
    • Optional Boot Code Section with Independent Lock Bits
      • In-System Programming by On-chip Boot Program
      • True Read-While-Write Operation
    • Programming Lock for Software Security

So you have at least 10,000 uses out of it before it starts to go flakey.

  • 3
    I would say he has at least 10K uses. – Edgar Bonet Jun 18 '18 at 19:51
  • 3
    The way Flash memory works, as it ages it takes longer for a page to be erased. The 10,000 is the minimum expected number of erase operations on a page before the time taken to erase could start to exceed a pre-defined (manufacturer specified) threshold. So yes, you would expect to get more than that number (it's the minimum guaranteed), or it just take a little longer to erase pages. – Majenko Jun 18 '18 at 19:54
  • 2
    In practice, I was reusing an Arduino Uno and constantly making small tweaks to the code. Uploading again takes long enough that this is not even worth worrying about. You are far more likely to goof up the board in some other manner if you are soldering or bending wires. Also, when doing Arduino... the boards are so crazy cheap (particularly if you can move down to a MiniPro 5V) that the main thing you need to worry about is to just be careful when soldering the sensor/IO stuff. The board is extremely reliable, and you can just replace cheaply if you ever have any doubts about the board. – Rob Jun 19 '18 at 3:33
  • 1
    whenever you get a talk about storage "wearing out", just keep in mind that it's generally this: 1) You have to "stressfully" blast whole areas full of zeroes and then write the ones over that. 2) Solid State storage usually has complex wear-levelling algorithms to minimize the impact of this. 3) It's a cheap Arduino. 4) The language is a subset of C++, so you can mock out a testing framework to fully test before it hits hardware; to limit unnecessary pushing of untested code into the hardware. – Rob Jun 19 '18 at 3:41
  • 1
    here is a simple example of mocking out the board so that you can just unit test it locally under Linux (compiled with GCC), rather than constantly pushing to hardware to test. The basic idea is to make a framework that looks like as much of the Arduino calls as you actually make from your code: github.com/rfielding/octaveRounder/tree/master/test – Rob Jun 19 '18 at 3:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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