Arduino modules with and without bootloader

Go To Last Post
6 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Goodmorning everyone ,
I was making some considerations on arduino modules which are open source hardware.
In principle everyone could build the same module as Arduino gives designs free of charge on the website.
If someone wants to make a board compatible with the IDE, however, there is the question related to microcontrollers that must be pre-programmed with bootloader.

Here my question, because I was quite experienced with Uno Board with atmega328p, which needs bootloader.

Some of the latest ioT modules (I am refering such as Arduino uno Wifi Rev.2, MKR 1010, NANO BLE) have different microcontroller families such as atmega4809, the D21G18 etc ...
for these modules, making a quick search, it would seem that through the USB port a "programmer" is actually implemented directly on the board and therefore to load the sketches no bootloader is required preloaded on the microcontroller.

It's correct?

 

Basically I'd like to know:

- if these arduino modules need bootloaders or not for use with IDE (Arduino uno Wifi Rev.2, MKR 1010, NANO BLE)

- in general on which arduino boards a bootloader is preloaded and on which there are "virgin" components without any bootloader.

thanks for your attention

 

Andrea B

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

baddy85 wrote:
through the USB port a "programmer" is actually implemented directly on the board and therefore to load the sketches no bootloader is required preloaded on the microcontroller.

It's correct?

Apparently so; eg, https://www.avrfreaks.net/commen...

 

baddy85 wrote:
in general on which arduino boards a bootloader is preloaded and on which there are "virgin" components without any bootloader

You'd need to go to the Arduino site for that

 

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

there is the question related to microcontrollers that must be pre-programmed with bootloader.

I'm not sure why it's an important question, though.  The bootloaders are all Open Source as well, and it would be foolish to build a board-level product without the ability to program the chip via "native" interfaces as well.  In most cases, the microcontrollers are not "pre-programmed" with a bootloader, but loaded with a bootloader after the board is assembled.  (at least, until you hit "large scale" manufacturing.  But still, the "final test" of the board would be likely to include hardware that does native programming.)

 

A third possibility is that the chip uses a bootloader, but the bootloader is included in on-chip ROM (and so is always present.)  I think the SAM3X on the Arduino Due, and most TI and ST ARM chips have this.

 

The ATmega4809-based boards (Nano Every, Uno WiFi 2) do not have a bootloader on the 4809.  Instead, they have a programmer chip (and IT needs to have bootloader and/or firmware.)  The Uno WiFi 2 uses an Atmel mEDBG chip (which is actually an ATmega32u4); I don't know whether you can buy those pre-programmed, or whether they have some other arrangement.  The Nano Every has a SAMD11, and it has both a bootloader and firmware.  However, the MCUDude (MegaCoreX) and Spence Konde (MegaTinyCore) Arduino cores support the use of a bootloader on the Mega0/xTiny chips.

 

The MKR1010 is a SAMD21-based board and has a bootloader.   OTOH, the Arduino Zero, which is also a SAMD21, has an Atmel EDBG chip that does direct programming.

 

The Nano 33 BLE uses a Nordic nRF52840; I'm not very familiar with that, but the datasheets don't mention any specific hardware boot features, so I assume it has a bootloader.  (You could check the start address of compiled sketches.  if they start at larger than the start of flash memory (ie 0x2000 for the SAMD21)

 

The PJRC "Teensy" ARM chips have an interesting strategy where they use an external chip (proprietary) to load a bootloader into the RAM of the ARM chip.  That way the bootloader neither occupies flash space not inserts itself into the USB/Chip path.  (which doesn't work for AVRs, because AVRs can't run code from RAM.)

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

thanks a lot for your notes.

 

Since it is quite news hardware for me, i will explain better the point.

 

- Now i am playing with "Arduino Uno Wifi Rev.2" for testing my application with ArduinoBLE libraries project.
  My second point will be try "MKR1010" (or "NANO 33 BLE") for portable application and smaller shape.

 

- second step is my question since it is open-source hardware:
  "it is possibile to produce by my own the same board for first productions ?" 
  I mean fully compatible hardware functionality and compatible with Arduino IDE for final test and software adjust.
  Eagle files and schematic are provided on the website.
  About bootloaders or init firmwares for all devices on the boards references are not mentioned on the Arduino website,
  or i am no able to get these information (no idea if you can find on Arduino website o where).

  Do you know where to find?
  My point for first evaluation is collect and give instruction and all information for production for electronic
  supplier or SMD supplier for set-up production, including bootloader or init firmware for all devices

 

Thanks a lot for your support!

Andrea B

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Mkr1010 looks like it is based on a esp32 module. This has the bootloader on chip from factory. However you need a usb to serial chip and a couple of mosfets to perform the reset and entry into bootloader mode. I’d suggest you look at the espressif esp32 devkit-c.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

About bootloaders or init firmwares for all devices on the boards references are not mentioned on the Arduino website,
  or i am no able to get these information (no idea if you can find on Arduino website o where).

  Do you know where to find?

 It's all part of the "Arduino IDE" that you download.  Exact locations on your disk depend on OS, how you installed, and which board.

There are "hardware" directories in the install that include bootloaders, firmware, etc.  Almost all in source as well as binary forms.
For example, on my Mac I have (for Uno WiFi 2):

unix> pwd
/Applications/Arduino-1.8.12.app/Contents/Java/portable/packages/arduino/hardware/megaavr/1.8.6
unix> # magic tree printing command, output edited...
   |-bootloaders
   |-cores
   |---arduino
   |-----api
   |---------avr
   |---test
   |-drivers
   |-extras
   |-firmwares
   |---MuxTO
   |-fuses
   |-libraries
   |-scripts
   |-variants
   |---nona4809
   |---uno2018

 

Online, it's all on github:

 

https://github.com/arduino

https://github.com/arduino-libra...

 

Some of the bootloaders have additional sources https://github.com/Optiboot/Opti... or "fixed" versions from Adafruit, Sparkfun, etc.

MANY additional chips and boards have support from 3rd party people.  In general, all on github as well.  There's a "3rd party hardware specification"

This is all documented (probably), although it's not always easy to find.  And it's all frequently discussed over in the Arduino forums.

 

 

  "it is possibile to produce by my own the same board for first productions ?" 

Theoretically, yes.  It is permitted and legal.  The only thing you can't do is infringe on the Arduino trademark by calling your board an "Arduino."

However, for the particular boards you are looking at, I'm not entirely sure that all of the chips and modules used are available to "regular buyers."

In particular I don't know where you can buy an mEDBG chip, or the legal status of making one yourself.

(If I were designing a reduced-cost "production" Uno WiFi 2 clone, I wouldn't be putting an mEDBG chip on it at all...)

 

 

Mkr1010 looks like it is based on a esp32 module.

MKR1010 has a SAMD21 *and* an ESP32 module.  I believe that "normal operation" does not include changing the ESP32 software...