Chargement

Portage d'applications:

De Linux vers Dingux

Par Alex320, contact@ancienne-version.com

Vous pouvez téléchargé ce tutoriel en format pdf : ici.

Sommaire:

1° Que signifie « porter » une application

2° Comment porter une application vers Dingux

1) Que signifie « porter » une application ?

D'après Wikipedia : Le portage informatique revient souvent à reprendre le code source du composant existant dans son environnement initial, puis de lui apporter les modifications nécessaires pour qu'il puisse fonctionner sur la plate-forme de destination.
Ceci est également vrai pour les logiciels fonctionnant sous Dingux.
Le portage se définit en trois étapes : Récupérer le code source du logiciel en question, modifier ce code source afin de l'adapter à la plateforme, et enfin, compiler ce code source avec les outils adéquat au processeur de la nouvelle plateforme.

Pour résumer, porter une application, c'est : Analyser, adapter, compiler.

2) Comment porter une application sur Dingux ?

a) Les outils

Le portage d'une application nécessite de connaître la plateforme de destination. Nous savons que Dingux est une version du kernel de Linux, et que le processeur est conçu par la société chinoise Ingenic, Inc. Il s'agit du microcontroleur SoC (System on the Chip) JZ4740. L'avantage est que Ingenic Inc fournit les outils permettant de réaliser l'étape la plus importante du portage : la compilation.

La compilation est une opération permettant de « transformer » un code source en un fichier binaire exécutable par le processeur. Il faut donc un compilateur adapté à chaque architecture.

Attention : La plupart des logiciels sont programmés en C/C++. Ingenic Inc fournit ce compilateur C/C++, mais aucun compilateur pour un autre langage n'est fournit.

Le compilateur de Ingenic Inc pour le JZ4740 est téléchargeable ici :
ftp://ftp.ingenic.cn/3sw/01linux/00toolchain/mipseltools-gcc412-glibc261.tar.bz2

ou ici:
mipseltools-gcc412-glibc261.tar.bz2

Il vous faudra également un éditeur de code. Code::Blocks, ou le bloc-note suffira. Attention cependant, si vous utilisez Code::Blocks, il ne faudra pas compiler le code depuis l'interface !

Comment installer le compilateur :

Allez dans le répertoire /opt, décompressez le fichier .bz2, ouvrez un shell, et tapez :
cd ~
gedit .bashrc

Ajoutez à la fin du fichier la ligne :
export PATH=$PATH:/opt/mipsel-linux-uclibc/usr/bin

b- La plateforme

La principale difficulté sera, vous l'auriez sûrement deviné, d'adapter le programme au niveau des entrées du logiciel : Il n'y a pas de clavier/souris sur la Dingoo (pas que je sache).

Les touches sont :

D-pad up <=> KEY_UP KEY_VOLUMEUP <=> 's'
D-pad down <=> KEY_DOWN KEY_VOLUMEDOWN <=>'u'
D-pad left <=> KEY_LEFT KEY_BRIGHTNESSDOWN <=> 'e'
D-pad right <=> KEY_RIGHT KEY_BRIGHTNESSUP <=> 'i'
A button <=> KEY_LEFTCTRL
B button <=> KEY_LEFTATL
X button <=> KEY_SPACE
Y button <=> KEY_LEFTSHIFT
Left shoulder <=> KEY_TAB KEY_EXIT
Right shoulder <=> KEY_BACKSPACE
START button <=> KEY_ENTER
SELECT button <=> KEY_ESC KEY_MENU <=> 'b'

Vos portages devrons être adaptés à cette contrainte. La seule solution est de :
Trouver la séquence de code qui gère les entrées du programme, et de remplacer les codes des touches de base par celles-ci.

Il y a également une seconde contrainte sous les jeux programmée avec la librairie SDL (Simple DirectMedia Layer), c'est la résolution de l'écran. En effet, n'oublions pas que la Dingoo A320 a un écran de 320 * 240 pixels.

Prenons un exemple. Nous allons porter l'application Stetris. Il s'agit d'un mini-jeu développé par Ashok Kumar, distribué ici : http://sourceforge.net/projects/stetris/

Ce mini-jeu de Tetris utilise la librairie SDL (cette librairie est très souvent employée pour développer des jeux vidéos ou autres applications de type Multimedia).

c- Analysons le code

Téléchargez le package ici :
http://sourceforge.net/projects/stetris/files/stetris/1.1/stetris.tar.gz/download
Décompressez-le, puis ouvrez avec un éditeur de texte le fichier stetris.c. Les 10 premières lignes du codes sont :

#include (SDL/SDL.h)
#include (SDL/SDL_gfxPrimitives.h)
#include (stdio.h)
#include (time.h)
#define WIDTH 640
#define HEIGHT 480
#define BPP 8
#define START_X (WIDTH/3)
#define START_Y (HEIGHT/18)
#define RECT_WIDTH (WIDTH-2*START_X)
#define RECT_HEIGHT (HEIGHT-2*START_Y)

Nous pouvons constater que, dés la cinquième ligne de code, il y aurait une modification à apporter : commençons par réajuster la résolution.

Les lignes 5 et 6 deviennent :
#define WIDTH 320
#define HEIGHT 240

Le reste du code semble correct, par rapport à un portage sur la Dingoo : les touches sont conformes aux attentes du noyau et du programme. (KEY_UP, KEY_DOWN, etc...).

d- La compilation

L'étape essentielle du portage réussi est la compilation. Transformons le code source en logiciel exécutable !

Il est donné par convention que le fichier « Makefile » est le fichier de gestion du déroulment de la compilation : quand un logiciel est lourd, il y a parfois besoin de plus de parmètres !

Ouvrons le fichier Makefile avec un éditeur de texte :

CC = gcc
CFLAGS = -lSDL -lSDL_gfx
stetris: stetris.c
$(CC) $(CFLAGS) -o stetris stetris.c

La première ligne nous indique que le compilateur est GCC (dans 80% des cas). Il s'agit du compilateur de base fournit avec Linux.

La dernière ligne est la ligne de commande finale : celle qui lance le processus après la préconfiguration.

Nous venons, précédement, d'installer le compilateur pour le processeur de la Dingoo. C'est le moment de l'utiliser :

Remplacez la première ligne par :

CC = mipsel-linux-gcc

Astuce : Pour modifier le compilateur utilisé, il suffit d'ajouter le préfixe « mipsel-linux- ».

Maintenant que le code et la ligne de compilation est prète, lançons l'opération :

  • Ouvrez un Shell
  • Tapez « cd le_repertoire_tetris/ »
  • Tapez « make »

Après quelques lignes de texte, vous verrez dans ce dossier un fichier nommé « stetris ».

Transferez ce fichier sur votre MiniSD dans le repertoire de jeux, lancer Dingux, et exécutez-le.

Vous venez de porter votre premier jeu !

Merci à Alex320 de nous avoir permis de copier son tutoriel ainsi que mettre à disposition son fichier pdf.

source:
dingoo.forumactif.net

Site créé par CeddusGenius.