Vai al contenuto

Come scrivere il mio primo programma “HelloWorld”

Home Forum Obsoleti SlimLine (Linux) Come scrivere il mio primo programma “HelloWorld”

Stai visualizzando 7 post - dal 1 a 7 (di 7 totali)
  • Autore
    Post
  • #35204
    Sergio Bertana
    Amministratore del forum

    Il 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 seconds

    Quindi 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.

    #37226
    Sergio Bertana
    Amministratore del forum

    Per 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).

    #37227
    Sergio Bertana
    Amministratore del forum

    Eseguita 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).

    #37370
    Stefano
    Partecipante

    Ok, 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”.

    #37371
    Sergio Bertana
    Amministratore del forum

    Stiamo 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).

    #37441
    Anonimo
    Inattivo

    Vorrei 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.

    #37442
    Sergio Bertana
    Amministratore del forum

    Esiste 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.

Stai visualizzando 7 post - dal 1 a 7 (di 7 totali)
  • Devi essere connesso per rispondere a questo topic.