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