1

Well am asking this basically to know if it is possible to create a bootable flash drive that automatically uploads any source code onto the arduino just like creating a bootable flash drive when installing windows operating system on a computer. I will be happy to get some cool responses that would be helpful thanks.

| improve this question | | | | |
3

There is a solution with SD card and SD bootloader. You put a bin file on SD card, insert it into the SD adapter and power up the Arduino. The bootloader loads the bin file to flash memory.

I use 'avr_boot' SD bootloader by Zevero. It reads a file named firmware.bin from SD card if present and loads it into flash.

To generate a bin file for Arduino AVR boards add to platform.txt

recipe.objcopy.bin.pattern="{compiler.path}{compiler.elf2hex.cmd}" -O binary {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.bin"

I use this with the ArduinoOTA library which uploads the bin file from IDE to the SD card over network and then resets the MCU for the bootloader to apply the bin.

btw: the ArduinoOTA library can use the upper half of the flash memory too to store the uploaded bin and then activate a modified Optiboot to copy the bin to run location and reset the MCU.

| improve this answer | | | | |
  • Could you please provide a link were i could get more information about how it can be done with ease or if possible please – Sigma Dec 31 '19 at 8:02
  • @Sigma, sorry, I forgot to link the Zevero bootloader. fixed. the link is in answer. – Juraj Dec 31 '19 at 8:24
1

There is no specific piece of hardware that does what you ask.

There are various options though:

  1. Write a new bootloader that uses the USB Host Shield to load data from a USB MSD device then flash it to the internal flash of the MCU (hard to do if you don't know low-level programming)
  2. Use an embedded Linux computer (Raspberry Pi, etc) to run avrdude and flash your Arduino like it's a connected to a computer
  3. Use an Arduino that has a Linux portion to it (such as the venerable Arduino Yun) or a shield that provides a similar function (Dragino Yun Shield) to flash the AVR chip from Linux
  4. Don't use an Arduino at all, but use an embedded Linux computer for everything.
| improve this answer | | | | |
  • Thanks for the comment though it really seems tough to me its like I have a lot of reading and practice that I have to do. Isn't there any easier way that can by pass Linux some how? – Sigma Dec 30 '19 at 13:15
  • Not without writing lots of software and learning how the USB host shield works, how flashing the chip works, and other such low-level functionality. – Majenko Dec 30 '19 at 13:27

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.