Hello. Si on mettais les mains dans le cambouis ?

  • Auteur de la discussion raoullevert
  • Date de début
R

raoullevert

Membre
Inscrit
24 Juillet 2015
Messages
3
Points
1
  • #1
Bonjour tout le monde,

Je viens d'acheter une petite tablette pas cher (Talk7x U51GT-C4B) et au bout de 30 secondes je me suis juste dis : c'est cool, machine totalement ouverte avec un SOC sympa et plein de choses à faire dedans. Je me suis donc lancé dans la chasse aux infos sur les customs ROMs. Mon soucis, c'est que je n'arrive pas à avoir d'infos fiables, sérieuses avec une utilité technique réelle. Les tutos sont super bien fait, mais j'aimerais partir d'un peu plus bas.

Dans l'idée : mon soc est allumé.
1) Il va booter d'une part sur le bootloader (genre U-boot). Jusque là je dois avoir accès a seulement quelques périphériques basiques genre RAM/ROM éventuellement USB et SSD.
2) Ce petit bootloader va trouver mon kernel, le charger en mémoire histoire d'avoir accès aux divers périphériques. Il va mettre en place l'environnement qui va bien en chargeant d'abord des daemons (usbd, adbd et accesoirement rild).
3) Init va ensuite se charger de lancer Zygotte, qui en gros est la machine virtuelle java initiale, a partir de laquelle seront "forkés" tous les processus enfants.
-=> A partir de la, on rentre dans le processus pur Android et le reste des services se lancent.

SI je me gourre n'hésitez pas a m'insulter.

Donc je peux garder le bootloader. Il ne dépends grosso modo que du hardware de base de ma tablette. Je ne vais pas m'amuser à le recoder et il suffit de lui filer en paramètre le lien vers le kernel à charger.
Pour le kernel : c'est plus ou moins un kernel linux. Donc je dois compiler un kernel comprennant tous les drivers correspondants à ma machine. Pour cela j'ai utilisé
S'il vous plaît, Connexion ou S'inscrire pour voir le contenu ou les urls !
. Ca ne devrait pas être trop trop dur à faire, j'ai quasi toutes les infos (soc/périphériques).

La grosse question suivant : Qui gère quoi entre le kernel et la couche android ? Est-ce que android est livré version pack "all include", ou dois-je récupérer autre chose afin de gérer les autres périphériques ? Autant je suis assez à l'aise avec le très bas niveau, autant la complexité et l'abstraction de Java/Android m'effraie un peu !

Désolé pour le pavé. Je me lance dans le kernel.
 
R

raoullevert

Membre
Inscrit
24 Juillet 2015
Messages
3
Points
1
  • #2
Je vais poster ici les infos utiles, dès fois que ça intéresse.

L'architecture basique.

Android est composé principalement de deux parties. Un noyau et une machine virtuelle. Le noyau à accès au bas niveau, c'est à dire a l’électronique. Il est codé principalement en C/C++ et à comme base le noyau linux. Le but du noyau est de fournir à la machine virtuelle (VM) un accès aux composants, de manière transparente. En gros : la VM se contrefous de connaître la type de caméra utilisé. L'important est de connaître la résolution, la vitesse et de savoir bien sûr que la caméra existe.

Le kernel propose 5 interfaces : system, networking (reseau), storage(stockage style disque dur/SSD), memory (RAM), processing (calculs divers), Human Interface (interface homme machine). Le premier avantage est de ne pas devoir modifier Android en profondeur afin de prendre en compte un nouveau périphérique/appareil. La VM n'a pas non plus besoin de savoir si les accélération matérielles existent et comment les utiliser. Par exemple si vos tablette/téléphone contient une puce d'accélération 3D, elle sera utilisée de manière transparente, pour peu que le kernel dispose des bon drivers.

Un petite image bien parlante.
S'il vous plaît, Connexion ou S'inscrire pour voir le contenu ou les urls !

A partir de la, on image bien que pour créer une ROM Custom, l'étape numéro 1 est de compiler un kernel adapté à son appareil.

En code, on évite d'écrire la même à deux endroits. L'idée parait simple et évidente. Quand on parcours les sources android, cette philosophie saute au yeux.
Tout est bien rangé, classé et surtout chaque plateforme est en fait une liste de composants. Le code d'une puce spécifique n'a donc qu'a être écrit une fois pour toute. Cela permet également de faciliter les évolutions du code et la gestion des bugs. Si un problème est détecte sur un appareil, chaque appareil recevra le patch correspondant à la fonction incriminée.

Dans la pratique on utilise les fichiers de configuration .mk ainsi qu'une arborescence bien claire de la forme device/partner/<company_name>. Par exemple / device/htc/sapphire ou device/samsung/tuna.

Dans le cas d'une acube Talk7C (U51GT-C4B) : le processeur est la "fameuse" puce mt6582 de chez Mediatek. Fameuse car utilisée dans pas mal de machines. Avec un GPU Mali 400MP2 qui est également courant. Pour le reste, rien de mieux que de faire un petit Spec device afin d'avoir une idée de ce que contient la bête.

General Specifications

