Funzionamento Arduino, bootloader e convertitore seriale

Ciao a tutti, conosco Arduino da tempo ma non sono riuscito a capire ancora alcune cose a livello “teorico” di Arduino.
A cosa serve il bootloader?
Come comunica il microcontrollore con il chip di fianco alla porta USB?
Qual’è il compito di quel circuito di fianco all’ingresso USB e si può programmare?

Grazie a chiunque riesca a rispondere aanche solo a una di queste domande o riesca a suggerirmi qualche post da leggere…

Il bootloader è un codice conservato in una porzione particolare della memoria dell’Atmega (il microcontrollore più grosso che c’è sulla scheda Arduino), non sovrascrivibile con le semplici operazioni di upload di uno sketch, che serve per permettere all’utente di inviare un nuovo programma al chip usando la stessa scheda Arduino come fosse un programmatore di chip.

Il chip piccolino dietro alla porta USB è il chip che funge da comunicatore per permettere al computer di dialogare con il microcontrollore tramite la porta USB.
Sì può programmare: nell’IDE di Arduino esistono i sorgenti del suo firmware.

scusa se ti correggo, l'unico programmabile è quello di arduino UNO e mega 2560 (o la sua sigla che non ricordo, ma l'ultimo per capirci) in quanto l'altro è un semplice chip di conversione seriale FTDI che non permette la programmazione.

la programmazione del chip su arduino UNO comunque è da intendersi che può essere programmato in modo che magari all'usb del pc risulti una scheda audio, o una tastiera, un HID, un mouse, una periferica MIDI, convertendo su segnali seriali inviati dall'atmega che è il cuore di arduino

Parlando genericamente di Arduino, io prendo per scontato che ci si riferisca alla scheda di maggior diffusione attualmente in commercio, quindi ragiono parlando dell'UNO. La tua precisazione è corretta ma anche fabiuz poteva specificare a quale scheda si riferiva :D

Tornando al primo post, non ho precisato come comunicano i vari componenti. Il chip di "servizio" si chiama Atmega8U2 (continuo a dare per scontato che si parli della UNO) e non è altro che un convertitore USB/seriale: i dati arrivano dal PC tramite USB ed il chip li converte in formato seriale spedendoli all'Atmega328 tramite i pin di Arduino D0 e D1. Ovviamente permette anche la funzione inversa, ossia spedisce i dati ricevuti in formato seriale dall'Atmega328 al PC via USB. Se invece l'utente richiede la programmazione dell'Atmega328 tramite l'IDE, il chip invia un segnale di reset al micro per impostarlo in modalità programmazione dopodiché invia i dati del programma e/o del bootloader.

Cercheró di essere piú preciso.

Ciao fabiuz7 L'Arduino UNO, Arduino 2009 hanno come Controller un ATmega328. Nella sua memoria (flash), come in tutti i controller presenti sui diversi Arduini c'é una parte riservata e protetta. Lí c'é il Bootloader. Il Bootloader controlla dopo il reset se c'é la possibilitá di caricare un programma dal computer collegato alla USB. Se non c'é nessun programma da carcare salta al inizio del programma caricato e viene eseguito quello senza ritornare piú al Bootloader.

Nel caso che Tu voglia caricare dall'IDE un programma, l'IDE fa un reset del Arduino e seguendo un protocollo di trasmissione carica i programma. Il bootloader gestisce questo caricamento. Senza Bootloader si dovrebbe usare un programmatore ISP e collegarlo al conettore ICSP presente su arduino. Farlo attraverso l'IDE é piú semplice, basta pigiare un bottone. Alcune cose non si possono fare, ma sono cose che da utilizzatore medio non hai bisogno.

Il controller sul Arduino ha una porta seriale implementata via hardware. Quella é sui PIN 0 e 1. Quei due Pin sono collegato col integrato FT232 (nel caso del Arduino 2009 e tutti gli altri Arduini) oppure con un ATmega8U2 opportnamente programmato (nel caso del Arduino UNO o Arduino Mega 2560) che fa la conversione seriale a USB.

Il ATmega8U2 si potrebbe programmare diversamente (con un programmatore ICSP) ma se lo fai non Ti funzionerá piú il caricamento di programmi sul Atmega 328 e devi farlo con un programmatore ICSP. In teoria potrebbe essere riprogrammato e fungere da HOST per collgare memorie, mouse, tastiere ecc. ma anche dopo 6mesi che é in comercio non ho visto esempi pratici di ció.

Il FT232 non é programmabile e non puó funzionare come USB Host. Percui non si possono collegare memorie o altro al USB.

Ciao Uwe

uwefed: In teoria potrebbe essere riprogrammato e fungere da HOST per collgare memorie, mouse, tastiere ecc.

Non si può fare ne in teoria e tantomeno in pratica perchè l'8u2 dispone esclusivamente di una porta USB di tipo device, e per dirla tutta anche abbastanza limitata come prestazioni se guardiamo l'uso come device USB generico. Quello che si può fare è far vedere al pc un device USB diverso da un dispositivo CDC (seriale virtuale), p.e. si può emulare una tastiera, cioè il pc non vede più Arduino e al suo posto vede una tastiera, ovviamente in questo caso si perde completamente la possibilità di programmare Arduino e di dialogarci tramite seriale.

Grazie mille a tutti. Adesso spero di riuscire a scrivere qualcosa di sensato sulla tesina XD