Nuovi sviluppi IDE 1.8.x

Ho visto che per chi ha Windows10 è uscita l'app sullo store.
(Aprite lo store e cercate Arduino IDE).
E' ufficiale, prodotta da Arduino LLC.

Qualcuno l'ha provata?
Essendo app, si aggiorna automaticamente?

... tranquillo, su win10 tutto si aggiorna automaticamente senza mai chiedere il permesso dell'utente ...

(... sara' per quello che gli ultimi 7 NB che ho riparato questo mese erano tutti win10 con l'utente spu**anato dal solito aggiornamento automatico bacato di melma in perfetto stile micro$oft ? ... :stuck_out_tongue: :stuck_out_tongue: :P)

io sono allergico agli aggiornamenti automatici....
Saro paranoico ma voglio sapere che aggiorna.... e magari perchè.

zoomx:
Non è che l'acquisto da parte di Microchip abbia sconvolto un po' l'organizzazione?

Tutto può essere...

paulus1969:
Ho visto che per chi ha Windows10 è uscita l'app sullo store.
(Aprite lo store e cercate Arduino IDE).
E' ufficiale, prodotta da Arduino LLC.

Qualcuno l'ha provata?
Essendo app, si aggiorna automaticamente?

Notizia interessante, avendo win10 potrei provarla.

C'è anche una PR per qualche problemino col Windows Store (Updates for Windows Store App by cmaglie · Pull Request #5506 · arduino/Arduino · GitHub)

Riapro il problema che avevo segnalato in passato QUI con un aggiornamento ...

... facendo le prove con Arduino eravamo giunti alla conclusione che fosse un mio problema, ma ... le cose NON stanno così, c'è qualche cosa introdotta dalla 1.6.11 ed ancora con la 1.6.12 che NON fa funzionare come si deve il WatchDog, solo che ... NON ce se ne può accorgere se si usano schede con sopra il Bootloader e si carica il codice tramite esso !

Semplice programma di test caricato su un ATmega328P standalone su breadboard, senza quarzo a 8MHz, con una resistenza e il LED sul pin 19 (D13). FUSE: E2-DF-FF.

#include <stdint.h>
#include <avr/wdt.h>

uint8_t mcusr_mirror __attribute__ ((section (".noinit")));

void get_mcusr(void) __attribute__((naked)) __attribute__((section(".init3")));

void get_mcusr(void) {
  mcusr_mirror = MCUSR;
  MCUSR = 0;
  wdt_disable();
}

void setup() {
  // put your setup code here, to run once:
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
  delay(1500);
  //
  for (byte i = 0; i < 5; i++) {
    digitalWrite(13, HIGH);
    delay(250);
    digitalWrite(13, LOW);
    delay(250);
  }
  //
  wdt_enable(WDTO_8S);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}

... compilatelo con la 1.6.12 e caricatelo (ovviamente usando un programmatore ISP, io uso AVRISP mkii) ... vedrete che parte e, passati i dovuti secondi, al riavvio da WD, si blocca con il LED spento.

Scaricate la 1.6.9, NON effettuate alcun aggiornamento anche se ve lo segnala, compilate e caricate sempre tramite programmatore ... FUNZIONA regolarmente !

Qualcuno sa spiegarmi la cosa ? Commetto qualche sbaglio io ? Perché con la 1.6.9 funziona come previsto e con la 1.6.12 NO ?

Guglielmo

Bella questa cosa, tocca andare a vedere il codice assembly generato dai due IDE per capire dove sta l'impiccio.

E aprire banalmente un issue ad Arduino e/o a Optiboot?

SukkoPera:
E aprire banalmente un issue ad Arduino e/o a Optiboot?

Con Optiboot funziona !
È il codice pulito, caricato su uno standalone senza nulla che si comporta differentemente ... ::slight_smile:

Guglielmo

astrobeed:
Bella questa cosa, tocca andare a vedere il codice assembly generato dai due IDE per capire dove sta l'impiccio.

Direi che generano due cose completamete diverse ... :o

Guglielmo

TestWDT.1.6.9.txt (18.1 KB)

TestWDT.1.6.12.txt (15.5 KB)

Ah, questo è curioso. Hai provato a usare .init1 invece di .init3?

SukkoPera:
Ah, questo è curioso. Hai provato a usare .init1 invece di .init3?

Quel codice è specificato proprio nella AVR libc, in <avr/wdt.h> anche nelle pagine Atmel ::slight_smile:

Guglielmo

P.S.: Hai visto il mio messaggio #1866 ?

L'avevo visto ma non avevo notato gli attachment. L'assurdo è che nel codice generato dal .12 la funzione get_mcusrv() non esiste proprio!

In particolare, l'istruzione che azzera MCUSR (out 0x34, r1) non c'è da nessuna parte :o. Ottimizzazione troppo spinta? :smiley:

SukkoPera:
... Ottimizzazione troppo spinta? :smiley:

Ho idea ...
Non vedendola chiamata (... e grazie, è una init3) ... credo che la elimini proprio ... ::slight_smile:

Guglielmo

Per inciso, un'altra cosa che ho notato nelle ultime release è che non funziona più la definizione di una variabile globale di tipo register:

register uint8_t antani asm ("r17");

GCC si lamenta di qualcosa tipo che questa cosa non può essere fatta dopo una funzione. Al momento non ricordo il messaggio preciso e non posso provare.

Cercando un po', credo di aver capito che è un bug/feature di GCC che, quando si usa l'ottimizzazione per minimizzare le dimensioni dell'eseguibile (-Os), non linka gli oggetti con attribute ((section(...))), pare a causa della nuova LTO (Link-Time Optimization), che in effetti ha portato al risparmio di un sacco di spazio in molti miei sketch.

C'è già un issue in merito, originariamente aperto su OptiBoot, quindi spostato su Arduino e ora forwardato su GCC: Compiler optimization fails to generate code for code with section attribute. · Issue #5346 · arduino/Arduino · GitHub.

La soluzione temporanea (usata ad esempio qua) dovrebbe essere di aggiungere

__attribute__((used))

a get_mcusr(), riesci a provare modificando il relativo .h?

SukkoPera:
La soluzione temporanea (usata ad esempio qua) dovrebbe essere di aggiungere

__attribute__((used))

a get_mcusr(), riesci a provare modificando il relativo .h?

.... questa sera non faccio a tempo, ma domani provo di sicuro :wink:

Guglielmo

SukkoPera:
La soluzione temporanea (usata ad esempio qua) dovrebbe essere di aggiungere

__attribute__((used))

a get_mcusr(), riesci a provare modificando il relativo .h?

.... questa sera non faccio a tempo, ma domani provo di sicuro :wink:

Al volo ho solo fatto la compilazione e ... mi sembra che questa volta la get_mcusr() ci sia :wink:

Guglielmo

TestWDT.ino.txt (15.9 KB)

Sembra OK!