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