Lettura file .txt e manipolazione tramite libreria esterna

di il
1 risposte

Lettura file .txt e manipolazione tramite libreria esterna

Ciao a tutti,
premetto subito che non ho basi di c++ (a scuola avevo fatto solo il C).

Mi trovo di fronte ad un problema che non so come affrontare se non chiedendo a chi di C ne mastica.

Ho un file .txt generato da un programma che mi fa il dump di una memoria in hex. Questo file è cosi composto:

[indirizzo]: double_word1 double_word2 double_word3 double_word4 double_word5 double_word6 double_word7 double_word8

esempio della prima riga del file:

[08000000]: 20005000 08001B15 08001B75 08001B75 08001B75 08001B75 08001B75 00000000

Questo è la prima riga, ma ovviamente ce ne sono un 1000 di righe nel file.

Solo che questo file ha un formato di impaginamento che non viene letto da nessun programmatore. Quindi dovrei convertirlo in un file Intel_Hex.

Per "farlo" ho trovato due librerie su GitHub per scrivere questo tipo di file (intel_hex.HEX) solo che non sono in grado di utilizzarle, vorrei chiedere cortesemente se qualcuno può darmi una mano.

Le libreire che avrei trovato sono: https://github.com/arkku/ihe
https://github.com/codinghead/Intel-HEX-Clas

Se qualcuno può darmi una "grossa" mano ne sarei grato anche perchè l'alternativa sarebbe trascrivermi le 1000 righe a mano nella memoria

Eventualmente posso girare in privato i file di prova che ho caricato e letto così ho il file originale .intelhex e il file generato dal programma che fa il dump in .txt (che una volta convertito dalla libreria dovrebbe essere uguale al file .intelhex).

1 Risposte

  • Re: Lettura file .txt e manipolazione tramite libreria esterna

    Non hai modo di caricare direttamente un file binario all'address di partenza?
    Solitamente i processori sono little endian, quindi nel tuo caso a 32 bit il file binario inizierà con 0x00 0x50 0x00 0x20 0x15 0x1B 0x00 0x08 ...
    Se ci sono buchi riempili con 0xFF

    Altrimenti l'intel hex è semplice, va bene anche Wikipedia e un linguaggio di programmazione qualsiasi
    https://en.m.wikipedia.org/wiki/Intel_HE
    Parti col record type 02 per fissare l'address (dato che l'indirizzo è > 64 kB), fai le righe di dati con il type 00, usi nuovamente 02 se superi i 64kB, quando hai finito chiudi con il type 01
Devi accedere o registrarti per scrivere nel forum
1 risposte