Ecco un sacco di domande! Ecco alcune risposte:
Come si ottiene il binario compilato in un processore ARM?
Varia a seconda di un numero di fattori.
JTAG è il metodo normale (penso che sia ciò che la mia ricerca ha indicato ...)?
La maggior parte (forse tutti) dei moderni dispositivi basati su ARM includono un'interfaccia JTAG (esclusi i soft core su un FPGA). Questo in genere può essere usato per programmare on-chip o flash esterno o caricare direttamente nella RAM. L'interfaccia JTAG è anche l'interfaccia per le funzioni di debug e traccia on-chip. Alcuni dispositivi dispongono di interfacce di debug/programmazione aggiuntive, come ad esempio l'SWD ARM's.
È l'unico metodo?
In alcuni casi. Alcuni microcontrollori basati su ARM includono una ROM bootloader su chip che può supportare il flash seriale, USB, NAND Flash o altri mezzi di programmazione del flash su chip. A volte una tale funzione è molto semplice e si intende solo caricare ed eseguire un bootloader secondario che viene eseguito dalla RAM e fa la programmazione flash effettiva.
Se è un metodo valido, esattamente come lo si usa in quel modo?
Utilizzando il software host appropriato. JTAG è un'interfaccia molto semplice e non definisce alcuna funzionalità particolare, ma solo un mezzo per il trasferimento dei dati. In genere il software di programmazione deve sapere con quale dispositivo sta comunicando e se la memoria flash non è on-chip, sarà necessario conoscere il dispositivo flash e il suo indirizzo. Spesso la toolchain di sviluppo include il supporto per la programmazione dei dispositivi, in particolare per i dispositivi con memoria on-chip. Se si utilizza la toolchain GNU, è possibile utilizzare OpenOCD per programmare il dispositivo e interfacciare il debugger GNU.
Se non è allora cosa è/come faccio?
Se il target è un COTS, potrebbe includere un bootloader che consente già l'aggiornamento del software tramite USB, seriale o Ethernet, ad esempio.
Inoltre, è possibile utilizzare qualcosa come un Arduino per creare un'interfaccia JTAG improvvisata (se è effettivamente necessario per programmare i dispositivi ARM). . .?
Probabilmente, come ho detto JTAG stesso è banalmente semplice da implementare, il problema è renderlo compatibile con qualsiasi software host che si utilizzerà (o rendere il software compatibile con esso). Gli adattatori JTAG "wiggler" più semplici sono implementati tramite I/O della porta parallela del PC, non particolarmente veloce, ma funzionale.
In sostanza, sto chiedendo: JTAG è il programmatore di dispositivi del mondo ARM?
'stato originariamente definito come boundary scan test interface, ma è ora ampiamente utilizzato nella maggior parte dei microprocessori e microcontrollori che includono debug e programmazione on-chip.
Posso prendere in giro uno con un Arduino (Arduino wiggler Clone o.o)? Se JTAG non lo è, cosa è e posso spoofarlo?
Non si tratta di "spoofing", l'interfaccia può essere implementata in molti modi. Il modo in cui implemnt influisce principalmente sulla velocità dell'interfaccia. 16 MHz può essere acquisito, ma un più semplice oscillatore parallelo porterebbe probabilmente a non più di 500 kHz. È un'interfaccia sincrona, quindi i clock rate variabili non sono un problema.
Oh ... E potrei aver bisogno di una spiegazione migliore di come funziona JTAG.
sono sicuro che non posso fare di meglio che la spiegazione di Wikipedia in JTAG. Ma per l'implementazione sul dispositivo di destinazione, è necessario consultare il manuale/il foglio dati di riferimento della parte.
Ho un vecchio dispositivo Palm (LifeDrive), che ha il processore XScale PXA270 credo.
"Credere" probabilmente non è sufficiente; dovrai saperlo. I pin JTAG sono anche esposti sulla lavagna? Sarebbe normale su un prodotto di consumo omettere un connettore JTAG effettivo. Anche se ce n'è uno, sarà probabilmente un connettore proprietario e un pin-out (JTAG stesso non ne definisce nessuno, e ce ne sono diversi definiti per ARM, ma ciò che potresti trovare su una scheda di sviluppo potrebbe non essere incluso nel prodotto finale del consumatore.
Fondamentalmente, questo potrebbe essere un buon modo per giocare con ciò che è essenzialmente una massa di sensori, e altri ingressi e uscite vari, e anche abituarsi ARM linguaggio assembly.
Probabilmente è meglio avere una scheda di sviluppo pronta all'uso con i pin e le interfacce I/O esposti.Per un prodotto di consumo, è probabile che solo i pin richiesti dall'applicazione di destinazione siano esposti, e anche in questo caso potrebbero non essere accessibili se sono collegati ai dispositivi BGA. Inoltre, XScale si trova all'estremità complessa dei dispositivi ARM (all'incirca tra ARM9 e ARM11), se non si ha familiarità con tali dispositivi e cose come il controllo dell'orologio PLL, il controllo e la sincronizzazione di SDRAM e la configurazione della MMU, si potrebbe voler guardare qualcosa di più semplice Non solo, ma dal momento che sia Flash che RAM saranno off-chip, occorreranno dettagli sulla mappatura degli indirizzi della memoria e di altri dispositivi esterni, oltre ai necessari dettagli di temporizzazione SDRAM. Trattandosi di un dispositivo consumer, tali dettagli potrebbero non essere disponibili se non mediante reverse engineering.
Detto questo, per quanto riguarda il commento precedente sui bootloader, Palm fornisce a user installable ROM update per il dispositivo, quindi deve avere un bootloader. Tuttavia, avresti ancora bisogno di dettagli sul formato del file immagine e sul protocollo di trasferimento dati. È improbabile che siano pubblicati e probabilmente difficili da decodificare.
se volevo solo giocare con programmazione embedded, lo farei sul mio Arduino invece.)
Ci sono un sacco di scheda di sviluppo a basso costo ARM disponibili. Prova ad esempio Olimex: hanno anche un basso costo "Wiggler" clone JTAG adapter.
Come si ottiene il binario compilato in un processore x86? –
Tramite un emulatore. –
Non proverò nemmeno a competere con la (eccellente) risposta di Clifford. Ho un numero di esempi di bracci per un numero di schede di braccio a basso costo. Il discovery stm32f4 per $ 20 è un buon percorso, quello che devi caricare viene fornito con la scheda. La scoperta della linea del valore di $ 10 stm32, simile/stessa storia. http://github.com/dwelch67/ Ho alcuni simulatori di braccia e anche thumbulator e amber_samples, così puoi avere i piedi bagnati gratis. –