Manufacturer: U51GT-C4B
Model: talk7x
Android: 4.2.2; eng.zmchivin1.1407573437; SDK17
KERNEL: Linux version 3.4.5 (zmchivin1@chivin-All-Series) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #1 SMP PREEMPT Sat Aug 9 16:37:04 CST 2014
CODENAME: REL
Mainboard: U51GT-C4B
BRAND: U51GT-C4B
CPU_ABI: armeabi-v7a
CPU_ABI2: armeabi
DEVICE: U51GT-C4B
DISPLAY: 0502KP162_V1.4 20140809
FINGERPRINT: HTT:4.2.2/JDQ39/1407573437:user/test-keys
HARDWARE: mt6582
ID: JDQ39
TAGS: test-keys
Display: 1024 x 600; DPI: 160; Evaluated Size: 7,4"
Touch Screen: Multitouch 5 points
GPU: Mali-400 MP; ARM; OpenGL ES-CM 1.1; OpenGL ES 2.0
GL_EXT_debug_marker
GL_OES_texture_npot
GL_OES_compressed_ETC1_RGB8_texture
GL_OES_standard_derivatives
GL_OES_EGL_image
GL_OES_depth24
GL_ARM_rgba8
GL_ARM_mali_shader_binary
GL_OES_depth_texture
GL_OES_packed_depth_stencil
GL_EXT_texture_format_BGRA8888
GL_EXT_blend_minmax
GL_OES_EGL_image_external
GL_OES_EGL_sync
GL_OES_rgb8_rgba8
GL_EXT_multisampled_render_to_texture
GL_EXT_discard_framebuffer
GL_OES_get_program_binary
GL_ARM_mali_program_binary
GL_EXT_shader_texture_lod
GL_EXT_robustness
GL_OES_depth_texture_cube_map
RAM: 1024 MB (990 MB available)
System RAM: 960.000MB
System RAM: 30.000MB
mtkfb.0: 9.000MB
Flash: 0.500 GB; 8 GB (7.250 GB actual)
zram0: 0.500 GB
mmcblk0: 7.250 GB
Processor: 4 cores; ARMv7 Processor rev 3 (v7l); Max: 1300,0 MHz; Min: 598,0 MHz
Processor : ARMv7 Processor rev 3 (v7l)
processor : 0
BogoMIPS : 2590.72
processor : 1
BogoMIPS : 2590.72
processor : 2
BogoMIPS : 2590.72
processor : 3
BogoMIPS : 2590.72
Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 3
Hardware : MT8382
Revision : 0000
Serial : 0000000000000000

Communications

Phone: GSM, Dual SIM
WiFi: wlan_mt; IEEE 802.11 b/g/n; MediaTek 6582; AP Mode
USB Host: Yes
Bluetooth: Bluetooth 4.0
GPS: Yes

Additional Features

Battery: Technology: Li-ion; Voltage: 4190
Camera: Photo: 1.9 MP; Max: 1600x1200; Video: 2.1 MP; Max: 1920x1080; Focus: auto infinity continuous-picture continuous-video; No flash
Additional Camera: Photo: 0.3 MP; Max size: 640x480; Video: 2.1 MP; Max: 1920x1080; Focus: auto infinity continuous-picture continuous-video; Flash modes: off
Accelerometer: ACCELEROMETER (MTK); range: 0...32; resolution: 0,004 (0,012%); power: 0,13mA;
Proximity sensor: PROXIMITY (MTK); range: 0...1; resolution: 1 (100%); power: 0,13mA;
Light sensor: LIGHT (MTK); range: 0...10240; resolution: 1 (0,01%); power: 0,13mA;
Vibrator: Yes
Supported languages: 54; Afrikaans; Amharic; Arabic; Belarusian; Bulgarian; Bengali; Catalan; Czech; Danish; German; Greek; English; Spanish; Estonian; Persian; Finnish; Filipino; French; Hebrew; Hindi; Croatian; Hungarian; Indonesian; Icelandic; Italian; Japanese; Khmer; Korean; Lithuanian; Latvian; Marathi; Malay; Burmese; Norwegian; Dutch; Polish; Portuguese; Romansh; Romanian; Russian; Slovak; Slovenian; Serbian; Swedish; Swahili; Tamil; Thai; Filipino; Turkish; Ukrainian; Urdu; Vietnamese; Chinese; Zulu
FM radio: FM Radio
Auto Generated by: Spec Device (www.specdevice.com)

Au final la mission consiste surtout à récuperer les bouts de code et les assembler dans le bon ordre.
 
morfredus

morfredus

Moderateur Global
Inscrit
19 Juin 2013
Messages
5 555
Points
63
  • #3
Bonsoir
Sujet déplacé dans la bonne section
 
R

raoullevert

Membre
Inscrit
24 Juillet 2015
Messages
3
Points
1
  • #4
Désolé.
 
morfredus

morfredus

Moderateur Global
Inscrit
19 Juin 2013
Messages
5 555
Points
63
  • #5
Pas de mal ^^
Par contre évite les double post ;)

Je pense que tu vas avoir des réponses ^^
 

Sujets en relation

Haut Bas