add a sample script to build the kernel

This commit is contained in:
kleph 2013-10-03 00:05:00 +02:00
parent 714e23b140
commit 95be07593c

View file

@ -16,7 +16,7 @@ L'idée était de ne pas écraser le système de démo et d'essayer d'utiliser l
## Compilation ## Compilation
### Toolchain / sources ### Toolchain / sources
Je me suis inspiré de ce [wiki](http://www.eewiki.net/display/linuxonarm/SAMA5D3) pour gcc et u-boot. J'ai aussi pris les patch u-boot en suivant les liens donnés sur le wiki. Je me suis inspiré de ce [wiki](http://www.eewiki.net/display/linuxonarm/SAMA5D3) pour gcc et u-boot. J'ai aussi pris les patch u-boot en suivant les liens donnés sur le wiki.
Une fois le compilateur installé, on exporte la variable CC qui contient le chemin et le préfix de l'architecture et en informant make que l'on utilise un autre compilateur : Une fois le compilateur installé, on exporte la variable `CC` qui contient le chemin et le préfix de l'architecture et en informant make que l'on utilise un autre compilateur :
``` bash ``` bash
export CC=`${HOME}/cross/gcc-arm-none-eabi-4_6-2012q4/bin/arm-none-eabi- export CC=`${HOME}/cross/gcc-arm-none-eabi-4_6-2012q4/bin/arm-none-eabi-
ARCH=arm CROSS_COPILE=${CC} make [...] ARCH=arm CROSS_COPILE=${CC} make [...]
@ -42,6 +42,46 @@ Comme dit juste en dessous, je n'ai pas utilisé at91bootstrap et j'ai laissé c
- si je désactive l'USB, ça freeze au chargement des pilotes mmc. - si je désactive l'USB, ça freeze au chargement des pilotes mmc.
- à creuser - à creuser
#### script de compilation du noyau
Voici un exemple de script de compilation du noyau
``` bash
#!/bin/sh
# script to build stock kernel
DEPLOY_PATH=/tmp/deploy
if [ -d "${DEPLOY_PATH}" ]; then
rm -R "${DEPLOY_PATH}"
fi
mkdir "${DEPLOY_PATH}"
# local path to cross compiler
CC=/home/kleph/cross/gcc-arm-none-eabi-4_6-2012q4/bin/arm-none-eabi-
# menuconfig
# cp localconfig
make ARCH=arm CROSS_COMPILE=${CC} menuconfig
# zImage
make -j5 ARCH=arm CROSS_COMPILE=${CC} zImage
# modules
make -j5 ARCH=arm CROSS_COMPILE=${CC} modules
# dtbs
make ARCH=arm CROSS_COMPILE=${CC} dtbs
# modules archive
make ARCH=arm CROSS_COMPILE=${CC} modules_install INSTALL_MOD_PATH=${DEPLOY_PATH}/modules
# firmware archive
make ARCH=arm CROSS_COMPILE=${CC} firmware_install INSTALL_FW_PATH=${DEPLOY_PATH}/firmware
```
#### déploiement et tests
Une fois tous les éléments compilés, il faut les installer dans `/boot`.
## Configuration ## Configuration
### firmware ### firmware
@ -70,11 +110,15 @@ Les paramètres d'U-boot
On peut configurer les paramètres qu'U-Boot utilisera depuis la ligne de commande. On peut configurer les paramètres qu'U-Boot utilisera depuis la ligne de commande.
Voici des paramètres pour démarrer le noyau original fourni avec la carte et un système sur la carte SD Voici des paramètres pour démarrer le noyau original fourni avec la carte et un système sur la carte SD
```
setenv bootargs console=ttyS0,115200 mtdparts=atmel_nand:8M(bootstrap/uboot/kernel)ro,-(rootfs) rw rootfs=ext3 root=/dev/mmcblk0p2 rootdelay=2 setenv bootargs console=ttyS0,115200 mtdparts=atmel_nand:8M(bootstrap/uboot/kernel)ro,-(rootfs) rw rootfs=ext3 root=/dev/mmcblk0p2 rootdelay=2
```
Pour les archives, voici les paramètres de démarrage d'origine, pour démarrer depuis la NAND : Pour les archives, voici les paramètres de démarrage d'origine, pour démarrer depuis la NAND :
```
console=ttyS0,115200 mtdparts=atmel_nand:8M(bootstrap/uboot/kernel)ro,-(rootfs) rw rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs console=ttyS0,115200 mtdparts=atmel_nand:8M(bootstrap/uboot/kernel)ro,-(rootfs) rw rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs
```
Les paramètres peuvent être aussi être donnés dans un fichier de configuration : uEnv.txt Les paramètres peuvent être aussi être donnés dans un fichier de configuration : uEnv.txt
@ -119,7 +163,7 @@ Elle est composée de plusieurs autres commandes :
- `loadenv` qui charge le fichier `uEnv.txt`(bootenv) en mémoire, puis `importenv` qui lit la configuration - `loadenv` qui charge le fichier `uEnv.txt`(bootenv) en mémoire, puis `importenv` qui lit la configuration
- `loadzImage` charge le fichier `zImage`(bootfile) en mémoire - `loadzImage` charge le fichier `zImage`(bootfile) en mémoire
- `loaddtb` charge le device tree [wiki](http://www.devicetree.org/Main_Page)(dtb_file) - `loaddtb` charge le [device tree](http://www.devicetree.org/Main_Page)(dtb_file)
- `mmcboot` qui passe la main au noyau - `mmcboot` qui passe la main au noyau
On voit donc que la plupart des noms de fichiers sont paramétrables, on peut donc assez facilement avoir une configuration avec un noyau stable et un autre de test. On voit donc que la plupart des noms de fichiers sont paramétrables, on peut donc assez facilement avoir une configuration avec un noyau stable et un autre de test.