Changes between Version 11 and Version 12 of QuickStartSoclib


Ignore:
Timestamp:
Oct 27, 2009, 4:39:33 PM (15 years ago)
Author:
Nicolas Pouillon
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • QuickStartSoclib

    v11 v12  
    4444
    4545{{{
    46 svn co -r 766 https://www-asim.lip6.fr/svn/mutekh/trunk/mutekh
     46svn co -r 900 https://www-asim.lip6.fr/svn/mutekh/trunk/mutekh
    4747}}}
    4848crée un répertoire mutekh contenant les sources et les documentations de MutekH.
     
    168168}}}
    169169
    170 = Plus loin sur une plateforme SoCLib =
     170= Aller plus loin avec une plateforme SoCLib =
    171171
    172172
    173173== Récupération des sources de SoCLib ==
    174174
    175 renvoie au site de soclib à la page d'installation
     175Il 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
    176176
    177177== Description de la plafeforme SoCLib ==
    178178
    179179Pour ce premier contact avec MutekH, nous avons préparé un plateforme à 4 processeurs.
    180 Cette plateforme se trouve dans les sources de SoCLib dans le répertoire
    181 ``soclib/soclib/platform/topcells/caba-vgmn-mutekh_tutorial-mipsel_mipseb_ppc405/``.
     180Cette plateforme se trouve dans les plateformes de démo de SoCLib dans le répertoire
     181``soclib/soclib/platform/topcells/caba-vgmn-mutekh_tutorial/``.
    182182
    183183== Configuration de MutekH ==
     
    185185Note: Cet exemple est disponible directement dans le sous repertoire `examples/hello`.
    186186
    187 La configuration de MutekH pour une plateforme simulé de 4 processeurs va etre placé dans le fichier `hello/config_mips`:
    188 {{{
     187La configuration de MutekH pour une plateforme simulée de 4 processeurs va etre placée dans le fichier `hello/config_soclib_mips`:
     188{{{
     189
    189190# Application license
    190191  CONFIG_LICENSE_APP_LGPL
     
    200201  CONFIG_CPU_MAXCOUNT 4
    201202
     203  CONFIG_CPU_RESET_HANDLER
     204
    202205# Mutek features
    203206  CONFIG_PTHREAD
     
    207210  CONFIG_DRIVER_CHAR_SOCLIBTTY
    208211  CONFIG_DRIVER_ICU_SOCLIB
     212  CONFIG_ARCH_DEVICE_TREE
    209213
    210214# New source code module to be compiled
    211   CONFIG_MODULES hello:%CONFIGPATH
    212 }}}
    213 On note que la définition des processeurs changent. On indique qu'il s'agit de 4 mips de type bigendian.
     215  CONFIG_MODULES examples/hello:%CONFIGPATH
     216
     217# definitions of the memory sections where to put things
     218  CONFIG_ROM_ADDR 0x60100000
     219  CONFIG_ROM_SIZE 0x00100000
     220
     221  CONFIG_RAM_ADDR 0x62600000
     222  CONFIG_RAM_SIZE 0x00100000
     223
     224# Add an hardware enumerator
     225  CONFIG_FDT
     226  CONFIG_DRIVER_ENUM_FDT
     227}}}
     228
     229On note que la définition des processeurs change. On indique qu'il s'agit de 4 mips de type bigendian.
    214230Le systeme peut donner des informations sur les options en tapant la commande:
     231
    215232{{{
    216233make CONF=hello/config_mips showconfig TOKEN=CONFIG_SMP
     
    220237make CONF=hello/config_mips listconfig
    221238}}}
    222 Le résultat:
    223 {{{
    224     Configuration token name                 Declare location
    225 ===============================================================================
    226 
    227     CONFIG_ARCH_EMU                          (arch/emu/emu.config:2)
    228     CONFIG_ARCH_IBMPC                        (arch/ibmpc/ibmpc.config:2)
    229     CONFIG_ARCH_SIMPLE                       (arch/simple/simple.config:2)
    230  +  CONFIG_ARCH_SOCLIB                       (arch/soclib/soclib.config:2)
    231     CONFIG_CLUSTER                           (arch/arch.config:8)
    232  m  CONFIG_CPU_MAXCOUNT                      (cpu/cpu.config:2)
    233  +  CONFIG_CPU_MIPS                          (cpu/mips/mips.config:2)
    234     CONFIG_CPU_MIPS_ABI_EABI                 (cpu/mips/mips.config:40)
    235     CONFIG_CPU_MIPS_ABI_N32                  (cpu/mips/mips.config:34)
    236  +  CONFIG_CPU_MIPS_ABI_O32                  (cpu/mips/mips.config:22)
    237     CONFIG_CPU_MIPS_ABI_O64                  (cpu/mips/mips.config:28)
    238  v  CONFIG_CPU_MIPS_VERSION                  (cpu/mips/mips.config:16)
    239     ...
    240     (+) defined, (p) provided, (m) mandatory, (v) value.
    241 }}}
     239
     240Voir BuildSystem pour plus d'informations
     241
     242== Description de la plateforme ==
     243
     244On voit qu'on a ajouté un token `CONFIG_ARCH_DEVICE_TREE` dans le fichier de configuration, celui-ci sert à
     245dire qu'on a une définition de la plateforme sous forme d'un FlattenedDeviceTree qui accompagne le kernel.
     246
     247Il faut en fait compiler cette description dans le kernel, en l'ajoutant dans la Makefile. Le fichier `hello/Makefile` contient alors:
     248
     249{{{
     250objs = hello.o platform.o
     251}}}
     252
     253Il faut ensuite ajouter un fichier `platform.dts`, au format accepté par l'utilitaire `dtc`, contenant la définition de la plateforme. Ce format est issu de l'IEEE1275 (Open Firmware).
     254
     255{{{
     256/dts-v1/;
     257
     258/ {
     259        model = "MutekH_Tutorial";
     260        compatible = "MutekH_Tutorial";
     261        #address-cells = <1>;
     262        #size-cells = <1>;
     263
     264        cpus {
     265                #address-cells = <1>;
     266                #size-cells = <0>;
     267                Mips,32@0 {
     268                        name = "Mips,32";
     269                        device_type = "cpu";
     270                        reg = <0>;
     271                };
     272
     273                Mips,32@1 {
     274                        name = "Mips,32";
     275                        device_type = "cpu";
     276                        reg = <1>;
     277                };
     278
     279                Mips,32@2 {
     280                        name = "Mips,32";
     281                        device_type = "cpu";
     282                        reg = <2>;
     283                };
     284
     285                Mips,32@3 {
     286                        name = "Mips,32";
     287                        device_type = "cpu";
     288                        reg = <3>;
     289                };
     290
     291        };
     292
     293        tty@0 {
     294            device_type = "soclib:tty";
     295                tty_count = <1>;
     296                reg = <0x90600000 0x10>;
     297                icudev = &{/icu@0};
     298                irq = <1>;
     299        };
     300
     301        icu@0 {
     302            device_type = "soclib:icu";
     303                input_count = <2>;
     304                reg = <0x20600000 0x20>;
     305                icudev = &{/cpus/Mips,32@0};
     306                irq = <0>;
     307        };
     308
     309        timer@0 {
     310            device_type = "soclib:timer";
     311                timer_count = <1>;
     312                reg = <0x01620000 0x10>;
     313                icudev = &{/icu@0};
     314                irq = <0>;
     315        };
     316
     317        memory@0 {
     318                device_type = "memory";
     319                cached;
     320                memreg: reg = <0x61100000 0x00100000>;
     321        };
     322
     323        memory@1 {
     324                device_type = "memory";
     325                memreg: reg = <0x62600000 0x00100000>;
     326        };
     327
     328        chosen {
     329                console = &{/tty@0};
     330        };
     331};
     332}}}
     333
    242334
    243335== Compilation de l'application et de MutekH ==
    244336
    245 La plateforme mutek_basic s'adapte automatique à la configuration des sources de MutekH (type de cpu, ...).
    246 il faut donc ajouter un lien symbolique dans le repertoire de la plateforme soclib mutek_basic vers les sources de MutekH.
    247 {{{
    248 cd ~/soclib/soclib/platform/topcells/caba-vgmn-mutekh_tutorial-mipsel_mipseb_ppc405
    249 ln -s ~/mutekh
    250 }}}
    251 Par ailleurs, Mutekh doit connaitre les adresses liées au matériel de la plateforme, Il faut donc ajouter des liens symboliques dans le repertoire de mutekh vers la description des adresses de la plateforme:
    252 {{{
    253 cd ~/mutekh
    254 ln -s ~/soclib/soclib/platform/topcells/caba-vgmn-mutekh_tutorial-mipsel_mipseb_ppc405/soclib_addresses.h
    255 ln -s ~/soclib/soclib/platform/topcells/caba-vgmn-mutekh_tutorial-mipsel_mipseb_ppc405/soclib_addresses.ldscript.m4
    256 }}}
    257 On commence par compiler le système MutekH avant de compiler la plateforme.
     337La plateforme mutek_tutorial s'adapte automatique à la configuration des sources de MutekH (type de cpu, ...).
     338De plus, on peut compiler le noyau depuis le répertoire de la plateforme, donc en dehors de l'arborescence de MutekH.
     339
     340La Makefile fournie contient tout le code nécessaire. Elle a besoin de 3 variables:
     341 `MUTEKH_DIR`::
     342   Le répertoire contenant les sources de MutekH
     343 `APP`::
     344   Le répertoire contenant les sources de l'application (ici le répertoire de hello)
     345 `CONFIG`::
     346   Le fichier de configuration, dans le répertoire de la plateforme
     347
    258348La compilation de MutekH impose que les cross tools suivants soient disponibles:
    259349 - mipsel-unknown-elf-gcc
    260350 - mipsel-unknown-elf-ld
    261  - ...
    262 
    263 {{{
    264 make CONF=hello/config_mips
    265 }}}
    266 Lancer la compilation de la plateforme:
    267 {{{
    268 cd soclib/soclib/platform/topcells/caba-vgmn-mutekh_tutorial-mipsel_mipseb_ppc405
    269 make
    270 }}}
     351 - …
     352
     353{{{
     354$ cd soclib/soclib/platform/topcells/caba-vgmn-mutekh_tutorial
     355$ make MUTEKH_DIR=~/mutekh/ APP=~/mutekh/examples/hello CONFIG=config_soclib
     356}}}
     357
     358Cette commande compile successivement le noyau, puis la plateforme.
    271359
    272360== Exécution ==
    273361
    274 {{{
    275 ./system.x mutekh/kernel-soclib-mips.out
    276 }}}
     362Le simulateur prend en argument le kernel à charger, ici, il est dans `mutekh/kernel-soclib-mips.out`
     363
     364{{{
     365$ ./system.x mutekh/kernel-soclib-mips.out
     366}}}