added uboot config and commands + 3.10 experience
This commit is contained in:
		
							parent
							
								
									73e1dc523d
								
							
						
					
					
						commit
						d995796a7a
					
				
					 1 changed files with 58 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -16,16 +16,15 @@ Je n'ai pas flashé le bootloader ni la NAND pour l'instant.
 | 
			
		|||
 | 
			
		||||
Le chargeur d'amorçage interne [nom] vérifie s'il y a une carte SD avant de démarrer sur la NAND.
 | 
			
		||||
Attention, le deuxième slot, celui pour µSD, n'est pas parcouru au démarrage, contrairement à ce qui est listé dans le digramme de la /datasheet/ (Atmel_11121_32-bit-Cortex-A5-Microcontroller_SAMA5D3_Datasheet.pdf).
 | 
			
		||||
 | 
			
		||||
Par contre, dans la documentation utilisateur ((Atmel_11180_32-bit-Cortex-A5-Microcontroller_SAMA5D3-Series-EK_User-Guide.pdf))la description du processus d'amorçage ne mentionne que le premier slot, celui pour carte SD.
 | 
			
		||||
 | 
			
		||||
Ça m'a pris une bonne semaine pour m'apercevoir de ça... Je pensais que mes compilations étaient mauvaises et/ou que j'allais absolument devoir flasher la mémoire NAND de la carte avec SAM-BA.
 | 
			
		||||
 | 
			
		||||
Mais finalement, avec l'u-boot par défaut et un noyau sur une partition FAT(16 ou 32) de la carte SD, on peut démarrer son propre système sans avoir à flasher le système de démo de la carte.
 | 
			
		||||
Mais finalement, avec u-boot contenu dans un fichier `u-boot.bin` et un noyau sur une partition FAT(16 ou 32) de la carte SD, on peut démarrer son propre système sans avoir à flasher le système de démo de la carte.
 | 
			
		||||
 | 
			
		||||
Pour la configuration, j'ai utilisé le cable µUSB<-> USB pour connecter la carte à mon PC de bureau.
 | 
			
		||||
 | 
			
		||||
Ensuite, j'ai utilisé screen pour me connecter à la console série :
 | 
			
		||||
Ensuite, j'ai utilisé `screen` pour me connecter à la console série :
 | 
			
		||||
	screen /dev/ttyACM0
 | 
			
		||||
 | 
			
		||||
NOTE: On peut interrompre le démarrage d'U-Boot en frappant une touche avant qu'il ne commence à analyser les différents périphériques pour démarrer.
 | 
			
		||||
| 
						 | 
				
			
			@ -40,24 +39,77 @@ Voici des paramètres pour démarrer le noyau original fourni avec la carte et u
 | 
			
		|||
	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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Démarrage
 | 
			
		||||
Les paramètres peuvent être aussi être donnés dans un fichier de configuration : uEnv.txt
 | 
			
		||||
Voici le mien :
 | 
			
		||||
`````` bash
 | 
			
		||||
	dtb_file=sama5d35ek.dtb
 | 
			
		||||
	
 | 
			
		||||
	console=ttyS0,115200
 | 
			
		||||
	optargs=console=tty0
 | 
			
		||||
	
 | 
			
		||||
	mmcroot=/dev/mmcblk0p2 ro
 | 
			
		||||
	mmcrootfstype=ext2 rootwait fixrtc
 | 
			
		||||
``````
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Voici ma configuration u-boot après l'interruption :
 | 
			
		||||
`````` bash
 | 
			
		||||
	baudrate=115200
 | 
			
		||||
	bootargs=console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootfstype=ext2 rootwait
 | 
			
		||||
	bootcmd=if mmc rescan; then echo SD/MMC found on device;if run loadbootenv; then echo Loaded environment from ${bootenv};run importbootenv;fi;if run loadzimage; then run loaddtb;run mmcboot;fi;fi;
 | 
			
		||||
	bootdelay=3
 | 
			
		||||
	bootenv=uEnv.txt
 | 
			
		||||
	bootfile=zImage
 | 
			
		||||
	console=ttyS0,115200n8
 | 
			
		||||
	dtb_file=sama5d34ek.dtb
 | 
			
		||||
	dtbaddr=0x21000000
 | 
			
		||||
	ethact=macb0
 | 
			
		||||
	importbootenv=echo Importing environment from mmc ...; env import -t $loadaddr $filesize
 | 
			
		||||
	loadaddr=0x22000000
 | 
			
		||||
	loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}
 | 
			
		||||
	loaddtb=load mmc ${mmcdev} ${dtbaddr} /dtbs/${dtb_file}
 | 
			
		||||
	loadzimage=load mmc ${mmcdev} ${loadaddr} ${bootfile}
 | 
			
		||||
	mmcargs=setenv bootargs console=${console} ${optargs} root=${mmcroot} rootfstype=${mmcrootfstype}
 | 
			
		||||
	mmcboot=echo Booting from mmc ...; run mmcargs; bootz ${loadaddr} - ${dtbaddr}
 | 
			
		||||
	mmcdev=0
 | 
			
		||||
	mmcroot=/dev/mmcblk0p2 ro
 | 
			
		||||
	mmcrootfstype=ext4 rootwait
 | 
			
		||||
``````
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
La ligne bootcmd va être exécutée lorque l'on tape "boot".
 | 
			
		||||
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)
 | 
			
		||||
- mmcboot qui passe la main au noyau
 | 
			
		||||
 | 
			
		||||
On voir 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.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Noyau
 | 
			
		||||
- at91 patché
 | 
			
		||||
- at91 patché [TODO: retrouver l'adresse du git]
 | 
			
		||||
- Les patch d'at91 ne sont toujours pas intégrés au noyau 3.9. L'ensemble de patch est assez gros, il contient 15-20 patches
 | 
			
		||||
- Peut-être pour le 3.10 ? Oui \o/ à tester ;-)
 | 
			
		||||
 | 
			
		||||
### 3.10.1
 | 
			
		||||
- compilé à partir de a configuration fonctionnelle du 3.6.9
 | 
			
		||||
- freeze au chargement de l'usb
 | 
			
		||||
- si je désactive l'USB, ça freeze au chargement des pilotes mmc.
 | 
			
		||||
- à creuser
 | 
			
		||||
 | 
			
		||||
## Système d'exploitation
 | 
			
		||||
- debian armhf
 | 
			
		||||
 | 
			
		||||
## uname 
 | 
			
		||||
- Linux jouet 3.6.9-sama5-armv7-d0.8 #1 Wed May 8 13:04:54 CEST 2013 armv7l GNU/Linux
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## compilateur utilisé
 | 
			
		||||
 | 
			
		||||
## Mon expérience
 | 
			
		||||
J'utilise la carte comme routeur pour ma connexion internet.
 | 
			
		||||
Je l'utilise aussi pour quelques autres services liés au réseau : serveur DHCP, Annonces RA, serveur DNS (comme serveur faisant autorité ainsi que comme resolver/cache pour le lan), pare-feu et serveur NTP pour le lan.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue