Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
nas:dockstar:boot:boot_sd-card [08 /07/2012 12:12] psolyca [Principe] |
nas:dockstar:boot:boot_sd-card [17 /11/2016 15:03] (Version actuelle) psolyca ↷ Liens modifiés en raison d'un déplacement. |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | Liens de références :\\ | + | Liens de référence :\\ |
- | http://projects.doozan.com/uboot/build_uboot.htm | + | http://projects.doozan.com/uboot/build_uboot.htm\\ |
- | http://forum.doozan.com/read.php?3,1561 | + | http://forum.doozan.com/read.php?3,1561\\ |
+ | http://forum.doozan.com/read.php?3,6965,7162#msg-7162\\ | ||
+ | http://forum.doozan.com/read.php?3,7477,7477#msg-7477 | ||
Après avoir installé une carte SD sur le DockStar, il faut réussir à démarrer dessus.\\ | Après avoir installé une carte SD sur le DockStar, il faut réussir à démarrer dessus.\\ | ||
- | Pour se faire, il faut modifier U-Boot avec une prise en charge de la carte SD.\\ | + | Pour se faire, il faut modifier U-Boot avec une prise en charge de la carte SD. |
- | ==== Principe ==== | ||
- | Je suis parti d'une version 2010.09 de U-Boot.\\ | + | Commandes sur le Dockstar en liaison série : ''Marvell>>''\\ |
- | ftp://ftp.denx.de/pub/u-boot/u-boot-2010.09.tar.bz2\\ | + | Commandes sur le PC : ''>''\\ |
+ | |||
+ | ==== Compilation ==== | ||
+ | === U-Boot 2010.09 === | ||
+ | En partant d'une [[ftp://ftp.denx.de/pub/u-boot/u-boot-2010.09.tar.bz2|version 2010.09 de U-Boot]].\\ | ||
\\ | \\ | ||
- | Après de multiples modifications et de patch divers et variés, j'ai réussi à démarrer sur un U-Boot.\\ | + | Le patch complet (ajout support USB, MMC et configuration DockStar) à appliquer sur la version 2010.09 est {{:dockstar:boot:2010.09-sdio.patch|celui-ci}}.\\ |
- | Le patch à appliquer sur la version 2010.09 est {{:dockstar:boot:2010.09-sdio.patch|celui-ci}}.\\ | + | |
- | L'environnement par défaut a été modifié comme suit :\\ | + | |
<code> | <code> | ||
- | arcNumber=2998 | + | >tar -xjf u-boot-2010.09.tar.bz2 |
- | mainlineLinux=yes | + | >cp 2010.09-sdio.patch u-boot-2010.09/ |
- | console=ttyS0,115200 | + | >cd u-boot-2010.09 |
- | mtdparts=mtdparts=orion_nand:1M(u-boot),4M@1M(uImage),10M@5M(rootfs),-(rootfs_data) | + | >patch -p1 < 2010.09-sdio.patch |
- | mtdids=nand0=orion_nand | + | >codesourcery-arm-2009q3.sh |
- | partition=nand0,2 | + | >make distclean |
- | mmc_device=0:1 | + | >make dockstar_config |
- | mmc_root=/dev/mmcblk0p1 | + | >make u-boot.kwb |
- | mmc_test=if ext2load mmc $mmc_device 0x800000 /boot/uImage 1; then echo "Found bootable drive on SDCard"; fi; done | + | >dd if=u-boot.kwb of=u-boot.mtd0.kwb bs=512k conv=sync |
- | mmc_init=mmc init; run mmc_test | + | >exit |
- | mmc_rootdelay=10 | + | |
- | mmc_rootfstype=ext2 | + | |
- | mmc_set_bootargs=setenv bootargs console=$console root=$mmc_root rootdelay=$mmc_rootdelay rootfstype=$mmc_rootfstype $mtdparts | + | |
- | mmc_boot=mw 0x800000 0 1;ext2load mmc $mmc_device 0x800000 /boot/uImage; if ext2load mmc $mmc_device 0x1100000 /boot/uInitrd; then bootm 0x800000 0x1100000; else bootm 0x800000; fi | + | |
- | mmc_bootcmd=run mmc_init; run mmc_set_bootargs; run mmc_boot | + | |
- | usb_scan_list=1 2 3 4 | + | |
- | usb_scan_1=usb=0:1 dev=sda1 | + | |
- | usb_scan_2=usb=1:1 dev=sdb1 | + | |
- | usb_scan_3=usb=2:1 dev=sdc1 | + | |
- | usb_scan_4=usb=3:1 dev=sdd1 | + | |
- | usb_device=0:1 | + | |
- | usb_root=/dev/sda1 | + | |
- | usb_scan=usb_scan_done=0; for scan in $usb_scan_list; do run usb_scan_$scan; if test $usb_scan_done -eq 0 && ext2load usb $usb 0x800000 /boot/uImage 1; then usb_scan_done=1; echo "Found bootable drive on usb $usb"; setenv usb_device $usb; setenv usb_root /dev/$dev; fi; done | + | |
- | usb_init=usb start; run usb_scan | + | |
- | usb_rootdelay=10 | + | |
- | usb_rootfstype=ext2 | + | |
- | usb_set_bootargs=setenv bootargs console=$console root=$usb_root rootdelay=$usb_rootdelay rootfstype=$usb_rootfstype $mtdparts | + | |
- | usb_boot=mw 0x800000 0 1; ext2load usb $usb_device 0x800000 /boot/uImage; if ext2load usb $usb_device 0x1100000 /boot/uInitrd; then bootm 0x800000 0x1100000; else bootm 0x800000; fi | + | |
- | usb_bootcmd=run usb_init; run usb_set_bootargs; run usb_boot | + | |
- | openwrt_root=/dev/mtdblock2 ro | + | |
- | openwrt_rootfstype=jffs2 | + | |
- | openwrt_set_bootargs=setenv bootargs console=$console root=$openwrt_root rootfstype=$openwrt_rootfstype $mtdparts | + | |
- | openwrt_boot=nand read.e 0x6400000 0x100000 0x400000; bootm 0x6400000 | + | |
- | openwrt_bootcmd=run openwrt_set_bootargs; run openwrt_boot | + | |
- | led_init=green blinking | + | |
- | led_exit=green off | + | |
- | led_error=orange blinking | + | |
</code> | </code> | ||
- | J'ai appliqué la suite de commande suivante dans une console pour modifier l'environnement de démarrage USB. | + | Modification de l'environnement précédent (u-boot.kwb de Jeff Doozan) : |
<code> | <code> | ||
- | setenv mmc_device 0:1 | + | Marvell>>setenv mmc_device 0:1 |
- | setenv mmc_root /dev/mmcblk0p1 | + | Marvell>>setenv mmc_root /dev/mmcblk0p1 |
- | setenv mmc_test if ext2load mmc \$mmc_device 0x800000 /boot/uImage 1\; then echo "Found bootable drive on SDCard"\; fi\; done | + | Marvell>>setenv mmc_test if ext2load mmc \$mmc_device 0x800000 /boot/uImage 1\; then echo "Found bootable drive on SDCard"\; fi\; done |
- | setenv mmc_init mmc init\; run mmc_test | + | Marvell>>setenv mmc_init mmc init\; run mmc_test |
- | setenv mmc_rootdelay 10 | + | Marvell>>setenv mmc_rootdelay 10 |
- | setenv mmc_rootfstype ext2 | + | Marvell>>setenv mmc_rootfstype ext2 |
- | setenv mmc_set_bootargs setenv bootargs console=\$console root=\$mmc_root rootdelay=\$mmc_rootdelay rootfstype=\$mmc_rootfstype \$mtdparts | + | Marvell>>setenv mmc_set_bootargs setenv bootargs console=\$console root=\$mmc_root rootdelay=\$mmc_rootdelay rootfstype=\$mmc_rootfstype \$mtdparts |
- | setenv mmc_boot "mw 0x800000 0 1\; ext2load mmc \$mmc_device 0x800000 /boot/uImage\; if ext2load mmc \$mmc_device 0x1100000 /boot/uInitrd\; then bootm 0x800000 0x1100000\; else bootm 0x800000\; fi" | + | Marvell>>setenv mmc_boot "mw 0x800000 0 1\; ext2load mmc \$mmc_device 0x800000 /boot/uImage\; if ext2load mmc \$mmc_device 0x1100000 /boot/uInitrd\; then bootm 0x800000 0x1100000\; else bootm 0x800000\; fi" |
- | setenv mmc_bootcmd run mmc_init\; run mmc_set_bootargs\; run mmc_boot | + | Marvell>>setenv mmc_bootcmd run mmc_init\; run mmc_set_bootargs\; run mmc_boot |
- | + | Marvell>>setenv usb_init usb start\; run usb_scan | |
- | setenv usb_init usb start\; run usb_scan | + | Marvell>>setenv usb_bootcmd run usb_init\; run usb_set_bootargs\; run usb_boot |
- | setenv usb_bootcmd run usb_init\; run usb_set_bootargs\; run usb_boot | + | Marvell>>setenv bootcmd run mmc_bootcmd\; run usb_bootcmd\; usb stop\; run openwrt_bootcmd\; reset |
- | setenv bootcmd run mmc_bootcmd\; run usb_bootcmd\; usb stop\; run openwrt_bootcmd\; reset | + | |
</code> | </code> | ||
- | ==== Installation ==== | + | === U-Boot 2011.12 === |
- | Je commence par tester le chargeur : | + | Avec une [[ftp://ftp.denx.de/pub/u-boot/u-boot-2011.12.tar.bz2|version 2011.12]] plus récente.\\ |
+ | \\ | ||
+ | Application d'un patch {{:dockstar:boot:dockstar-uboot2011.12_dg.patch|créé par davygravy}} mais en enlevant la partie de configuration de l'environnement par défaut.\\ | ||
+ | Un autre patch issu des travaux de Gérard Kerma sur le driver SDIO avec {{:dockstar:boot:kerma-kirkwood-mvsdio.diff|prise en compte de la carte SD}}.\\ | ||
<code> | <code> | ||
- | usb start | + | >tar -xjf u-boot-2011.12.tar.bz2 |
- | ext2load usb 0:1 0x800000 uboot.mtd0.kwb | + | >cp dockstar-uboot2011.12_dg.patch u-boot-2011.12/ |
- | go 0x800200 | + | >cp kerma-kirkwood-mvsdio.diff u-boot-2011.12/ |
- | </code> | + | >cd u-boot-2011.12 |
- | Si l'application se lance, je l'installe : | + | >patch -p1 < dockstar-uboot2011.12_dg.patch |
- | <code> | + | >patch -p1 < kerma-kirkwood-mvsdio.diff |
- | usb start | + | >codesourcery-arm-2009q3.sh |
- | ext2load usb 0:1 0x800000 uboot.mtd0.kwb | + | >make distclean |
- | nand erase 0x0 0x80000 | + | >make dockstar_config |
- | nand write.e 0x800000 0x0 0x80000 | + | >make u-boot.kwb |
+ | >dd if=u-boot.kwb of=u-boot.mtd0.kwb bs=512k conv=sync | ||
+ | >exit | ||
</code> | </code> | ||
- | ==== Démarrage ==== | + | ==== Installation ==== |
+ | **Faire un test de l'image u-boot.mtd0.kwb avant de l'installer.**\\ | ||
+ | Ce test en RAM ne fonctionne pas toujours, les différentes tests réalisés sont les suivants (à confirmer, résultats de mémoire) :\\ | ||
+ | | ^ 2010.09 ^^ 2011.12 ^^ | ||
+ | |Fichier|/board/Marvell/dockstar/config.mk||/board/Seagate/dockstar/config.mk((Fichier à créer))|| | ||
+ | |Variable| TEXT_BASE || CONFIG_SYS_TEXT_BASE || | ||
+ | |Valeur| 0x00600000 | 0x00C00000 | 0x00600000 | 0x00C00000 | | ||
+ | |Résultat| OK | OK | KO((OK sans SDIO)) | KO((OK sans SDIO)) | | ||
- | Le log de démarrage : | + | Pour tester, pas besoin d'installer un serveur TFTP (u-boot 2010.09 avec support USB ajouté et u-boot 2011.12 avec USB par défaut).\\ |
+ | Copier les images u-boot.mtd0.kwb sur une clef USB.\\ | ||
<code> | <code> | ||
+ | Marvell>>usb start | ||
+ | Marvell>>ext2load usb 0:1 0x800000 uboot.mtd0.kwb | ||
+ | Marvell>>go 0x800200 | ||
U-Boot 2010.09 (Jul 07 2012 - 19:34:12) | U-Boot 2010.09 (Jul 07 2012 - 19:34:12) | ||
Marvell-Dockstar - MMC/SD | Marvell-Dockstar - MMC/SD | ||
Ligne 104: | Ligne 97: | ||
Marvell>> | Marvell>> | ||
</code> | </code> | ||
+ | **!!ATTENTION Toute erreur dans les lignes suivantes peut entrainer la perte du Dockstar!!\\ | ||
+ | Bien vérifier les adresses avant de valider.**\\ | ||
+ | Si l'application se lance à l'étape précédente, installation de l'image sur la NAND : | ||
+ | <code> | ||
+ | Marvell>>reset | ||
+ | Marvell>>usb start | ||
+ | Marvell>>ext2load usb 0:1 0x800000 uboot.mtd0.kwb | ||
+ | Marvell>>nand erase 0x0 0x80000 | ||
+ | Marvell>>nand write.e 0x800000 0x0 0x80000 | ||
+ | Marvell>>reset | ||
+ | resetting... | ||
+ | U-Boot 2010.09 (Jul 07 2012 - 19:34:12) | ||
+ | Marvell-Dockstar - MMC/SD | ||
+ | SoC: Kirkwood 88F6281_A0 | ||
+ | DRAM: 128 MiB | ||
+ | NAND: 256 MiB | ||
+ | In: serial | ||
+ | Out: serial | ||
+ | Err: serial | ||
+ | Net: egiga0 | ||
+ | 88E1116 Initialized on egiga0 | ||
+ | Hit any key to stop autoboot: 0 | ||
+ | Marvell>> | ||
+ | </code> | ||
+ | Si le Dockstar ne se lance plus après ces commandes, passage par la [[nas:dockstar:case_jtag]]. | ||
+ | ==== Problème rencontré ==== | ||
+ | Erreur avec le pilote SDIO ou la lecture de la carte SD pour les versions 2010.09 et 2011.12 :\\ | ||
+ | <code> | ||
+ | U-Boot 2011.12 (Jul 11 2012 - 19:03:43) | ||
+ | Seagate FreeAgent DockStar - SD/MMC | ||
+ | |||
+ | SoC: Kirkwood 88F6281_A0 | ||
+ | DRAM: 128 MiB | ||
+ | WARNING: Caches not enabled | ||
+ | NAND: 256 MiB | ||
+ | In: serial | ||
+ | Out: serial | ||
+ | Err: serial | ||
+ | Net: egiga0 | ||
+ | 88E1116 Initialized on egiga0 | ||
+ | Hit any key to stop autoboot: 0 | ||
+ | SD found. Card desciption is: | ||
+ | Manufacturer: 0x03, OEM "SD" | ||
+ | Product name: "SU01G", revision 8.0 | ||
+ | Serial number: 15472313 | ||
+ | Manufacturing date: 9/2007 | ||
+ | CRC: 0x00, b0 = 0 | ||
+ | mmc block read error | ||
+ | mmc1 is available | ||
+ | No MMC card found | ||
+ | syntax error | ||
+ | mmc block read error | ||
+ | bad MBR sector signature 0x3135 | ||
+ | ** Bad partition 1 ** | ||
+ | mmc block read error | ||
+ | bad MBR sector signature 0x0000 | ||
+ | ** Bad partition 1 ** | ||
+ | Wrong Image Format for bootm command | ||
+ | ERROR: can't get kernel image! | ||
+ | </code> | ||
+ | |||
+ | **Brouillon**\\ | ||
+ | <del> | ||
+ | Passer le driver SDIO en mode debug avec modification du fichier drivers/mmc/mv_sdio.c.\\ | ||
+ | Le #define DEBUG est positionné au mauvais endroit dans le fichier mv_sdio.c, {{:dockstar:boot:debug-mv_sdio.diff|patch à appliquer}}.\\ | ||
+ | <code> | ||
+ | >cp debug-mv_sdio.diff u-boot-2011.12 | ||
+ | >cd u-boot-2011.12 | ||
+ | >patch -p1 < debug-mv_sdio.diff | ||
+ | >codesourcery-arm-2009q3.sh | ||
+ | >make distclean | ||
+ | >make dockstar_config | ||
+ | >make u-boot.kwb | ||
+ | >dd if=u-boot.kwb of=u-boot.mtd0.kwb bs=512k conv=sync | ||
+ | >exit | ||
+ | </code> | ||
+ | </del> |