Aggiungere la mia libreria al sistema Contiki

Voglio aggiungere alcune librerie di terze parti a Contiki, ma al momento non posso. Quindi volevo testare con una semplice libreria.

Ho scritto due file ciao.c ciao.h, in ciao.c ho:

printf(" Hello everbody, library call\n"); 

In ciao.h ho:

 extern void print_hello(); 

Ho creato ciao.o usando il comando:

 msp430-gcc -mmcu=msp430f1611 hello.c -o hello.o 

Ho creato un file di archivio:

 ar -cvq libhello.a hello.o 

Mi sposto in contiki, scrivo un semplice programma che chiama hello.h per eseguire una funzione. Cerco di includere hello.a usando la variabile PROJECT LIBRARIES nel makefile, quando compilo ottengo questo:

  Hello_lib.sky section .vectors' will not fit in region'vectors' ... region vectors overflowed by 32 Bytes 

Qualcuno può spiegarmi qual è il problema (sono nuovo nel campo)?

E come correggerlo se ansible? (Quali opzioni dovrei specificare per msp430-gcc) Grazie.

Assicurati di build la libreria per la stessa architettura che crei il tuo programma.

Ad esempio, se si desidera utilizzare un file eseguibile per sky motes (MCU MSP430F1611), creare la libreria con:

 msp430-gcc -mmcu=msp430f1611 -c hello.c -o hello.o msp430-ar -cvq libhello.a hello.o 

Quindi aggiungi il percorso alla libreria e il suo nome al Makefile dell’applicazione:

 TARGET_LIBFILES += -L./hellolib -lhello 

Quindi crea l’applicazione come al solito:

 make TARGET=sky 

Questo video mostra come aggiungere le tue librerie al sistema Contiki

https://www.youtube.com/watch?v=csa9D1U5R_8

Dettagli:

  • La libreria che creo è: libhello.a
  • La libreria stampa il messaggio “Hello everbody, library call”
  • Ho incluso la libreria nell’esempio di Contiki “example-broadcast.c”

Passi del video:

  1. Crea esempio di cartella:

    • Copia l’esempio-broadcast.c

    • Copia il Makefile

  2. Crea la libreria:

    • Crea file object:

       msp430-gcc -mmcu=msp430f1611 -c hello.c -o hello.o 
    • Crea file di libreria:

       msp430-ar -cvq libhello.a hello.o 
  3. Dì a Contiki il percorso verso la biblioteca:

      TARGET_LIBFILES += -L. -lhello 
  4. Aggiungi la libreria al tuo codice .c e stampa il messaggio di benvenuto:

      #include "hello.h" Print_Function(); 
  5. Compila il tuo codice .c:

      make example-broadcast TARGET=sky