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
 | 
					## 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.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue