Avanti Indietro Indice

5. Compilazione ed esecuzione

Per poter eseguire il programma hello.c (dopo aver avviato il sistema con rtlinux, ovviamente) dovete seguire i seguenti passi:

  1. Compilate il codice sorgente e create un modulo usando il compilatore GCC. Per semplificarvi la vita, comunque, è consigliabile creare un Makefile. In questo modo occorre solo digitare 'make' per compilare il codice. Il Makefile può essere creato inserendo le seguenti righe in un file chiamato, appunto, 'Makefile'.
         include rtl.mk
         all: hello.o
         clean:
             rm -f *.o
         hello.o: hello.c
             $(CC) ${INCLUDE} ${CFLAGS} -c hello.c
    
  2. Copiate il file rtl.mk nella stessa directory dove si trovano i vostri hello.c e Makefile. rtl.mk è un include file contenente tutti i flag necessari per compilare il codice. Questo file da affiancare al vostro hello.c può essere prelevato dai sorgenti di RTLinux.
  3. Per compilare il codice usate il comando 'make'.
            $ make 
    
  4. Il file oggetto ottenuto deve essere caricato nel kernel, dove verrà eseguito da RTLinux. Per fare ciò usate il comando 'rtlinux' come utente root.
            $ rtlinux start hello
    

Dovreste iniziare a vedere da subito il messaggio di hello.c visualizzato ogni secondo. A seconda di come la vostra macchina è configurata, il messaggio potrebbe apparire o direttamente sulla console oppure eseguendo:

        $ dmesg

Per interrompere il programma occorre rimuoverlo dal kernel. A questo scopo, digitate:

        $ rtlinux stop hello

Un'altra maniera per caricare e rimuovere il modulo consiste nell'usare rispettivamente insmod e rmmod.

L'esempio appena proposto è decisamente semplice. A differenza di ciò che abbiamo appena visto, ci possono essere diversi thread in un programma. Le priorità possono essere impostate al momento della loro creazione ma possono essere anche modificate in un secondo tempo. In aggiunta, possiamo stabilire pure quale algoritmo di scheduling verrà usato. Possiamo addirittura scrivere il nostro algoritmo personale!

Tornando al nostro esempio, potremmo impostare la priorità del thread al valore 1 e scegliere lo scheduling FIFO inserendo le seguenti righe in testa alla funzione thread_code() :

        struct sched_param p;
        p . sched_priority = 1;
        pthread_setschedparam (pthread_self(), SCHED_FIFO, &p);


Avanti Indietro Indice