Arduide, un IDE alternativo ad Arduino

astrobeed:

MauroTec:
Sono riuscito a far girare Arduide, purtroppo il pacchetto binario non esiste ancora per le varie distrò GNU/Linux e quindi chi volesse provarlo dovra compilare dai sorgenti.

Per il momento non posso provarlo, ho appena fatto tabula rasa sia sul desktop che sul notebook e ho reinstallato solo windows, devo ancora finire di installare la miriade di programmi che uso, Linux lo reinstallo tra qualche giorno dopo di che provo il tuo IDE.

che per caso non ho detto che gira anche su windows, si non l'ho detto. Come vedi nel sorgente c'è una dir win32 e nel file CMakeList.txt c'è questo pezzo di codice:

# Utils
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
  file(GLOB utils_OS_SOURCES
    "utils/win32/*.cpp" "utils/win32/*.h")
else()
  file(GLOB utils_OS_SOURCES
    "utils/unix/*.cpp" "utils/unix/*.h")
endif()

if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
  file(GLOB utils_SOURCES
    "utils/*.cpp" "utils/*.h"
    "utils/qxt/*.cpp" "utils/qxt/*.h"
    "utils/qxt/win/*.cpp" "utils/qxt/win/*.h"
    "utils/hexview/*.cpp" "utils/hexview/*.h")
else()
  file(GLOB utils_SOURCES
    "utils/*.cpp" "utils/*.h"
    "utils/qxt/*.cpp" "utils/qxt/*.h"
    "utils/qxt/unix/*.cpp" "utils/qxt/unix/*.h"
    "utils/hexview/*.cpp" "utils/hexview/*.h")
endif()

Quindi non ci dovrebbe essere alcun problema a compilarlo su windows, ma io li non posso aiutare perchè anche il compilatore gcc è leggermente diverso e poi ti devi procurare tutte le dipendenze, insomma su windows il lavoro è molto di più che su GNU/Linux, per cui ti consiglio di installare una distrò recente e provare la compilazione e dopo averlo provato puoi pensare di passare a windows, e magari scrivi pure come si procede su windows.

Ciao.

Queste sono le dipendenze per Ubuntu 12.04:

libqt4-dev
libqscintilla2-dev
libgrantlee-dev
libudev-dev
cmake

Alcune di esse si porteranno dietro altre dipendenze, poca roba comunque.
La compilazione l'ho eseguita sul tar.gz, non ho clonato il repo Git.
Avviato ArduIde, mi è stato chiesto se il software doveva scaricarsi l'IDE di Arduino oppure se volevo specificare un percorso: ho scelto la seconda via perché avevo già l'IDE 1.0.1 installato. Ho caricato uno sketch di prova, ho scelto la scheda (Arduino UNO) e poi ho compilato.

Risultato: Errore.
Cannot start program avr-g++
Compilation failed.

Ma allora non usa l'IDE di Arduino per prelevare anche la toolchain? Se è così, la toolchain di molte distro è buggata, è un problema.

MauroTec:
che per caso non ho detto che gira anche su windows, si non l'ho detto. Come vedi nel sorgente c'è una dir win32 e nel file CMakeList.txt c'è questo pezzo di codice:

Forse compila anche per Mac, durante il cmake iniziale ho visto che ha fatto un check sul sistema su cui stava girando (Q_WS_WIN, Q_WS_X11 e Q_WS_MAC)

Sì, serve aggiungere la toolchain a parte. Dall'IDE di Arduino preleva solo il core.
A casa proverò il programma su Arch e poi effettuerò una flashatura, ora non ho con me nessuna scheda.

mmm ma l'ide attuale non vi piace? :grin:
cosa cambia da quello vecchio?è almeno più performante?

Madwriter:
mmm ma l'ide attuale non vi piace? :grin:
cosa cambia da quello vecchio?è almeno più performante?

Questo è tutto da verificare, stando alla frequenza di aggiornamento lo sviluppo è attivo e quindi ci stanno lavorando su. Dovrebbe essere molto più affidabile perchè il codice è C++ con Qt4 e c'è supporto per l'estensione di funzionalità tramite plugin, dovrebbe essere anche più veloce e la GUI è sicuramente più piacevole alla vista, non c'è il problema dei menù strabboccanti e per finire io posso metterci le mani perchè conosco le Qt e il C++.

Staremo a vedere se merita.

Ciao.

Nelle intenzioni dell'autore c'è la volontà di realizzare un ambiente più snello. Effettivamente il caricamento avviene in pochissimo tempo. Mi riservo di dare un giudizio completo dopo il test di flashatura, comunque.

L'unica pecca a mio avviso è che, come l'IDE attuale, non ha l'autocompletamento del codice. Secondo me è una grossa mancanza.

leo72:
L'unica pecca a mio avviso è che, come l'IDE attuale, non ha l'autocompletamento del codice. Secondo me è una grossa mancanza.

Questa è una caratteristica abbastanza complessa da implementare, richiede tantissimo lavoro da parte dello sviluppatore.

Ops ho riletto e mi rendo conto che devo chiarire alcuni punti.

