add a sample script to build the kernel
This commit is contained in:
parent
714e23b140
commit
95be07593c
1 changed files with 68 additions and 24 deletions
|
@ -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
|
||||
### 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.
|
||||
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
|
||||
export CC=`${HOME}/cross/gcc-arm-none-eabi-4_6-2012q4/bin/arm-none-eabi-
|
||||
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.
|
||||
- à 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
|
||||
### 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.
|
||||
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
|
||||
```
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
|
||||
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
|
||||
- `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
|
||||
|
||||
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.
|
||||
|
|
Loading…
Reference in a new issue