Utiliser une Micro SD Lente
Que l'on boote dessus ou qu'on veuille l'utiliser, une carte SD trop lente va poser des problèmes.
Si dmesg vous donne tout un tas de :
[ 319.235000] mmcblk0: error -110 sending read/write command
[ 319.240000] glamo-mci glamo-mci.0: Error after cmd: 0xc120
[ 319.240000] end_request: I/O error, dev mmcblk0, sector 3951520
[ 319.240000] glamo-mci glamo-mci.0: Error after cmd: 0x4120
[ 319.240000] mmcblk0: error -110 sending read/write command
[ 319.245000] glamo-mci glamo-mci.0: Error after cmd: 0x4120
[ 319.245000] end_request: I/O error, dev mmcblk0, sector 3951528
Votre carte est trop lente et sera inutilisable.
Il faut donc dire au noyau de l'attendre.
Par défaut, la fréquence utilisée pour la carte est de 16666666 hz après division d'une horloge à 50 Mhz, on peut modifier ce paramètre au démarrage du noyau.
Il nous faut donc modifier le démarrage.
On passe en u-boot NAND, et on se connecte à la machine avec son programme de communication préféré (minicom ou autre ...). On peut aussi utiliser l'interface graphique écrite par Pini
Pour avoir le temps de faire les modifications, il vaut mieux changer la valeur de "boot_menu_timeout"
setenv boot_menu_timeout 65000
Ensuite fixer une valeur de fréquence que l'on va mettre en variable pour pouvoir affiner éventuellement.
On part de 50 000 000 divisé par une valeur entière, par défaut 16 666 666 = 50000000/3. J'ai du me rabattre sur ma carte sur une valeur de 5000000, à vous de jouer avec cette valeur si ça vous amuse.
C'est parti :
setenv glamo glamo_mci.sd_max_clk=5000000
à partir de là, on peut utiliser cette valeur un peu partout, y compris bien sûr pour le boot par défaut :
setenv bootcmd bootargs \${glamo} \${bootargs_base} \${mtdparts}\; nand read.e 0x32000000 kernel 0x200000\; bootm 0x32000000
ou pour un boot sur ext2/ext2 :
setenv menu_9 Boot from MicroSD(ext2+ext2): setenv bootargs \${bootargs_base} \${glamo} rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} ro\; mmcinit\; ext2load mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000
évidemment ne pas oublier
saveenv
avant de quitter, on peut aussi remettre une valeur plus courte à "boot_menu_timeout "