Introducción básica al funcionamiento de los SOC RK3188/3066

3

Hoy queremos dar la bienvenida a nuestra comunidad a Leolas que nos trae este manual donde explica detalladamente cuales son las partes importares y como funciona una de las plataformas mas extendidas entre los AndroidPC los SOC de Rockchip. Encontrareis el texto muy esclarecedor si os interesa el tema.

Desde AndroidPC.es siempre intentamos apoyar a los desarrolladores interesados en este sector, si tienes ganas de desarrollar roms o apps en el mundillo de los AndroidPC no dudes en ponerte en contacto con nosotros o colaborar en nuestros foros.

Podéis preguntar o aportar más información en el tema del FORO

Android_06_150px

————————————————————————————————————————————————————–

Muchas veces nos gusta enterarnos cómo funcionan nuestros dispositivos Android, pues básicamente vamos a tratar de explicar de qué partes constan y cómo funcionan estos cacharros que usamos como centros multimedia, plataformas de juegos, navegar por la red, leer nuestros emails, etc..

Esto no pretende ser excesivamente técnico y lo que quiero es daros unas ideas básicas, para que os sea más fácil identificar muchos problemas y resolverlos por nosotros mismos. Mucho me temo que va a salir un tocho largo, pero creo que saciará la curiosidad de muchos.

 

Componentes

Procesador: ejecutan las instrucciones que nos dan los programas o aplicaciones, formados por 2 (RK3166) o 4 (RK3188) procesadores (CPU), dentro tienen también nuestra GPU (chip gráficos) que se dedican a dibujar en la pantalla nuestros gráficos (en Rockchip son Mali). Las CPU y GPU tienen una determinada frecuencia de reloj que van desde un mínimo a un máximo, que van variando en función de la carga que le damos, por ejemplo, un juego 3D los tendrán a tope, a máxima velocidad, y al navegar por la web o estar sin hacer nada en el escritorio CPU y GPU bajaran su frecuencia con lo que nos dan menos consumo y calor.

RAM: Memoria volátil en la que se ejecutan los programas, es muy rápida y la CPU y GPU cogen los datos desde ahí y en ella se guardan las aplicaciones que tenemos en ejecución para tener un rápido acceso a ella. En rk3066 es de 1Gb en rk3188 usan 2Gb (normalmente, hay algunas excepciones)

NAND: Espacio de almacenamiento interno Es una memoria algo más lenta que la anterior y según el dispositivo varía desde los 4Gb a 16Gb, ahí dentro tenemos el sistema operativo (Android), y nuestros datos guardados, por lo que si nuestra NAND es de 8Gb el sistema Android consumirá una parte de ella y nos dejará el resto para guardar datos. No os están engañando si en vendedor dice que tiene 8Gb y vosotros veis solo 5Gb para guardar cosas  Más adelante entraremos más profundamente sobre esta parte.

Chip wifi: Para conectarnos a nuestra red.

BT: Bluetooth, tecnología inalámbrica para conectar dispositivos de entrada (teclados, ratones, mandos de la play, etc…) o de salida (auriculares BT, etc..) o simplemente para pasar archivos entre varios dispositivos.

Ambos dispositivos Wifi y BT suelen venir en el mismo chip y compartir antena (2,4Ghz) aunque existen excepciones. Algunos ejemplos de chips usados por nuestros cacharros: AP6210, RTK8188CU, RTL8189es, etc…

PMU: Power manager unit, se encarga de alimentar los distintos componentes internos y proporcionar los correctos volt6ajes para cada uno de ellos. (Procesador, memoria, chip Wifi, etc…) y de darnos los recursos para activarlos y desactivarlos, meterlos en suspensión, etc…

Varios puertos USB 2.0: Para conectar todo tipo de dispositivos tales como teclados, mandos, discos externos, etc…; tienen al menos dos, y uno de ellos es OTG, este puerto es el que debemos usar para actualizar nuestro stick o box, meterle customs roms, conectarlo por adb, etc.., pero también puede ser usado para conectarle dispositivos como los normales.

Ranura para una MICROSD: Como medio de almacenamiento externo para guardar datos, actualizar nuestro cacharro o instalar Linux en él

Salida HDMI: para conectarlos a nuestra tv.

Salida AV: para usarlos con las teles de tubo, pierden bastante calidad y muchas veces resultan casi imposibles centrarlos bien.

Salida SPDIF: salida de audio para conectar a nuestro amplificador.

Puerto Ethernet: para usarlo en lugar del Wifi y conectarlo a nuestra Red.

 

NAND

Normalmente está dividida en varias particiones, en su interior (en dispositivos rockchip).

Bootloader: Pequeño binario que se encarga de gestionar el arranque.

Parameter: Fichero que suministra al bootloader información sobre tipo de dispositivo, las teclas físicas del aparato y tamaño de las demás particiones.

Boot.img: pequeño initramfs, es un sistema de archivos básico en el cual se montaran las demás particiones. Puede tener un kernel (el centro del sistema operativo, binario que comunica CPU, GPU, Nand, wifi y demás chips internos).

Kernel.img: Dentro está nuestro kernel, si tenemos otro kernel dentro del boot.img este no se usará. Importante asegurarnos si queremos cambiar nuestro kenel por otro asegurarnos que nuestro boot.img no tiene uno dentro

System.img: Aquí se encuentra nuestro entorno gráfico, las aplicaciones que vienen de fábrica, configuraciones de los dispositivos internos como wifi y BT y externos como teclados, ratones,… los binarios del sistema, etc…

