Article Marketing

article marketing & press release

BeRTOS: la vostra prima applicazione!

Preparazione del progetto

Scarica BeRTOS e lancia il Wizard. Dal menu cfg seleziona debug
per includere automaticamente il supporto per il debug di BeRTOS.
Seleziona la porta di output corretta per la CPU e crea il progetto.
Chiamiamo il progetto hello_world.

Il Wizard crea la directory hello_world/, in cui si trovano:

  • bertos/: i sorgenti completi di BeRTOS;
  • Makefile: il makefile di tutto il progetto. Per compilare il progetto, lancia make;
  • hello_world/: la directory del progetto;
    • cfg/: la directory con i file di configurazione;
    • hw/: file specifici per l’hardware;
    • main.c: il file con il main();

Coding

Apri main.c e inserisci:

#include "buildrev.h"

#include <cfg/debug.h>

int main(void)
{
IRQ_ENABLE;

kdbg_init();
kprintf("Program build: %dn", VERS_BUILD);
kputs("Hello world!n");
return ;
}

Quindi compila il programma; ci saranno dei warning, ma per il
momento possiamo ignorarli. Metti il firmware sulla scheda e resetta.
Sulla seriale di debug ci saranno i messaggi:

*** BeRTOS DBG START ***
Program build: 17
Hello world!

Congratulazioni! Hai appena creato la tua prima applicazione con BeRTOS!

Tutorial linea per linea
#include <cfg/debug.h>

La prima riga include i prototipi di funzione. Dal momento che
spesso viene inclusa in altri file, si può omettere nei progetti più
grandi.

IRQ_ENABLE;

Questa riga abilita gli IRQ sulla CPU. Non ne avremo bisogno in
questo esempio, ma serve per quasi tutti gli altri moduli di BeRTOS,
quindi è una buona abitudine includerlo.

kdbg_init();

Questa linea inizializza il sottosistema di debug, aprendo la
seriale di debug. I parametri di configurazione per la porta sono nel
file hello_world/cfg/cfg_debug.h.

kprintf("Program build: %dn", VERS_BUILD);
kputs("Hello world!n");

Scrivono una stringa di debug sull’output. È possibile usare una funzione simile a printf per formattare l’output. Tieni presente, però, che printf introduce un alto delay, quindi usala con parsimonia.

Per ridurre l’occupazione di memoria e uso di CPU, BeRTOS implementa vari tipi di formattazione con printf. È possibile selezionarli modificando le opzioni in hello_world/cfg/cfg_formatwr.h.
Ricordi i warning che sono usciti durante la prima compilazione? Sono
dovuti all’uso della formattazione completa su una CPU con poca
potenza. Per evitare questi warning puoi modificare le opzioni di
formattazione in PRINTF_NOFLOAT.

Flash dell’immagine

I file compilati sono messi nella directory images/. Ci sono molti formati, per esempio .elf, .s19, .hex oppure .bin.
L’ultima versione di BeRTOS ha un’infrastruttura di flash e debug
integrata nei makefile per semplificare queste operazioni ripetitive.

Le operazioni da fare per flash e debug variano enormemente da CPU a
CPU, quindi devi scrivere uno script che faccia il flash del programma
sulla tua CPU. Per esempio, per AVR basta lanciare Avrdude oppure Avarice
con i parametri corretti per la tua CPU. Lo script potrà usare le
seguenti variabili di ambiente, che vengono definite direttamente dal
makefile:

  • PROGRAMMER_CPU: la cpu che stai usando nel progetto.
  • PROGRAMMER_TYPE: il tipo di programmatore da usare
  • PROGRAMMER_PORT: la porta su cui è collegato il programmatore
  • GDB_PORT: la porta su cui attendere le connessioni da GDB
  • ELF_FILE: il path del file che contiene i simboli di debug per GDB

Le variabili PROGRAMMER_TYPE e PROGRAMMER_PORT
sono definite nel makefile del progetto (per esempio hello_world.mk).
Una volta creati gli script, basta lanciare uno dei seguenti comandi
per flashare o debuggare un programma:

make flash_hello_world
# oppure
make debug_hello_world

Questo è tutto. Buon divertimento con BeRTOS!

Leave A Comment

Your email address will not be published.

Article Marketing