@Astrobeed
L'ide non l'ho sviluppato io, non c'è una riga di codice mio.

@leo72
Il fatto che usi solo il core e le lib estese la considero una cosa buona, se vuoi fare in modo che usi la toolchain presente nelle directory dell'ide devi creare dei link simbolici e metterli in una directory che ha il path, ad esempio puoi creare una dir di nome "bin" nella home dell'utente e questa dovrebbe già avere il path attivo, se non lo è devi modificare il file .bash_profile così:

[mauro@localhost anjuta-avr.anjuta-modifications]$ cat ~/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

ora puoi creare i link simbolici nella dir "bin".

Il codice in effetti contiene direttive di configurazione anche per Mac e quindi è pensato per essere multipiattaforma, c'è solo da provare e verificare quello che non va.

L'unica pecca a mio avviso è che, come l'IDE attuale, non ha l'autocompletamento del codice. Secondo me è una grossa mancanza.

Putroppo a volere fare bene le cose, l'autocompletamento è roba complessa. Ci vuole un parser che analizza tutti i file sorgente interni ed esterni (inclusi con la direttiva #include) al fine di riempire un database in memoria con i nomi di funzioni, classi ecc. Tutti i file di progetto interni sono monitorati, se modificati dall'esterno il codice si accorge della modifica e il database si aggiorna. In questo modo il terreno è preparato per il completamento e per la lista di funzioni e classi ecc (con un fava due piccioni). Ma tutto questo non si sviluppa in una settimana e la progettazione
può richiedere cambiamento di rotta. L'autocompletamento è a portata di mano in Qt perchè la classe QTextEdit la prevede, manca tutto ciò che ho elencato. Nota l'autocompletamento statico (stupido) non è cosa di cui vantarsi.

Astro mi ha preceduto.
Ciao.

astrobeed:

leo72:
L'unica pecca a mio avviso è che, come l'IDE attuale, non ha l'autocompletamento del codice. Secondo me è una grossa mancanza.

Questa è una caratteristica abbastanza complessa da implementare, richiede tantissimo lavoro da parte dello sviluppatore.

Ma per me rimane forse l'unico motivo che mi spingerebbe a cambiare IDE. 8)

PaoloP:

astrobeed:

leo72:
L'unica pecca a mio avviso è che, come l'IDE attuale, non ha l'autocompletamento del codice. Secondo me è una grossa mancanza.

Questa è una caratteristica abbastanza complessa da implementare, richiede tantissimo lavoro da parte dello sviluppatore.

Ma per me rimane forse l'unico motivo che mi spingerebbe a cambiare IDE. 8)

Ma sai i punti visti sono molteplici. Ad esempio se questo IDE offre tutte le funzionalità offerte dall'ide Arduino attuale, perchè non provarlo?
Visto che si tratta di codice in fase di sviluppo ci si può aspettare delle migliorie che grazie al framework sono a portata di mano, so che le mie parole rimangono parole perchè bisogna toccare con mano e verificare, ma io lo scrivo lo stesso. Il framework Qt è uno dei più potenti e flessibili in circolazione, semplice da usare e da estendere e rapido e contiene codice ottimizzato anche in asm, è multipiattaforma incluso Avr32 e Arm, queste io le considero buone premesse per un futuro sviluppo di questo IDE, di java non posso dire la stessa cosa causa ignoranza mia, posso solo aggiungere che il framework è disponibile anche in java.

Ciao.

A me ArduIde è piaciuto, di prim'acchitto. Poi magari posso anche ricredermi usandolo però l'avvio è notevolmente più rapido. Ho visto che supporta anche i core aggiuntivi, però non li vede se stanno dentro alla cartella /hardware dell'IDE di Arduino ma li vuole dentro a /sketchbook/hardware.

MauroTec:

PaoloP:

astrobeed:

leo72:
L'unica pecca a mio avviso è che, come l'IDE attuale, non ha l'autocompletamento del codice. Secondo me è una grossa mancanza.

Questa è una caratteristica abbastanza complessa da implementare, richiede tantissimo lavoro da parte dello sviluppatore.

Ma per me rimane forse l'unico motivo che mi spingerebbe a cambiare IDE. 8)

Ma sai i punti visti sono molteplici. Ad esempio se questo IDE offre tutte le funzionalità offerte dall'ide Arduino attuale, perchè non provarlo?
Visto che si tratta di codice in fase di sviluppo ci si può aspettare delle migliorie che grazie al framework sono a portata di mano, so che le mie parole rimangono parole perchè bisogna toccare con mano e verificare, ma io lo scrivo lo stesso. Il framework Qt è uno dei più potenti e flessibili in circolazione, semplice da usare e da estendere e rapido e contiene codice ottimizzato anche in asm, è multipiattaforma incluso Avr32 e Arm, queste io le considero buone premesse per un futuro sviluppo di questo IDE, di java non posso dire la stessa cosa causa ignoranza mia, posso solo aggiungere che il framework è disponibile anche in java.

Ciao.

il java è fantastico confermo io :stuck_out_tongue_closed_eyes:

