Newsgroup: it.comp.os.linux.sys
Titolo: Emulatore Cortex A0

Qualcuno di voi conosce un emulatore ARM Cortex-M0 ?
Ho un firmware per un dispositivo che vorrei bootare da Linux.
LPC1114F, per la precisione.
 
Questa per intenderci: 
http://www.nxp.com/documents/data_sheet/LPC111X.pdf
 


Non hai trovato niente nei meandri delle reti w.w.w. ?
ARM C-M0 == CPU per dispositivi specifici ?

 ARM C-M0 == CPU per dispositivi specifici ?
 
Vale a dire?
 


Uhm, e loro non forniscono un emulatore?
 
Comunque, "qemu" ha un "ARM" nella lista delle
CPU disponibili, non so che tipo, pero`.
 
Quasi certamente non avra` supporto per le
periferiche specifiche.
 
bye,
 
-- 
 
piergiorgio

 periferiche specifiche.
 
E' relativo... devo riuscire a bootare un firmware senza passare dal device (che è una stampante), qualunque modo mi va bene.


Ciao,
 
questi micro (M0, non A0 come nell'oggetto) si utilizzano per 
controllare dell'hardware specifico su delle board custom... a meno che 
il dispositivo che vuoi emulare non faccia praticamente nulla, dubito 
che potrai ottenere qualcosa.
Tieni inoltre presente che tutti i micro ARM di ARM hanno solo il core, 
il resto (seriali, USB, ADC ecc) è fatto dal produttore del micro (nel 
caso, NXP), pertanto con un emulatore ARM puoi emulare soltanto il core 
e non le periferiche.
ARM non fa silicio, vende solo l'IP del core ai vari produttori come ST, 
NXP, TI, Samsung ecc.
 
Ciao,
 
L
 

 NXP, TI, Samsung ecc.
 
Di periferiche in realtà ne ho solo 3: una testa stampante termica, un modulo wifi ed un modulo GSM.
 
A me andrebbe bene anche fare il boot di questo arnese e potervi accedere con qualche console, se poi le periferiche non funzionano, amen.
 
Tutto questo perchè come indicato in qualche thread fa, ho un firmware Cinese compresso con LZMA che non riesco in alcun modo a decomprimere e che mi piacerebbe ribaltare come un calzino (o quantomeno, realizzarne uno parallelo da zero) ma evitando di fare badflash alla stampante.
 
Di decompilatori manco l'ombra. Se poi oltretutto non riesco a separare l'lzma, è tutto vano. binwalk non mi estrae nulla di utile, tutti file vuoti.

 Di decompilatori manco l'ombra. Se poi oltretutto non riesco a separare l'lzma,
 > è tutto vano. binwalk non mi estrae nulla di utile, tutti file vuoti.
 
Quando parlavo di periferiche intendevo le periferiche del micro. 
Probabilmente la tua testa stampante, il tuo modulo wifi e il modulo GSM 
sono collegati tramite tre UART al micro LPC1114F. Un emulatore ARM non 
emula le UART dei micro, perché realizzate dal produttore del micro e 
non da ARM. Due micro con core ARM di produttori diversi è praticamente 
impossibile che abbiano le stesse UART, o le stesse USB o lo stesso MAC.
 
Per il resto, tu stai partendo dall'ipotesi sbagliata di avere sotto un 
qualche linux. In realtà su questi micro si lavora bare-metal (è il mio 
lavoro da ahimè 20 anni). Probabilmente una console non c'è (e se c'è è 
qualcosa di servizio custom, fatta dal produttore, magari per il 
collaudo del dispositivo), mentre binwalk non trova nulla perché in quel 
binario non c'è un filesystem ma c'è il codice macchina del micro.
 
Puoi certamente decompilare il firmware ma, avendo i manuali della testa 
stampante, del modulo wifi e del modulo GSM temo tu faccia molto prima a 
rifarlo da zero, supponendo comunque una certa esperienza nel campo.
 
Ciao,
 
L
 

 rifarlo da zero, supponendo comunque una certa esperienza nel campo.
 
Come decompileresti il tutto ? Io devo variare un paio di comportamenti (che tra l'altro sono già previsti di fabbrica ma "bloccati" dai cinesi).
 
Magari riuscire a decompilare e ricompilare correttamente mi permette di fare queste semplici customizzazioni.
 
Per intenderci il dispositivo si configura mediante un file INI da flashare tramite apposito strumento. Questo file ini è documentato solo per le voci che i cinesi vogliono far usare. Il resto lo forniscono a pagamento. Quando mi hanno sbloccato una funzione, mi hanno inviato il pezzo di INI da aggiungere al resto del file in mio possesso.
 
Quindi, se tanto mi da tanto, dentro quel firmware c'è scritto come fare le 2-3 cose che mi servono.
 
In aggiunta, ho un dispositivo IDENTICO a livello di hardware (anzi, con una periferica in meno, che è plug-in e non integrata) ma con firmware prodotto da terzi. Questo firmare è diviso in due parti, una per il controller GSM (SIM840W, che non intendo variare), una con l'applicativo vero e proprio.
 
(se mi autorizzi, ti invio i due firmware in privato)

 di fare queste semplici customizzazioni.
 
Ti chiedo scusa per una mia imprecisione: il decompilare inteso come 
avere un C partendo dal codice macchina è impossibile... il decompilare 
inteso come vedere l'assembler è fattibilissimo.
 
Immagino che l'INI di cui parli venga masticato da un qualche software 
su PC che poi si connetterà col dispositivo (come?) per sbloccare le 
varie funzioni. In questo caso probabilmente sul dispositivo ci sarà una 
qualche memoria flash seriale piccolina che si tiene in pancia la 
configurazione, tipo una 24xx, 25xx o 93xx.
 
Presupponendo una grande conoscenza del core Cortex M0 e del micro su 
cui si va a lavorare, quello che vuoi fare è molto molto complicato. 
Bisognerebbe conoscere bene cosa deve fare la macchina per capire se 
vale la pena sputare sangue a far quello che vuoi fare tu o se conviene 
rifare tutto di sana pianta.
 
PS: hai un link dove poter vedere questo dispositivo?
 
PPS: se lo scopo è sbloccare delle funzioni, perché non lavorare sul 
software lato PC? Tempo fa ricordo che le applicazioni .net erano 
"abbastanza" decompilabili (ma io non l'ho mai fatto)
 
 
 

 "abbastanza" decompilabili (ma io non l'ho mai fatto)
 
Non credo basti sbloccarle lato applicativo. L'applicativo non fa altro che inviare l'ini tramite seriale alla stampante, poi la stampante lo parsa.

 Si, intendevo assembler.
 
Posso consigliarti l'IDE che uso per lavoro... 
http://www2.keil.com/mdk5/
 
C'è un simulatore per ARM Cortex M, ARM7 e ARM9, oltre alla toolchain 
ARM che genera binari fino a 32KB nella versione free.
 
Se riesci a trovare i pin per il debug, puoi collegarci anche un 
debugger così da lavorare passo passo direttamente sulla tua board... su 
ebay trovi dei compatibili a due soldi.
 
Se hai bisogno di qualche altra dritta puoi contattarmi in email (togli 
"segamiqui"), qui siamo OT.
 
Ciao,
 
L

 ebay trovi dei compatibili a due soldi.
 
Qui diventa troppo complicato, non è il mio campo, non l'ho mai fatto prima.
In altre parole: non sono capace.
 
Tra una decina di giorni dovrebbe arrivarmi un device analogo a quello attuale ma su piattaforma Linux. Nel manuale c'è addirittura un webserver con PHP per la riprogrammazione e l'upload del firmware. Firmware che ovviamente è un archivio compresso con 7Z ed ovviamente protetto da password.
 
Voglio vedere se con il device sottomano riesco in qualche modo a sfondare l'interfaccia php per carpire la chiave (o direttamente decomprimere lo zip) o accedere in qualche modo ad eventuali console.
 
In pratica, è diventato più un esercizio personale, voglio sfondare questo dispositivo, perchè questi maledetti cinesi mi han chiesto $CifraImproponibile per cambiare un singolo parametro (a loro richiede non più di 30 secondi, perchè è già supportato dal device)