________________________________________________________________________________________________________________________________

domenica 15 gennaio 2012

[SMARTPAD810C][GUIDA] Compilare il kernel RK2918

Per chi: Questa guida e' pensata per dev con una ottima conoscenza di linux, che abbiano almeno una infarinatura di sviluppo C e compilazione del kernel 

Leggete prima le altre due guide:
http://smartpad810c.blogspot.com/2012/01/guida-anatomia-della-rom-rk29xx.html
http://smartpad810c.blogspot.com/2012/01/guida-compilare-cyanogen-per-lemulatore.html

in particolare presuppongo che abbiate fatto un git chekout della cyanogenmod 

In seguito alle segnalazioni di ritchey2002 e di granny66 abbiamo scoperto che sono state rilasciati due sorgenti del kerneldi due tablet basati su RockChip RK2918, quindi abbiamo buone probabilita' di compilare da zero un kernel funzionate per il nostro smartpad!

Breve introduzione
:
La CPU sul quale si basa l'intero sistema e' un RISC disegnato da una soceta' di Cambrige UK, la ARM. ARM non costruisce processori ma li disegna solamente concedendo in licenza i propri progetti ad altre societa' che posseggono linee di produzione. A causa di questo particolare metodo esistono varie versioni dell'architea arm denominate ARMv7 o Cortex e varie versioni di implemantazione di queste architetture da parte dei produttori. Per esempio la TI produce una chip basato su ARMv7 che chiama Snapdragon.
E' iportante notare come, nella maggior parte dei casi questi produttori non inseriscano sul chip che vendono soltanto la CPU ma producono un SoC (system on chip) racchiudendo parecchi dei componenti di un sistema completo sullo stesso "mattoncino" nero, questi componenti comprendono quelli normalmente presenti sulla scheda madre di un normale PC come il controller della memoria, il controller del bus di espansione ma anche la scheda grafica questo "espediente" permette di ridurre notevolmente le dimensioni del telefono, di semplificarbe la struttura e ridurne ulteriormente il consumo elettrico. Quindi, sebbene uno sanpdragon e un ASOP sono identici dal punto di vista della CPU pura differiscono non solo per la frequenza e la cache ma anche per altri componenti importanti (in un PC sarebbe come avere due computer basati sulla stessa generazione di pentium ma con frequenze diverse, motherboad diverse e schede di espansione diverse).
RK2918 e' un SoC costruito da RockChip sul quale si basano parecchi tablet a basso costo come il nostro smart pad, per cui le rom prodotte per uno di questi tablet possono girare con poche modifiche su un altro.

Partiamo!
Prima di tutto scarichiamo il kernel dell' ODYS XPress pad da quihttp://www.odys.de/downloads/softwar...SourceCode.zip, compattiamo l'archivio che contine una cartella chiamata "GPL" con dentro l'archivio "rk29sdk_gpl_kernel_20110702.tar.gz" scompattiamo anche questo archivio che creera' la cartelle "kernel" di qui prendiamo solo il file ".config"

Oltre ai pacchetti gia' installati con la guida http://www.androidiani.com/forum/med...emulatore.html occorre lzop:
sudo apt-get install lzop

Ora occorre sincronizzare i sorgenti dell'andypad, creaiamo una cartella
mkdir -p ~/android/kernel
sinronizziamo il repository:
cd ~/android/kernel
git clone https://bitbucket.org/paulobrien/and...el_andypad.git


linchiamo la toolchain per poter compilare:
ln -s ~/android/system/prebuilt/linux-x86/toolchain ~/android/kernel/
o se usate linux a 64bit
ln -s ~/android/system/prebuilt/linux-x86_64/toolchain ~/android/kernel/

a questo punto copiamo il file .config preso dal kernel ODYS e lo copiamo in "~/android/kernel/android_kernel_andypad/" a quasto punto partiamo partendo come base dal questo .config con la prima compilazione:

cd ~/android/kernel/android_kernel_andypad/
make


Ci verranno fatte una serie di domande sull'hardware, la risposte giuste dobbiamo ancora trovarle!!! Questa operazione ci serve per fare un merge del .config dell'altro kernel con quello dell'andypad che mi ha dato risultati migliori in compilazione e ad avere un primo .config come base dalla quale partire.

a questo punto partira' la prima compilazione che produrra' un kernel non funzionante.

Per trovare la giusta configurazione eseguiamo:
make menuconfig

si aprira' l'interfaccia testuale di configurazione del kernel, qui e' dove dobbiamo lavorare per configyurare correttamente il kernel...

una volta finita la configurazione uscite salvando il nuovo .config e lanciate:
make kernel.img

e avrete il vostro nuovo kernel!!!

Per ora si riesce a fare il boot, montare system e avere adb funzioannate che gia' non e' poco! Ma dobbiamo fare un sacco di prove!

Appensa si avra' un .config funzioanante lo postero' qui!

TIPS:


- Fra una compilazione e l'altra quando cambiate il .config e' meglio eseguire un "make clean" perche' a volte si porta dietro moduli compilati precedentemente

- Per vedere il boot della rom eseguite " adb logcat " appena il sistema arriva a lanciare adbd vedrete il log del procedere del boot anche se lo schermo non funzionasse

2 commenti:

morfances ha detto...

scusa finte ..non so se è voluto ma i link delle due guide puntano sul forum androidiani

Fintematic ha detto...

Ah è vero ora li cambio visto che ci sono anche qua ;)

Posta un commento

Twitter Delicious Facebook Digg Stumbleupon Favorites More