Un ottimo tool per manipolare i file utilizzati dai programmatori di EPROM. Ecco come installarlo, compilarlo e modificarlo per l’aggiunta di nuovi formati.
SRecord è un pacchetto open source studiato per gestire i formati dei “file da epromizzare”. Con “file da epromizzare” ci si vuole riferire a quei particolari formati utilizzati dai programmatori di eprom. È possibile modificare i codici sorgenti, inclusi nella distribuzione, in accordo alla licenza GNU General Public License messa a punto dalla Free Software Foundation. Questa caratteristica rende il tool veramente interessante infatti, in questo modo, è possibile farsi la propria distribuzione includendo formati proprietari o aggiungere proprie applicazioni. Se vogliamo ricompilare la distribuzione in ambiente Windows dobbiamo procurarci gli ambienti Cygwin o il tool DJGPP di Delorie (www.delorie.com).
DISTRIBUZIONE
Il pacchetto SRecord è distribuito con i file riportato nella tabella 1. SRecord comprende tre applicazioni:
srec_cat
È un programma utilizzato per concatenare file EPROM o porzioni di questi. È utilizzato anche per le conversioni da un formato all’altro. L’uso, dei filtri rende l’applicazione veramente flessibile: è possibile, per esempio, generare un checksum per dare una firma al file ottenuto.
srec_cmp
È utilizzato per fare l’operazione di difference o compare tra due file, o EPROM, o porzioni di file per verificarne il contenuto. Esistono diversi parametri d’ingresso: è possibile specificare il formato del file o un particolare filtro da applicare.
Il comando può assumere questo formato:
filename [format][−ignore-checksums][filter...]
Il parametro filename può essere il nome di un file o può anche essere indicato lo standard input.
srec_info
È utilizzata per visualizzare informazioni sul formato del file. Questo comando legge il file, specificato nel parametro d’ingresso e presenta a video le informazioni. Queste possono includere l’indirizzo di partenza, l’occupazione di memoria e l’eventuale header.
COME COSTRUIRE SRECORD
A volte può essere necessario modificare la distribuzione per adattarla alle proprie esigenze, oppure può capitare di apportarvi delle modifiche al codice sorgente magari perché si scopre un baco. Non esistono particolari requisiti per compilare SRecord, basta avere almeno 4 Mbyte di RAM per scompattare e ricompilare il pacchetto e procurarci una serie di tool GNU (reperibile al sito ftp.gnu.org):
GNU Groff
Questo tool è utilizzato per produrre la documentazione da includere alla distribuzione, la versione da utilizzare deve essere non meno della 1.14.
GCC
Questa è la suite della GNU e viene utilizzata per compilare il pacchetto SRecord. Occorre il compilatore (GNU C++) con tutte le librerie. Una volta reperiti i tool di sviluppo, con le relative utility, occorre fare un piccolo lavoro preliminare, per predisporre la configurazione. Per fare questo SRecord utilizza il programma configure inclusa nella distribuzione stessa. Configure è uno script che permette di predisporre correttamente il processo di configurazione e compilazione e per fare questo si utilizzano le variabili d’ambiente. Configure produce, al termine del processo, il Makefile e il file lib/config.h. Un altro aspetto da tenere presente che è viene, anche, prodotto lo script config.status: questo è utilizzato per ricreare l’ambiente di configurazione. Per lanciare il processo di configurazione, dalla shell è necessario utilizzare il comando:
./configure
Il processo di configurazione dura tipicamente un paio di minuti. Durante il comando di configurazione vengono visualizzate una serie di informazioni sul terminale d’uscita. È possibile disabilitare questo comportamento verboso semplicemente aggiungendo al comando lo switch –quiet. È possibile compilare Srecord in una cartella diversa da quella contenete il codice sorgente, in questo caso è necessario utilizzare una versione di make che supporta la variabile d’ambiente VPATH. Con la scelta —srcdir=DIR è possibile definire, poi, un’altra cartella per i file sorgenti. Per installare il pacchetto, al termine della compilazione, è necessario utilizzare il comando make install, in questo modo, al termine dell’operazione il tool è posto nelle cartelle:
/usr/local/bin e /usr/local/man.
Se, poi, disponiamo del tool GNU Groff allora il processo di building si preoccuperà di creare il file etc/reference.ps. In questa cartella devono essere presente il file README: è utilizzato per la costruzione di SRecord e le pagine del manuale in linea. Il comando make può essere utilizzato anche per rimuovere i file binari e gli obj mediante lo switch clean, così make clean. Invece se volessimo rimuovere tutti i files, il Makefile, lib/config.h e config.status utilizzeremo il comando make distclean.
Windows
Il pacchetto Srecord può essere compilato anche sotto Windows grazie all’ambiente Cygwin o DJGPP. Con Cygwin si ha lo strato software necessario per mettere in esecuzione una shell Unix in ambiente Windows. In questo caso la descrizione sopra riportata si adatta pienamente anche per Windows. Al termine del processo di compilazione e linking è possibile, mediante l’uso dei test inclusi, verificare il lavoro svolto. Per mettere in esecuzione la test suite dobbiamo utilizzare il comando make sure e al termine dovrà essere visualizzato sullo schermo l’indicazione “Passed All Tests”.
Installare SRecord
Il pacchetto Srecord è installato, come è stato detto, sotto la cartella /usr/local per default, ma è possibile cambiarla modificando l’opzione –prefix=PATH nella fase di configurazione. Per avere maggiori informazioni è opportuno leggere la documentazione a corredo o utilizzare lo switch –help in configurazione. Per installare il tool, infine, quello che dobbiamo fare è utilizzare il comando make install.
AGGIUNGIAMO UN NUOVO FORMATO
Qualsiasi programmatore può aggiungere un nuovo formato nella distribuzione, se esiste questa necessità occorre generare la patch delle modifiche apportate alla distribuzione stessa. La patch può essere generata utilizzando il comando:
diff –u –r
Per aggiungere un nuovo formato dobbiamo intervenire nelle cartelle output, input e creare una serie di nuovi file. Il primo è sicuramente un file che deve contenere una descrizione del nuovo formato. Questo deve essere posizionato nella cartella lib/srec/output/file e referenziato come name.cc, con name deve essere indicato il nome del nuovo formato. Chiaramente, questo file deve contenere una serie di metodi per manipolare in modo opportuno il formato; per avere delle indicazioni di massima su come scrivere queste funzioni, può essere utile leggere un file già scritto presente nella distribuzione. Utilizziamo anche lib/srec/output/file.h e lib/srec/output.h per conoscere i vari metodi richiesti. La dichiarazione delle classi dei file citati può essere realizzata in lib/srec/output/file/name.h, questa contiene le definizioni di interfaccia per lib/srec/output/file/name.cc. Dobbiamo poi implementare il file lib/srec/input/file/name.cc, questo deve contenere le indicazioni su come leggere il nuovo formato. Anche in questo caso può essere opportuno leggere, sempre nella stessa cartella, un file simile per facilitarne la sua realizzazione. Inoltre, è necessario controllare i file lib/srec/input/file.h e lib/srec/input.h per i vari metodi da aggiungere. Il file name.h nella cartella lib/srec/input/file deve contenere la dichiarazione delle classi per i file sopra citati. Per finire occorre descrivere il formato nel manuale della distribuzione in man/man5, questo compito viene svolto aggiungendo la descrizione nel file srec_name.5. Per completare il lavoro è necessario modificare gli altri file presenti in tabella 2.
CONCLUSIONE
La distribuzione ufficiale è disponibile su http://srecord.sourceforge.net/, e qui troviamo tutta la documentazione e le diverse distribuzioni per Linux e Windows. Nella documentazione a corredo ci sono poi informazioni approfondite su tutti i formati supportati. Senza dubbio SRecord è un ottimo strumento per consentirci di manipolare i file di questo tipo.