Domanda

Vorrei creare / avviare un simulatore per la seguente scheda microcontrollore: http://www.sparkfun.com/commerce/product_info.php?products_id=707#

Il firmware è scritto in assembly, quindi sto cercando alcuni suggerimenti su come procedere per simulare gli input che l'hardware riceverebbe e quindi il simulatore risponderà agli output del firmware. (che richiederebbe anche l'esecuzione del firmware nell'ambiente simulato).

Qualche suggerimento su come iniziare?

Grazie Chris

È stato utile?

Soluzione

Scrivere un intero emulatore sarà una vera sfida. Ho già provato a scrivere un emulatore ARM, e lascia che te lo dica, non è un piccolo progetto. Dovrai emulare l'intero core della CPU o trovarne uno già scritto.

Dovrai anche capire come funziona tutto l'IO. Potrebbero esserci dei documenti da Sparkfun su quella scheda, ma dovrai scrivere un gestore di memoria se utilizza MMIO, ecc.

Il concetto di emulatore non è poi così lontano da un interprete, davvero. È necessario interpretare il codice del firmware e in sostanza seguire le istruzioni.

Consiglierei un buon debugger interattivo invece di affrontare un emulatore. Le possibilità di distruggere l'hardware sono scarse, ma in realtà preferiresti acquistare una nuova scheda o spendere 9 mesi a scrivere qualcosa che non implementerà l'intero sistema?

È probabile che PIC 18F2520 abbia già un core di emulazione scritto per esso, ma dovrai approfondire tutte le specifiche hardware per vedere come tutto l'IO è ancora mappato. Se ti senti all'altezza, sarebbe un buon progetto, ma prenderei invece in considerazione l'utilizzo di un debugger remoto.

Altri suggerimenti

Dovrai scrivere un simulatore PIC e quindi emulare la funzionalità IO delle porte.

Ad essere sincero, sembra che sia progettato come un kit di sviluppo - non mi preoccuperei che il tuo codice distrugga il dispositivo se ti prendi cura. A meno che non si tratti di un secondo classificato per un pacchetto aziendale, metterei seriamente in discussione il ROI nello scrivere una sim.

C'è un motivo particolare per creare un emulatore / simulatore, piuttosto che usare la cosa reale?

La scheda è economica; Microchip ora ha il debugger RealICE che è un po 'più reattivo rispetto al vecchio ICD2 "disco da hockey".

MPLAB di Microchip già ha un simulatore integrato. Non simulerà l'intera scheda per te, ma gestirà il 18F2520. È possibile ordinare i vettori di test di ingresso e amp; registro dei file di output, l'ho già fatto con un diverso Microchip IC ed era fattibile ma un po 'ingombrante. Ti suggerirei di adottare l'approccio unit test e di modulare il modo in cui fai le cose; capire gli input di test e gli output previsti per un pezzo gestibile del sistema.

  

È probabile che il PIC 18F2520 abbia già un core di emulazione scritto per esso,

Un simulatore multipiattaforma open source per microchip / PIC è disponibile sotto il nome di " gpsim ".

È estremamente improbabile che un errore nel codice possa danneggiare i circuiti fisici. Se ciò è possibile, allora è un bug nella progettazione della scheda o deve essere chiaramente documentato.

Se posso offrirti un suggerimento da molti anni di esperienza lavorando con questi dispositivi: non programmarli in assemblea. Diventerai pazzo. Usa C o BASIC o un linguaggio di livello superiore. Microchip produce un compilatore C per la maggior parte dei loro chip (non so per questo), e anche altre aziende li producono.

Se insisti nell'usare un emulatore, sono abbastanza sicuro che Microchip crei un emulatore per quasi tutti i loro microcontrollori (almeno uno per ogni linea di prodotti, che probabilmente sarebbe abbastanza buono). Questi emulatori non sono sempre economici e non sono sicuro della loro capacità di accettare input esterni complessi.

Se vuoi ancora provare a scrivere il tuo, penso che scoprirai che emulare il PIC stesso sarà abbastanza semplice: il formato di tutti gli opcode è ben documentato, così come l'architettura della memoria, ecc. emulare gli altri dispositivi sulla scheda e le interconnessioni tra loro che ti uccideranno. Potresti voler esaminare la codifica delle interconnessioni tra i componenti usando uno strumento VHDL che ti permetterà di creare simulazioni personalizzate per i diversi componenti.

Non è questo un problema di simulatore hardware nel ciclo? (ad es. http://www.embedded.com/15201692 )

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top