Pages: 1 2 [3] 4 5 6   Go Down
Author Topic: Frontend per avrdude; cerco consigli  (Read 2936 times)
0 Members and 1 Guest are viewing this topic.
0
Online Online
Faraday Member
**
Karma: 24
Posts: 2817
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
1) ti allego un archivio contenente l'output del comando con Arduino UNO/Leonardo/DUE/USBtinyISP (tutto quello che avevo  smiley-wink );

Bello, peccato che non funonzia. L'apertura da questo errore:
gzip: stdin: unexpected end of file
/bin/gtar: Child returned status 1
/bin/gtar: Exiting with failure status due to previous errors
---------------------------------

2) qmake-qt5 non ce l'ho, ho qmake e basta perché sul mio sistema con la comparsa delle Qt5, le vecchie Qt sono state ridenominate Qt4 e tutti i comandi che le usavano ora hanno il suffisso -qt4. Compilando con qmake, non ho warning sul terminale.
Visto che le qt da 3 a 5 possono essere installate insieme, e visto che qt5 sarà la versione di default, quelli di arch linux hanno rimoninato qmake di qt4 e qt3, mentre il comando "qmake" avvia il maker di Qt5.

Quote
3) con la Leonardo ho dei problemi. Ho provato a connetterla, la prima volta me l'ha riconosciuta dandomi la porta a cui era agganciata e la velocità. Poi stavo per cliccare su  "operative mode" ed ho notato che è venuta fuori la scritta "Device not found". Ricollegandolo non me lo riconosce più.

Indagherò. Occhio che la velocità non posso ricavarla interrogando il device con "udev" e quindi, ciò che spunta in merito al baudrate è il dato presente nel file ".xml". Tradotto mi serve anche sapere la velocità standard di ogni arduino board. Per la uno (all rev) o usbserial light dovrebbe essere 115200, per la leonardo e Mega (all versione) non ho idea.
---------------------------------------------------

Quote
4) su schermi con rapporto 16:9 come quelli dei portatili il tuo programma sborda perché è troppo "grosso"  smiley-wink

Si, lo immaginavo e ho già dedicato tempo per ridurre le dimensioni della finestra, ma ho litigato troppo con Qt e i layout che per adesso ne ho abbastanza. Il mio intento prossimo è quello di rendere la finestra ridimensionabile dall'utente, fino a renderla poco usabile ma usabile scrollando. Nota che lo splitter verticale che divide la finestra permette di collassare il pannello sinistro o destro. Appena mi riprendo faccio a botte con Qt con la convinzione di vincere io.

Per il punto 1, prova nuovamente ad allegare, perchè quei dati mi sono molto utili.

Ciao.
Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 313
Posts: 21655
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bello, peccato che non funonzia. L'apertura da questo errore:
Devo aver fatto un po' di casino, te lo rimando... più tardi. Ora non sono al PC fisso, dove ho fatto i test.

Quote
Indagherò. Occhio che la velocità non posso ricavarla interrogando il device con "udev" e quindi, ciò che spunta in merito al baudrate è il dato presente nel file ".xml". Tradotto mi serve anche sapere la velocità standard di ogni arduino board. Per la uno (all rev) o usbserial light dovrebbe essere 115200, per la leonardo e Mega (all versione) non ho idea.
Le velocità sono prefissate nei bootloader e le ritrovi nel file boards.txt (opzione .upload.speed).
Logged


Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 313
Posts: 21655
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il file è danneggiato online quindi immagino che il forum filtri gli archivi .tar.gz.
Te lo riallego in formato ZIP, dovrebbe essere accettato.

* prompt.zip (3.51 KB - downloaded 3 times.)
Logged


0
Online Online
Faraday Member
**
Karma: 24
Posts: 2817
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho dato per scontato che tutti i device enumerati da udev hanno la proprietà ID_SERIAL_SHORT, purtroppo non è così, infatti Leonardo e UsbTiny non ce l'hanno. Quindi devo rivedere un po di cose.

