Come scrivere il mio primo programma “HelloWorld”
Home › Forum › Obsoleti › SlimLine (Linux) › Come scrivere il mio primo programma “HelloWorld”
- Questo topic ha 6 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 12 anni, 6 mesi fa da
Sergio Bertana.
-
AutorePost
-
Aprile 21, 2012 alle 8:02 am #35204
Sergio Bertana
Amministratore del forumIl modulo CPU SlimLine Linux è basato su di un modulo Computer on Modules (CoMs) prodotto da Karo. Viene da noi fornito con il sistema operativo già preinstallato linux embedded – kernel 2.6.31 karo-axel con busybox, bash ed applicativi vari e nessun gestore grafico linux. All’avvio il sistema esegue il boot-loader RedBoot che installa il kernel Linux.
Connettere un programma di emulazione terminale seriale (Esempio Toolly in Windows o Putty in Linux), configurato a 115200, e, 8, 1 alla porta seriale COM0 del modulo CPU SlimLine. Alla accensione del modulo sul terminale è possibile avere un report delle operazioni eseguite durante lo start-up. Si vedrà qualcosa come:
RedBoot> fis load linux
..
Uncompressing Linux………………………………………………………………………………………………………. done, booting the kernel.
Linux version 2.6.31 (gcc version 4.4.1 (GCC) ) #7 PREEMPT Wed Nov 30 10:48:25 CET 2011
CPU: ARM926EJ-S [41069264] revision 4 (ARMv5TEJ), cr=00053177
…Se la scheda è connessa alla rete ethernet ed è presente in rete un server DHCP, il modulo chiederà un lease di un indirizzo IP al server e si configurerà con l’IP assegnato. Per conoscere l’IP occorre visualizzare tutte le informazioni ritornate dalla porta seriale e ricercare quelle riferite al DHCP. Avremo qualcosa del tipo:
dhcpcd[1150]: eth0: broadcasting for a lease
dhcpcd[1150]: eth0: offered 192.168.0.86 from 192.168.0.1
dhcpcd[1150]: eth0: acknowledged 192.168.0.86 from 192.168.0.1
dhcpcd[1150]: eth0: checking for 192.168.0.86
dhcpcd[1150]: eth0: leased 192.168.0.86 for 86400 secondsQuindi a questo punto possiamo abbandonare la connessione seriale e raggiungere il nostro modulo da rete ethernet all’indirizzo assegnato (Nell’esempio è il 192.168.0.86). A tutte le successive accensione il modulo riceverà sempre dal server DHCP lo stesso indirizzo IP.
Aprile 21, 2012 alle 8:41 am #37226Sergio Bertana
Amministratore del forumPer lo sviluppo dei programmi è necessario utilizzare un PC Linux (Macchina virtuale VMware fornita da Elsist) od un qualunque PC Linux con tutti gli applicativi necessari installati. Da una shell di comandi è possibile connettersi in Telnet con la scheda semplicimente digitando Telnet seguito dall’IP, ci si troverà connessi all’interfaccia comandi della scheda (Screenshot). Con i comamdi ls si può eseguire il listing della directory corrente e con il comando cd data ci si può portare sulla directory data dove sarà trasferito il nostro primo programma.
Per la realizzazione del programma utilizziamo CodeLite, un open-source, cross platform IDE per C/C++. Il programma è la classica stampa della stringa hello world. Forniamo un progetto CodeLite con i files sorgenti, basterà compilarlo per avere nella directory Debug il file HelloWorld da trasferire sulla CPU SlimLine (Download progetto).
Per il trasferimento occorre utilizzare un qualsiasi client FTP (Esempio FileZilla), ma nel nostro progetto di esempio abbiamo configurato CodeLite ad eseguire lui stesso il trasferimento via Ftp al termine della compilazione del progetto. Agendo con il tasto destro del mouse sul nome del progetto e selezionando Settings si aprirà la finestra con i settaggi, nel comando di Post-Build viene invocato il comando Ftp del file eseguibile sulla CPU all’indirizzo IP definito nella directory data (Screenshot).
Aprile 21, 2012 alle 9:18 am #37227Sergio Bertana
Amministratore del forumEseguita la compilazione de il trasferimento del progetto sulla CPU SlimLine da Telnet è possibile verificare che il file eseguibile sia effettivamente stato trasferito nella directory data del sistema ed abbia tutti gli attributi di esecuzione necessari per essere eseguito. Con il comando ls -l è possibile visualizzare gli attributi del file, ed eventualmente con il comando chmod 777 HelloWorld è possibile assegnare gli attributi di esecuzione.
A questo punto digitando ./HelloWorld seguito da return il programma viene eseguito e la scritta hello world ritornata dal sistema (Screenshot).
Giugno 13, 2012 alle 7:59 am #37370Stefano
PartecipanteOk, fino all’HelloWorld mi sembra chiaro… Poi, dove è possibile reperire documentazione/tutorial/manuali specifici relativi alla programmazione in “C” per il modulo ARM9 ? Non mi riferisco tanto alla programmazione in “C” ma alle librerie da utilizzare per operare con ingressi/uscite ?
E’ possibile testare qualcosa con qualche emulatore o devo per forza avere il modulo cpu fisico per fare qualche esperimento ? Lo stavo valutando per un’utilizzo in home-automation (casa mia) e mentre sono abbastanza ferrato su Linux/Reti/… dei PLC ricordo qualcosa di LADDER e basta e quindi ero più propenso verso la soluzione “Open”.
Agosto 10, 2012 alle 1:56 pm #37371Sergio Bertana
Amministratore del forumStiamo procedendo nella stesura della libreria di supporto al sistema SlimLine, la libreria che è denominata “eSLLinuxLib” è attualmente disponibile in versione beta. Ho realizzato un semplice progetto con CodeLite per generare un eseguibile, che utilizzando la libreria (Fornita con il progetto) permette di gestire gli I/O logici sul bus di espansione.
L’esempio con un semplice menù di comandi da telnet permette di leggere gli ingressi logici, attivare le uscite logiche, ed attivare un thread per la gestione del lampeggio di una uscita logica (Download programma sorgente).
Purtroppo non esiste un emulatore dell’hardware, pertanto per testare il programma bisogna disporre del modulo CPU SlimLine ARM9 (Linux Open).
Ottobre 10, 2012 alle 10:53 am #37441Anonimo
InattivoVorrei sapere se esiste una libreria per la gestione del modbus sia RTU che TCP. Ho visto che c’è la definizione della funzione che calcola il CRC dei pacchetti modbus, ma non ho trovato documentazione su come si instaura un dialogo modbus.
Inoltre vorrei sapere se è prevista l’implementazione della gestione degli IO analogici.
Ottobre 10, 2012 alle 2:12 pm #37442Sergio Bertana
Amministratore del forumEsiste una libreria di utilità ElSLUtility (Codice SFR069****) in cui puoi trovare la classe CModbus per la gestione del server modbus, la classe supporta il modbus Ascii, il modbus RTU ed il modbus OverIP.
In merito alla gestione analogica nella libreria ElSLLinux (Codice SFR064****) puoi trovare le funzioni apposite per la gestione dei moduli analogici.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.