Recovery.img: Es otro boot.img alternativo y puede ser usado como método alternativo de arranque, el recovery que viene de stock tiene nula o al menos muy limitada su funcionalidad Sirve para hacer reset de fábrica, formatear las particiones en el primer inicio, instalar las actualizaciones oficiales y poco más. Yo prefiero usar cwm recovery que es más completo y nos permite hacer backups de nuestras roms, restaurarlas, instalar customs y fixes, conexión adb a nuestro ordenador, etc… También se puede usar estar partición para arrancar linux, Usando para ello la ranura SD como sistema de almacenamiento interno en linux y así tener nuestro sistema Android en NAND y linux en la SD.

Misc.img: pequeña partición que se encarga de informar al bootloader desde donde queremos arrancar en loader mode, normal o recovery.

Backup.img: Teóricamente esta partición almacena una copia de seguridad de la rom entera, en la práctica no es usada en la gran mayoría de roms oficiales, y nunca en las customs, pero es necesario tenerla ahí, sin ella el equipo no arranca y la liamos, lo mejor dejarla tranquila y no tocarla

Estas son las particiones fundamentales que integran una rom, en las oficiales nos vienen en un solo archivo .img empaquetadas, y en las customs roms (cocinadas) normalmente nos vienen desempaquetadas y flasheables independientemente. Pero además de éstas, hay otras particiones que se crean en el primer arranque y nos sirven para guardas nuestras aplicaciones de usuario y datos:

User.img: Este es el espacio de la NAND que se queda para guardar nuestros datos, se monta en /sdcard/ y es la memoria de almacenamiento para películas, fotos, etc…

Userdata.img: partición /DATA/ donde se almacenan las aplicaciones que instalamos, y los datos de estas, como las configuraciones de programas y demás.

Cache: Pues es otra partición que se crea en el primer arranque y como su propio nombre indica guarda hace de cache del sistema y guarda algunos datos temporales de las aplicaciones, si nuestro dispositivo entra en bootloop (se queda en la animación de inicio y no termina de entrar en el entorno gráfico) algunas veces con formatear esta partición se nos soluciona el problema.

Init.d: Puede ser implementado en la Rom usando un truco desde boot.img, pero no es ninguna parte fundamental del stick en mi opinion

 

Modos de arranque

Nuestros dispositivos rk3188 (y rk3066 también) tienen 3 modos básico de arrancar el equipo:

Modo normal: Esto sucede cuando encendemos nuestro dispositivo y cargamos nuestro sistema Android, es el modo por defecto y en este tipo de arranque si hay un kernel dentro de boot.img lo cargamos, si no nos vamos a nuestro kernel.img y lo cargamos desde allí, cargamos nuestra boot.img, un pequeño initramfs (sistema de archivos donde luego montaremos nuestro sistema android) luego montamos nuestro system.img donde está nuestro entorno gráfico, la cache, y nuestras unidades de almacenamiento, ya estamos listos para navegar por la red, ver nuestras películas, jugar, lo que sea.

Modo recovery: En lugar de usar nuestro boot.img usamos recovery.img, miramos si en nuestro recovery hay un kernel que arrancar, sino lo cogemos de la particion kernel.img, en recovery.img también hay un initramfs, más completo que en boot img, y donde tenemos un toolbox básico (comandos tipo unix) y un binario (ejecutable) llamado recovery que lanza un modo de recuperación para instalar actualizaciones y algunas cosas más.
Si nuestro recovery es cwm, tendremos un recovery más completo con busybox desde allí tendremos acceso adb al dispositivo para ejecutar algunos comandos linux-unix, tomar logs, hacer backup y restaurar, formatear particiones, etc… Para mi es fundamental que cwm recovery tenga un kernel funcional insertado, no tiene que ser el mismo kernel q se encuentre en el sistema, pero así nos garantiza un sistema para poder recuperar de algún desastre nuestro dispositivo y dejarlo completamente funcional en apenas 5 minutos  Sin tener que enchufarlo al pc, y con todas las aplicaciones que teníamos instaladas en el momento de hacer el backup
También como he mencionado anteriormente podemos tener aquí un kernel compatible con linux y arrancar linux desde la microsd.

Modo loader: Deja el sistema a la espera para flashear desde el pc el dispositivo, desde windows podemos borrar la NAND entera (erase IDB) y cargar un nuevo bootloader y todas las demás particiones. Desde linux podemos flashear las particiones pero no borrar la nand entera ni flashear el bootloader

Modo mascara:  Se consigue cortocircuitando un par de pines del chip de la nand no está hecho para ser usado normalmente.
Es un recurso extra para aquellos que no consiguen recuperar su stick de ninguna manera, conyeva un mayor riesgo en mi opinion que los otros modos, pero tienes razon, gracias, lo referenciare en mi post.

 

3 comentarios

    • Masked Rom Mode (you can access it short-circuit 2 pins of nand chip) is an artificial mode not made for normal use.
      Yes it is an extra option but it must be the last option to recover your stick, is more risky than the other ones in my opinion. But I will reference it, thanks

      Init.d, it can be implemented in the rom like a trick calling it from boot.img, but is not any part of the basic structure of the rom.

      El modo mascara, que se consigue cortocircuitando un par de pines del chip de la nand no está hecho para ser usado normalmente.
      Es un recurso extra para aquellos que no consiguen recuperar su stick de ninguna manera, conyeva un mayor riesgo en mi opinion que los otros modos, pero tienes razon, gracias, lo referenciare en mi post.

      Init.d puede ser implementado en la Rom usando un truco desde boot.img, pero no es ninguna parte fundamental del stick en mi opinion

Deja una respuesta