Mentre per Arduino UNO rev1 è necessario aggiungere una voce nel file arduino.xml, in quanto ID_MODEL_ID è uguale a 0001, mentre la UNO rev3 non lo so, penso sia uguale al convertitore usbserial light, ma è da verificare.

Leo la voce nel file la puoi aggiungere tu manualmente così:
Apri il file xml, Hardware/Programmer/arduino.xml con gedit o altro.
Seleziona dalla riga   <id term ="uno">, fino alla prima occorrenza della riga </id>
rimuovi il selezionato e al suo posto incolli il seguente:

Code:
  <id term ="unor3">
    <name>Arduino Uno rev3 ISP</name>
    <dudeid>arduino</dudeid>
    <desc>Arduino Uno board STK500.x</desc>
    <icon></icon>
    <device>
      <SUBSYSTEM>tty</SUBSYSTEM>
      <ID_TYPE>generic</ID_TYPE>
      <ID_USB_DRIVER>cdc_acm</ID_USB_DRIVER>
      <ID_VENDOR_ID>2341</ID_VENDOR_ID>
      <ID_MODEL_ID>003b</ID_MODEL_ID>
      <baudrate>115200</baudrate>
    </device>
  </id>

  <id term ="unor1">
    <name>Arduino Uno ISP</name>
    <dudeid>arduino</dudeid>
    <desc>Arduino Uno board STK500.x</desc>
    <icon></icon>
    <device>
      <SUBSYSTEM>tty</SUBSYSTEM>
      <ID_TYPE>generic</ID_TYPE>
      <ID_USB_DRIVER>cdc_acm</ID_USB_DRIVER>
      <ID_VENDOR_ID>2341</ID_VENDOR_ID>
      <ID_MODEL_ID>0001</ID_MODEL_ID>
      <baudrate>115200</baudrate>
    </device>
  </id>

<id term ="unor3">, dentro gli apici si può scrivere qualunque cosa a piacere, l'importante e che non ci sia più di uno che contenga la stessa cosa, quindi per la UNO rev2 se questa dovesse avere ID_MODEL_ID 0002, id sarebbe simile a <id term ="unor2">.

Sospetto che la UNO rev3 ha un ID_MODEL_ID diverso da questo http://arduino.cc/en/Main/USBSerial

Ok, oggi libero, quindi mi metto a lavoro per sistemare le cose, Grazie per la collaboarazione.

Ciao.




Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 313
Posts: 21655
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie per la collaboarazione.
Figurati, è un piacere  smiley-wink
Logged


0
Online Online
Faraday Member
**
Karma: 24
Posts: 2817
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nel repo c'è aggionamento sul ramo master, per cui dovresti fare:

Entrare nella dir del repo locale di avrdudequi:
git checkout master
git pull

cd avrdudequi
make clean
qmake-qt4
make
./avrdudequi

L'usbtiny dovrebbe ora vederelo e anche Leonardo, ma per la unor1 ancora no.

Ciao.
Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 313
Posts: 21655
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Con la Leonardo ci sono sempre problemi.
Apro Avrdudequi, collego la Leonardo e non la trova in automatico. Apro il menu e la seleziono manualmente.
Mi compaiono per mezzo secondo le voci relative alla scheda, poi sparisce tutto e torna la scritta "Device not found".

Anche l'USBtinyISP non mi viene riconosciuto in automatico. Devo selezionarlo dal menu, dopo di che compaiono le seguenti voci:

Code:
Programmer name: USBtiny
Device name: 4-2
Baudrate:


Seleziono come MCU l'Atmega328P, vado in Operative Mode, scelgo "Operates on the fuses" e do Read. Ricevo:

Code:
Run: avrdude -q -u -p m328p -c usbtiny -P  -U lfuse:r:-:h -U hfuse:r:-:h -U efuse:r:-:h

avrdude: no port has been specified on the command line or the config file
         Specify a port using the -P option and try again

The process avrdude exit with Exit code: 1 Exit status: 0
Logged


0
Online Online
Faraday Member
**
Karma: 24
Posts: 2817
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok e tutto normale tranne per la Leonardo. Se hai aggiornato il repo in mattinata la tua uno dovrebbe funzionare, se è così dovrebbero comparire la Uno rev1 rev2 e rev3, che usano un VID rispettivamente 0001, 0002, 0003, mentre usb2serial light adapter ha VID 003b. La mega VID0010.

Al momento la selezione automatica del device non è prevista, devi selezionare il programmatore, se il programma trova almeno un device adatto ne visualizza alcune info, se ne trova più di uno appare una dialog, preso il device viene attivato il monitor di device per ascoltare la rimozione, difatti rimuovendolo la combobox dovrebbe mostrare "no programmer".

L'usbtiny ora viene riconosciuto, ma manca la gestione personalizzata. Ad es con avrisp mkii c'è la possibilità di gestire il bitclock, per usbtiny non ho idea se ci sono delle opzioni speciali da gestire, di sicuro il baudrate non è previsto perchè avrdude dialoga grazie alla libreria libusb direttamente in "usbese".

Prova la uno, ma seleziona il 644 e l'unico completo, se non c'è l'hai vai con il 328 ma non ho idea se funziona, la gui del 328 è vecchia di 6 mesi forse più.

Per la due, conviene creare la voce? cioè avrdude dialoga con la due tranquillamente?
Per la due c'è arduino ISP?

Ciao.
Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 313
Posts: 21655
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok e tutto normale tranne per la Leonardo. Se hai aggiornato il repo in mattinata la tua uno dovrebbe funzionare, se è così dovrebbero comparire la Uno rev1 rev2 e rev3, che usano un VID rispettivamente 0001, 0002, 0003, mentre usb2serial light adapter ha VID 003b. La mega VID0010.

Al momento la selezione automatica del device non è prevista, devi selezionare il programmatore, se il programma trova almeno un device adatto ne visualizza alcune info, se ne trova più di uno appare una dialog, preso il device viene attivato il monitor di device per ascoltare la rimozione, difatti rimuovendolo la combobox dovrebbe mostrare "no programmer".

L'usbtiny ora viene riconosciuto, ma manca la gestione personalizzata. Ad es con avrisp mkii c'è la possibilità di gestire il bitclock, per usbtiny non ho idea se ci sono delle opzioni speciali da gestire, di sicuro il baudrate non è previsto perchè avrdude dialoga grazie alla libreria libusb direttamente in "usbese".
Avevo aggiornato 2 minuti prima di scriverti, difatti ho nel menu a tendina tutte le voci che hai menzionato.
Ma la Leonardo è un po' rognosa, come scheda, per via del fatto che ha la gestione dell'USB integrata.
Difatti ho notato che appena il bootloader ha terminato l'attesa preimpostata di 8 secondi (scanditi dal lampeggio del led), la scheda si disconnetta e venga riconnessa con un altro ID. E Avrdudequi, a conferma della cosa, immediatamente mi dice "device not found" non appena il led smette di lampeggiare.
Ecco dmesg che mi dice:
Code:
[ 1228.719919] usb 4-2: new full-speed USB device number 3 using uhci_hcd
[ 1228.931649] cdc_acm 4-2:1.0: ttyACM0: USB ACM device
[ 1228.934965] usbcore: registered new interface driver cdc_acm
[ 1228.934970] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[ 1236.649927] usb 4-2: USB disconnect, device number 3
[ 1236.876586] usb 4-2: new full-speed USB device number 4 using uhci_hcd
[ 1237.048571] cdc_acm 4-2:1.0: This device cannot do calls on its own. It is not a modem.
[ 1237.048628] cdc_acm 4-2:1.0: ttyACM0: USB ACM device
[ 1237.056650] input: Arduino LLC Arduino Leonardo as /devices/pci0000:00/0000:00:1d.3/usb4/4-2/4-2:1.2/input/input11
[ 1237.057096] hid-generic 0003:2341:8036.0002: input,hidraw1: USB HID v1.01 Mouse [Arduino LLC Arduino Leonardo] on usb-0000:00:1d.3-2/input2


