4 | | Dans le cadre du projet SoCLib/ANR seules ces deux types de configuration sont documentées. |
5 | | D'autres configurations sont possibles dont, par exemple, celle adaptée aux cartes mères de PC/x86. |
6 | | Elles ne sont pas documentées ici, mais sont présentent dans le dépot svn de MutekH. |
| 4 | This quickstart guide only present 2 target plaforms among those supported by MutekH. |
| 5 | These platforms are linux/darwin user process and the SoCLib hardware simulator. |
| 6 | Other supported platforms are multiprocessors IBMPC/x86 and some micro-controllers. |
10 | | MutekH est compilable sur plusieurs processeurs de la bibliothèque SoCLib comme |
11 | | le Mips et le PowerPC. Il est également compilable sur intel X86 en natif ou en |
12 | | émulation dans un processus Unix. |
13 | | |
14 | | = Les configurations de MutekH = |
15 | | |
16 | | MutekH est entièrement configurable pour s'adapter à la fois au matériel sur lequel il s'exécute mais aussi aux besoins de |
17 | | l'application. |
18 | | Il existe une centaine de paramètres permettant de définir une configuraion. |
19 | | Chaque paramètre peut prendre plusieurs valeurs. |
20 | | Les paramètres ne sont pas indépandants les uns vis à vis des autres, deux paramètres peuvent s'exclure ou dépendre l'un de |
21 | | l'autre. |
22 | | MutekH facilite la définition d'une configuration en vérifiant les règles de dépendances et la cohérences des valeurs. |
23 | | |
24 | | Dans ce document nous allons voir deux configurations. |
25 | | |
26 | | 1. Une configuration pour une plateforme x86 émulée dans un processus unix. |
| 10 | MutekH can be compiled for Mips, Arm, PowerPC, x86 and Avr porcessors. |
| 11 | |
| 12 | = MutekH configurations = |
| 13 | |
| 14 | The MutekH kernel source code is fully configurable and can be tweaked to adapt hardware platform |
| 15 | and application needs. Configuration is handled by a dedicated tool which check dependencies and |
| 16 | other relationships between the large set of available configuration tokens. |
| 17 | |
| 18 | This document present two source code configurations: |
| 19 | |
| 20 | 1. A first MutekH build designed to run embedded in a unix process. |
32 | | Les premières applications de ce document utilisent cette configuration. Au delà de son aspect jouet, cette configuration est utile à chaque fois que l'on |
33 | | s'intéresse à la mise au point d'un algorithme et que l'on a pas besoin de coprocesseurs, ni d'interruption. |
34 | | |
35 | | 2. Une configuration pour un cluster à 4 processeurs (Mips ou PowerPC) autour d'un NoC/VCI. |
36 | | Cette configuration permet de créer une application pour un simulateur de SoC en systemC/SoCLib. |
| 26 | The first example below show how to run MutekH using this configuration. |
| 27 | |
| 28 | 2. The second example below explain how to setup a SoCLib hardware simulator with 4 RISC processor (Mips, Arm or PowerPC). |
39 | | = Premiers pas sur une plateforme émulée = |
40 | | |
41 | | Pour ce premier essai seules les sources de MutekH sont nécessaires. |
42 | | |
43 | | == Récuperation des sources == |
44 | | |
45 | | {{{ |
46 | | svn co -r 997 https://www-asim.lip6.fr/svn/mutekh/trunk/mutekh |
47 | | }}} |
48 | | crée un répertoire mutekh contenant les sources et les documentations de MutekH. |
49 | | L'organisation des sources suit celle des bibliothèques. |
| 31 | = Part 1 : Running MutekH in a UNIX process = |
| 32 | |
| 33 | This first example only require to get the MutekH source code. |
| 34 | |
| 35 | == Getting the sources == |
| 36 | |
| 37 | {{{ |
| 38 | svn co -r 1024 https://www-asim.lip6.fr/svn/mutekh/trunk/mutekh |
| 39 | }}} |
| 40 | Source tree is organized this way: |
57 | | |-- gpct API de gestion des ensembles |
58 | | |-- hexo API d'Hexo |
59 | | |-- libc API standard C |
60 | | |-- libnetwork API de la pile de protocole réseau |
61 | | |-- libpthread API des threads Posix |
62 | | |-- libsrl |
63 | | |-- libunix API des appels système Unix |
64 | | |-- libvfs API Virtual File System |
65 | | |-- mutek |
66 | | |-- scripts |
67 | | `-- tools |
68 | | }}} |
69 | | |
70 | | == Ecriture du premier programme == |
71 | | |
72 | | Le programme de test va être placé dans un sous-répertoire du répertoire de mutekh. |
73 | | |
74 | | Note: Cet exemple est disponible directement dans le sous repertoire `examples/hello`. |
75 | | |
76 | | 1. Création du répertoire de test, dans le répertoire mutekh |
| 48 | |-- gpct container library, available as a separate project |
| 49 | |-- hexo Hexo hardware abstraction layer |
| 50 | |-- libc standard C library |
| 51 | |-- libm standard math library |
| 52 | |-- libnetwork netwotk stack |
| 53 | |-- libpthread posix thread library |
| 54 | |-- libvfs virtual File System |
| 55 | |-- mutek hardware independant kernel code |
| 56 | |-- scripts build system scripts |
| 57 | `-- tools some usefull tools |
| 58 | }}} |
| 59 | |
| 60 | More directories are actually available with other libraries and features. |
| 61 | |
| 62 | == Writing the example source code == |
| 63 | |
| 64 | Note: This example is available directly from {{{examples/hello}}} in source tree. |
| 65 | |
| 66 | - Creating a new modules directory |
110 | | == Configuration de MutekH == |
111 | | |
112 | | Tapez le fichier de configuration suivant dans le fichier `hello/config_emu` |
113 | | Nous verrons plus loin la signification des configurations. |
114 | | Disons rapidement que cette configuration indique: |
115 | | - la licence de l'application (et la vérification que les composants sont compatibles avec ce choix), |
116 | | - que la plateforme cible s'exécute dans un processus Unix sur une plateforme X86 |
117 | | - que l'application utilise les Pthreads. |
118 | | - que les affichages se font sur le terminal. |
119 | | - que l'on déclare un nouveau module nommé "hello". |
120 | | |
121 | | Le code source de MutekH est découpé en modules. Nous devons declarer un noveau module que nous appelerons "hello" pour que notre application soit compilée en même temps que le reste du système. Le chemin de ce module doit être spécifié, dans notre cas ce chemin est identique à celui du fichier de configuration que nous écrivons. |
| 102 | == Writing the MutekH configuration file == |
| 103 | |
| 104 | Our configuration file is named `hello/config_emu`. |
| 105 | Details about configuration file is explained later. |
| 106 | This configuration file describe the following things: |
| 107 | - The application license, used to check license consistency for modules in use, |
| 108 | - The target hardware platform and processor |
| 109 | - Use of the POSIX threads library |
| 110 | - Use of terminal output |
| 111 | - Declaration of a new "hello" modules |
| 112 | |
| 113 | The MutekH source code is split in modules. We now have to declare our new module to have it compiled along with the kernel by the build system. As modules may be located out of the source tree, we have to specify the module directory. |
170 | | = Aller plus loin avec une plateforme SoCLib = |
171 | | |
172 | | |
173 | | == Récupération des sources de SoCLib == |
174 | | |
175 | | Il faut disposer d'une installation fonctionnelle de SoCLib, on vous renvoie au site de soclib à la page d'installation: https://www.soclib.fr/trac/dev/wiki/InstallationNotes |
176 | | |
177 | | == Description de la plafeforme SoCLib == |
178 | | |
179 | | Pour ce premier contact avec MutekH, nous avons préparé un plateforme à 4 processeurs. |
180 | | Cette plateforme se trouve dans les plateformes de démo de SoCLib dans le répertoire |
| 163 | = Part2 : Running MutekH in a multiprocessor SoCLib simulator = |
| 164 | |
| 165 | == Getting SoCLib == |
| 166 | |
| 167 | We now need to have a working SoCLib install. SoCLib installation is explained here: https://www.soclib.fr/trac/dev/wiki/InstallationNotes |
| 168 | |
| 169 | == SoCLib platform description == |
| 170 | |
| 171 | The SoCLib source tree contains a platform dedicated to this tutorial: |
238 | | On note que la définition des processeurs change. On indique qu'il s'agit de 4 mips de type little-endian. |
239 | | Le systeme peut donner des informations sur les options en tapant la commande: |
240 | | |
241 | | {{{ |
242 | | make CONF=hello/config_mips showconfig TOKEN=CONFIG_SMP |
243 | | }}} |
244 | | L'ensemble des configurations possibles (une centaine) peut être obtenu par la commande ci-après: |
245 | | {{{ |
246 | | make CONF=hello/config_mips listconfig |
247 | | }}} |
248 | | |
249 | | Voir BuildSystem pour plus d'informations |
250 | | |
251 | | == Description de la plateforme == |
252 | | |
253 | | On voit qu'on a ajouté un token `CONFIG_ARCH_DEVICE_TREE` dans le fichier de configuration, celui-ci sert à |
254 | | dire qu'on a une définition de la plateforme sous forme d'un FlattenedDeviceTree qui accompagne le kernel. |
255 | | |
256 | | Il faut en fait compiler cette description dans le kernel, en l'ajoutant dans la Makefile. Le fichier `hello/Makefile` contient alors: |
| 228 | You may have noticed the processor definition change: |
| 229 | we are now building for a 4 little-endian Mips processor platform. |
| 230 | |
| 231 | Have a look to the BuildSystem page for more information about configuration system. |
| 232 | |
| 233 | == Platform description == |
| 234 | |
| 235 | As this hardware platform use now hardware enumeration (plug and play), the `CONFIG_ARCH_DEVICE_TREE` |
| 236 | token in the configuration file let the kernel get the platform layout description from a |
| 237 | FlattenedDeviceTree which will be built-in. |
| 238 | |
| 239 | We have to provided the platform description FlattenedDeviceTree and add it to the Makefile to have it compiled in. |
| 240 | The `hello/Makefile` file must contain: |
349 | | == Compilation de l'application et de MutekH == |
350 | | |
351 | | La plateforme mutek_tutorial s'adapte automatique à la configuration des sources de MutekH (type de cpu, ...). |
352 | | De plus, on peut compiler le noyau depuis le répertoire de la plateforme, donc en dehors de l'arborescence de MutekH. |
353 | | |
354 | | La Makefile fournie contient tout le code nécessaire. Elle a besoin de 3 variables: |
| 333 | == Compiling the application along with MutekH == |
| 334 | |
| 335 | The MutekH kernel and th application may be built out of the source tree. |
| 336 | |
| 337 | Change to the SoCLib platform directory and apply the following steps to experiment |
| 338 | with out of tree compilation. You have to setup the following variables: |
| 339 | |
372 | | Cette commande compile successivement le noyau, puis la plateforme. |
373 | | |
374 | | == Exécution == |
375 | | |
376 | | Le simulateur prend en argument le kernel à charger ainsi que le type et le nombre de processeurs. Dans notre cas, il est dans `mutekh/kernel-soclib-mips.out` et s'exécute sur une plateforme avec 4 processeurs mips32: |
377 | | |
| 352 | This will build the MutekH kernel allong with the application. |
| 353 | You can still build MutekH separately as explained in the first part. The simulator can then be built using: |
| 354 | |
| 355 | {{{ |
| 356 | $ cd soclib/soclib/platform/topcells/caba-vgmn-mutekh_tutorial |
| 357 | $ make system.x |
| 358 | }}} |
| 359 | |
| 360 | == Execution == |
| 361 | |
| 362 | The simulator needs the MutekH executable file name and the processor type and count: |