added uboot config and commands + 3.10 experience

This commit is contained in:
kleph 2013-07-24 00:18:15 +02:00
parent 73e1dc523d
commit d995796a7a

View file

@ -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. 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). 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. 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. Ç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. 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 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. 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 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
# 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 ## 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 - 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 ;-) - 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 ## Système d'exploitation
- debian armhf - debian armhf
## uname ## uname
- Linux jouet 3.6.9-sama5-armv7-d0.8 #1 Wed May 8 13:04:54 CEST 2013 armv7l GNU/Linux - 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 ## Mon expérience
J'utilise la carte comme routeur pour ma connexion internet. 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. 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.