Quote
Prova la uno, ma seleziona il 644 e l'unico completo, se non c'è l'hai vai con il 328 ma non ho idea se funziona, la gui del 328 è vecchia di 6 mesi forse più.
Ho selezionato UNO R1 e Atmega644 ma continua a dirmi che non ho specificato la porta:

Code:
Run: avrdude -q -u -p m644 -c arduino -P  -b 115200 -U lfuse:r:-:h -U hfuse:r:-:h -U efuse:r:-:h

avrdude: no port has been specified on the command line or the config file
         Specify a port using the -P option and try again

The process avrdude exit with Exit code: 1 Exit status: 0

Quote
Per la due, conviene creare la voce? cioè avrdude dialoga con la due tranquillamente?
Per la due c'è arduino ISP?
Che io sappia non c'è. L'attuale ArduinoISP non compila per la DUE per via dei registri che non sono gli stessi.
Logged


0
Online Online
Faraday Member
**
Karma: 24
Posts: 2817
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il problema sulla uno è stato risolto, a me non capitava perchè avevo due usbserial connessi e il programma mostra la dialog per far scegliere il device, quando c'è ne è solo uno la dialog non si apre e il device file non veniva impostato.

Per usbtiny, c'è da provare se il nome del device composta da avrdude è corretto, mi sembra di si sempre che ho capito le FAQ di avrdude e il codice usbtiny.c.

Se ho capito male il tiny lo vedrà ma dopo -P ci sarà qualcosa che non va bene per avrdude. Avrdude vuole un device name compsto così "usb:busnum:devnum" es "usb:09:02" tradotto sul bus 9 prendi il device numero 2.

Ripeti gli ultimi passi da:
git pull //aggiorni
make clean
ecc....

Appena la UNO e usbtiny lavorano faccio una pausa e passo a creare le MCU gui, 328, tiny ecc. Non devo dimenticare i xxu2, xxu4.

Ciao.
Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5610
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Testato
Mandami un PC con windows che provvedo a fare il port del programma smiley-cool
Su windows non c'è udev, e per enumerare i device non ho idea di cosa si usi.
Ciao.
Addirittura un pc, al massimo ti mando il SO e ti fai un multiboot  smiley

sul java c'e' un comando che crea automaticamente la lista delle seriali, quindi ricevi un bel file con:
Quote
COM1
COM2
COM18
ecc..

a te serve proprio il nome ? servirebbe anche a me, se trovo il modo riferisco, nel frattempo per test andrebbe bene anche la semplice COMX,
L'IDE arduinica stessa non si e' messa a rilevare i nomi, ma si e' limitata a rilevare le COM, devi essere tu a sapere dove e' attaccato l'arduino
Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 313
Posts: 21655
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@Testato:
le periferiche sui sistemi Linux sono trattati alla stregua di file, è diverso da Windows che le gestisce come porte logiche. Quando colleghi una periferica USB, questa viene prima di tutto identificata con l'ID del produttore e l'ID del prodotto, quindi viene registrata in una cartella con questi 2 valori numerici. A questo punto viene creato il relativo file in un'altra cartella. Aprendo questo file in lettura si "ascolta" la periferica, aprendolo in scrittura gli si possono spedire dei dati.
Se non si hanno i giusti permessi di accesso, la periferica agli utenti non è accessibile.
Se gli ID non sono riconosciuti o se l'handshake non va a buon fine, la periferica viene ignorata.
C'è un servizio che si prende la briga di fare tutte queste operazioni in background.

Ripeto, è diverso da come lo fa Windows.
Logged


0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5610
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

certo, non avevo dubbi fosse diverso, dco solo che il problema del porting di questo rpogramma, se veramente lo vuole fare multipiattaforma, non di certo vede come problema principale il modo di elencare le porte.

Su linux oltre ai due parametri c he hai detto, viene anche rilevato il nome della periferica ? e' un parametro insito nella periferica o viene assegnato dal driver ?
mi piacerebbe poter invece di scegliere Com1 Com2, o le relative ttySx su linux, avere in elenco Arduino UNO, Arduino Micro, ecc
Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

0
Online Online
Faraday Member
**
Karma: 24
Posts: 2817
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