Su Fedora per installare le dipendenze ho usato il comando:

yum install qt-devel qscintilla-devel grantlee-devel libudev-devel cmake avr-gcc avr-libc avr-gdb avr-binutils avrdude qtwebkit-devel

Ho dovuto aggiungere il pacchetto qtwebkit-devel per compilare.

Ho provato ad installare ArduIde usando il pacchetto arduide-git presente nel repo AUR però non riesco a compilare.
Ad esempio, ho cercato di compilare uno degli esempi allegati al leOS ed ecco il risultato:

Compiling for Arduino Uno...
>>>> avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=101 -I/home/leo/Documenti/Arduino/arduino-1.0.1/hardware/arduino/variants/standard -I/home/leo/Documenti/Arduino/arduino-1.0.1/hardware/arduino/cores/arduino -o /tmp/arduino-buildjVG1gc/CDC.cpp.o /home/leo/Documenti/Arduino/arduino-1.0.1/hardware/arduino/cores/arduino/CDC.cpp
/usr/lib/gcc/avr/4.5.3/cc1plus: error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory
Compilation failed.

Stesso identico risultato con l'esempio Blink

PaoloP:

astrobeed:

leo72:
L'unica pecca a mio avviso è che, come l'IDE attuale, non ha l'autocompletamento del codice. Secondo me è una grossa mancanza.

Questa è una caratteristica abbastanza complessa da implementare, richiede tantissimo lavoro da parte dello sviluppatore.

Ma per me rimane forse l'unico motivo che mi spingerebbe a cambiare IDE. 8)

Prova eclipse... una volta che impari a conoscerlo poi non vorrai piu tornare indietro

leo72:
Ho provato ad installare ArduIde usando il pacchetto arduide-git presente nel repo AUR però non riesco a compilare.
Ad esempio, ho cercato di compilare uno degli esempi allegati al leOS ed ecco il risultato:

Compiling for Arduino Uno...
>>> avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=101 -I/home/leo/Documenti/Arduino/arduino-1.0.1/hardware/arduino/variants/standard -I/home/leo/Documenti/Arduino/arduino-1.0.1/hardware/arduino/cores/arduino -o /tmp/arduino-buildjVG1gc/CDC.cpp.o /home/leo/Documenti/Arduino/arduino-1.0.1/hardware/arduino/cores/arduino/CDC.cpp

/usr/lib/gcc/avr/4.5.3/cc1plus: error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory
Compilation failed.



Stesso identico risultato con l'esempio Blink

Prova con:

ldd /usr/libexec/gcc/avr/4.5.1/cc1plus

dovrebbe dare una lista di librerie simile a questa:

[mauro@localhost ~]$ ldd /usr/libexec/gcc/avr/4.5.1/cc1plus 
	linux-gate.so.1 =>  (0x00796000)
	libmpc.so.2 => /usr/lib/libmpc.so.2 (0x00d7b000)
	libmpfr.so.4 => /usr/lib/libmpfr.so.4 (0x005ff000)
	libgmp.so.10 => /usr/lib/sse2/libgmp.so.10 (0x007d5000)
	libdl.so.2 => /lib/libdl.so.2 (0x00319000)
	libz.so.1 => /lib/libz.so.1 (0x00373000)
	libelf.so.1 => /usr/lib/libelf.so.1 (0x004b9000)
	libc.so.6 => /lib/libc.so.6 (0x0019e000)
	libm.so.6 => /lib/libm.so.6 (0x0033c000)
	/lib/ld-linux.so.2 (0x0017c000)

Invece compilando ed installando in /usr/local funziona?

Ah per installare in /usr/local:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DUSE_FHS_PATHS=ON -DCMAKE_BUILD_TYPE=Release .
make & make install

Orca loca, questo è il post 17 17. :~

Ciao.

Allora, ecco l'output di ldd:

ldd /usr/lib/gcc/avr/4.5.3/cc1plus
	linux-vdso.so.1 (0x00007fff79dff000)
	libmpc.so.2 => not found
	libmpfr.so.4 => /lib/libmpfr.so.4 (0x00007f3732725000)
	libgmp.so.10 => /lib/libgmp.so.10 (0x00007f37324b6000)
	libdl.so.2 => /lib/libdl.so.2 (0x00007f37322b2000)
	libc.so.6 => /lib/libc.so.6 (0x00007f3731f0e000)
	/lib/ld-linux-x86-64.so.2 (0x00007f3732980000)

Non ho ancora compilato da sorgenti, ho fatto solo la prova usando il PKGBUILD già pronto.

Il problema è nella toolchain, precisamente nel compilatore gcc.

Magari non hai installato il pacchetto "libmpc", però trovo molto strano il percorso in cui sono messe le librerie di gcc, in pratica sotto /lib ci vanno le librerie di sistema, tipo udev, i moduli del kernel ecc, mentre sotto /usr/lib ci vanno le libreria non legate con il sistema ma con le applicazioni utente.

Ho controllato il PKGBUILD ed è corretto, strano molto strano.

Ciao.