RISOLTO Programmazione ARM / smartphone / bootloader

Pubblicità

pedothebest

Nuovo Utente
Messaggi
89
Reazioni
2
Punteggio
28
Ciao ragazzi ho un problema :

praticamente dopo aver studiato come funziona l'architettura ARM sui telefoni ho deciso di fare un semplice programma e poi passare a qualcosetta di un po' piu' complicato. il fatto è che con l'emulatore QEMU il mio programma fatto in c++/assembly funziona (l'assembler e il linker fanno parte dell'ambiente linux)... il problema è che il mio programma è bare metal(funziona senza sistema operativo perchè lavora direttamente con i registri della cpu) e non so come farlo caricare al telefono visto che è android
se qualcuno ha una piccola esperienza in questo ambito o che cmq mi possa aiutare ad uscire da questa posizione è ben accetto. :luxhello::luxhello::luxhello: grazie mille !!
 
Ultima modifica:
Per curiosità, quanto affermi di aver scritto (il termine corretto è «bootsector» perché appunto contiene, nel primo settore del MBR, il codice di boot) funziona? Architettura? Come chiami il C++ da asm?
 
Per curiosità, quanto affermi di aver scritto (il termine corretto è «bootsector» perché appunto contiene, nel primo settore del MBR, il codice di boot) funziona? Architettura? Come chiami il C++ da asm?
Architettura: armv7 cortex-a5
funziona ? Non te lo so dire per ora in quanto non ho modo di testare il codice il compilatore gcc è compatibile con questa architettura ma l'emulatore qemu no ( ho provato con le architetture simili)
come richiamo il c++ da asm = semplice tramite un linker script ovviamente utilizzando le specifiche gcc.
Come faccio a debbuggare il codice se non ho una macchina virtuale e non riesco ad implementarlo su quella fisica dovrei modificare la ROM interna del telefono(firmware ) ma anche qui non ho nessuna esperienza so solo che non sarà facile modificarlo visto che è una memoria a sola lettura :bevuta: ma se si possono installare gli aggiornamenti al firmware(FOTA) qualche modo ci deve pur essere
 
Ultima modifica:
Dai un'occhiata qua. Però mi è comunque dubbio cosa tu abbia fatto, dato che chiamare il C++ da ASM presuppone un bel po' di codice, almeno per quanto ne so su x86. Come emulatore penso Bosch possa funzionare...
 
Mentre per caricarlo nel telefono qualche idea ? :(

Il problema e' che i SoC ARM hanno ognuno un proprio meccanismo di bootstrap. In genere iniziano a fare il boot dall'indirizzo zero dell'unita' di boot ( chi sia dipende sempre dal SoC ). Il grosso inghippo e' come flashare il tuo binario sulla flash rom del telefono. In genere i produttori forniscono dei software appositi, purtroppo non tutti standardizzati.

La strada piu' semplice ( si fa per dire ) sarebbe quella di fare il reversing della rom ufficiale del produttore del telefono. In molti casi troverai in cima una lista di ATAGs ( fai riferimento alla documentazione di Linux per capire cosa sono e a che servono ), seguita dal codice di U-Boot ( il famosissimo boot loader ). Da li' e' quasi tutti in discesa, nel senso che almeno c'e' un minimo di standardizzazione.
 
Il problema e' che i SoC ARM hanno ognuno un proprio meccanismo di bootstrap. In genere iniziano a fare il boot dall'indirizzo zero dell'unita' di boot ( chi sia dipende sempre dal SoC ). Il grosso inghippo e' come flashare il tuo binario sulla flash rom del telefono. In genere i produttori forniscono dei software appositi, purtroppo non tutti standardizzati.

La strada piu' semplice ( si fa per dire ) sarebbe quella di fare il reversing della rom ufficiale del produttore del telefono. In molti casi troverai in cima una lista di ATAGs ( fai riferimento alla documentazione di Linux per capire cosa sono e a che servono ), seguita dal codice di U-Boot ( il famosissimo boot loader ). Da li' e' quasi tutti in discesa, nel senso che almeno c'e' un minimo di standardizzazione.
ohh finalmente uno grande
 
Pubblicità
Pubblicità
Indietro
Top