certo, non avevo dubbi fosse diverso, dco solo che il problema del porting di questo rpogramma, se veramente lo vuole fare multipiattaforma, non di certo vede come problema principale il modo di elencare le porte.

Su linux oltre ai due parametri c he hai detto, viene anche rilevato il nome della periferica ? e' un parametro insito nella periferica o viene assegnato dal driver ?
mi piacerebbe poter invece di scegliere Com1 Com2, o le relative ttySx su linux, avere in elenco Arduino UNO, Arduino Micro, ecc

Non è che è diverso perchè gli è piaciuto farlo diverso. Il kernel linux emette degli eventi in user space, questi eventi vengono intercettati da udev e uded, io per rilevare questi eventi mi appoggio sulla libreria di sistema udev, la quale si appoggia al kerner linux. Su windows non ho ne il kernel linux ne tanto meno udev.

Nel codice presente nel repo ci sono tre file, sysdevice.cpp, udevqtclient.cpp e udevqtdevice.cpp. Questi file vengono da lontano, si tratta della implementazione per *nix usata da KDE4.xx che usa una libreria chiamata "solid". Solid è multi piattaforma, windows, unix, e mac, purtroppo solid mi da informazioni circa i device che hanno un modulo kernel che gestisce il device, cioè per quei device che su unix hanno un nome di file /dev/xxxx. Purtroppo avrispmkii, jtagxx, usbtiny ecc, non hanno un modulo kernel loro e non hanno un device name /dev/xxx, e avrdude è costretto ad usare la libreria "libusb" per dialogare con questi.

Quindi io mi sono preso da solid quello che mi serviva e che potevo testare, l'ho adattato e integrato nel programma. In futuro la compatibilità con windows e mac non è esclusa a priori, ne per motifi filosofici, ma cosa più importante non è escluso per motivi legati al software. Solid di KDE è molto complesso, perchè per il programmatore finale le cose non cambiano anche quando passi da una piattaforma all'altra, questo però richiede molto software, in più visto che c'è la necessità di modificare Solid per almeno due motivi, uno già detto, e l'altro è che KDE e quindi anche Solid usanto CMAKE, mentre io uso qtCreator/Qt e qmake.

Alla fine ho fatto solo le modifiche che potevo testare.

Per windows, cosa mi mandi?
Mi raccomando la licenza, perchè io codice senza licenza non ne uso.

Per il momento c'è il repo devel, che vede uno sconvolgimento della organizazzione del progetto, devo introdurre l'editor di hex, e poi di tanto in tanto un microcontroller nuovo e un programmer nuovo.

Fare un frontend per avrdude è cosa complicata, ogni programmatore viene gestito in modo diverso, i nomi del device sono sempre diversi, le cose che costringono a scrivere codice specializzato saltano fuori con il tempo. Chi lo sapeva che LEonardo non ha ID_SERIAL_SHORT, stessa cosa per usbtiny che vuole un nome speciale, come pure avrispmkii che lo vuole diverso da quello richiesto per usbtiny.

PS: @testato io ti ho capito, se ti avessi davanti finiremo per alzare la voce entrambe, sei un provocatore malpensante che alle volte ci prende e altre no, questa volta non ci hai preso, ho reali difficolta tecniche a scrivere per windows e mac, non saprei cosa scrivere, da dove ricavare gli eventi; rinco quel device e stato rimosso, to un nuovo device ecc.

Ciao.
Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5610
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sembra la descrizione di Grillo  smiley

Scusa non volevo provocarti, tento solo di capire qualcosa da non programmatore.
Le poche cose che ti ho detto sulla gestione com in windows vengono da esperienza diretta in java, processing, davvero con un comando ho avuto la lista delle com.
Di più non so, non capisco nemmeno il 2% di quello che dici, per mia ignoranza.
Sto portando su android il mio programmino e ci capisco ancora meno perche Eclipse non centra nulla con processing.

Mi scuso se ho dato brutta impressione ma veramente non volevo.
Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

Pages: 1 2 [3] 4 5 6   Go Up
Jump to: