Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
nas:dockstar:jtag [08 /07/2012 21:49] psolyca créée |
nas:dockstar:jtag [17 /11/2016 15:03] (Version actuelle) psolyca ↷ Liens modifiés en raison d'un déplacement. |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | Mise à jour de buspirate\\ | + | Liens de référence :\\ |
- | {{:dockstar:buspirate.production.zip|}}\\ | + | http://plume.redox.ws/article13/dockstar-debricking-jtag-with-buspirate\\ |
- | Compilation OpenOCD\\ | + | http://www.yourwarrantyisvoid.com/2010/09/08/dead-dockstar-resurrected-with-jtag/\\ |
- | Suivi http://plume.redox.ws/article13/dockstar-debricking-jtag-with-buspirate\\ | + | http://dangerousprototypes.com/2011/08/17/dockstar-debricking-jtag-with-bus-pirate/\\ |
- | Fichiers de configuration:\\ | + | http://dangerousprototypes.com/docs/Pirate-Loader_console_upgrade_application_%28Linux,_Mac,_Windows%29\\ |
- | {{:dockstar:dockstar.cfg|}}\\ | + | http://dangerousprototypes.com/docs/Bus_Pirate#JTAG_and_OpenOCD\\ |
- | {{:dockstar:buspirate.cfg|}}\\ | + | http://dangerousprototypes.com/forum/viewtopic.php?t=1702\\ |
+ | http://www.neufbox4.org/forum/viewtopic.php?pid=23551#p23551\\ | ||
+ | http://archlinuxarm.org/forum/viewtopic.php?f=18&t=195&sid=85b9bed78edf2646339d0e38e0a7e79b\\ | ||
+ | Solution ultime en cas de perte du Dockstar lors d'une mauvaise manipulation pendant le flashage.\\ | ||
+ | Nécessité d'avoir un câble série **et** un connecteur JTAG (BusPirate v3b). | ||
+ | |||
+ | ==== BusPirate ==== | ||
+ | Nécessité d'avoir le BusPirate avec un firmware 5.8 max., une version spéciale ou le compiler soit même.\\ | ||
+ | Le support d'OpenOCD n'est plus pris en compte par défaut dans les versions 5.8+ (après rev524 de binIO.c).\\ | ||
+ | Utilisation du firmware {{:dockstar:buspirate.production.zip|}} en RC6.0\\ | ||
+ | |||
+ | ==== OpenOCD ==== | ||
+ | OpenOCD doit prendre en compte le support du BusPirate qui n'est pas par défaut.\\ | ||
+ | Compilation d'OpenOCD : | ||
+ | <code> | ||
+ | >git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd | ||
+ | >cd openocd | ||
+ | >./bootstrap | ||
+ | >./configure --enable-buspirate --enable-maintainer-mode | ||
+ | >make | ||
+ | >sudo make install | ||
+ | </code> | ||
+ | Fichiers de configuration modifié à installer dans : | ||
+ | * /usr/local/share/openocd/scripts/board/ pour {{:dockstar:dockstar.cfg|}} | ||
+ | * /usr/local/share/openocd/scripts/interface pour {{:dockstar:buspirate.cfg|}} | ||
+ | **Dans buspirate.cfg modifier le device en fonction de votre configuration** | ||
+ | ==== Branchement ==== | ||
+ | Voir [[nas:dockstar:amelioration:ajout_cable_serie|pour le câble série]]\\ | ||
+ | Le branchement se fait comme suit pour le BusPirate : | ||
+ | ^ Seeed Studio et série ^^^^ou^ Sparkfun et série ^^^^ | ||
+ | | Couleur | Pin | Pin | Couleur |:::| Couleur | Pin | Pin | Couleur | | ||
+ | | / | 1-NC | 10-GND | GND |:::| / | 1-NC | 10-GND | GND | | ||
+ | | Bleu | 2-Aux | 9-RxD | TxD |:::| Vert | 2-Aux | 9-RxD | TxD | | ||
+ | | Gris | 3-TDI | 8-TxD | RxD |:::| Orange | 3-TDI | 8-TxD | RxD | | ||
+ | | Blanc | 4-TMS | 7-NC | / |:::| Rouge | 4-TMS | 7-NC | / | | ||
+ | | Violet | 5-TCK | 6-TDO | Noir |:::| Jaune | 5-TCK | 6-TDO | Marron | | ||
+ | |||
+ | ==== Connexion ==== | ||
+ | Brancher le Dockstar puis l'adaptateur série et le BusPirate.\\ | ||
+ | Démarrer le serveur OpenOCD dans un terminal (A): | ||
+ | <code> | ||
+ | A>cd /usr/local/share//openocd/scripts/ | ||
+ | A>opencd -f board/dockstar.cfg | ||
+ | </code> | ||
+ | Démarrer un autre terminal (B) et se connecter au serveur OpenOCD : | ||
+ | <code> | ||
+ | B>telnet localhost 4444 | ||
+ | </code> | ||
+ | Démarrer un autre terminal (C) et se connecter par câble série : | ||
+ | <code> | ||
+ | C>minicom -D /dev/ttyUSB0 | ||
+ | </code> | ||
+ | Il est nécessaire d'avoir une image U-Boot valide pour la suite.\\ | ||
+ | Dans le terminal (B) : | ||
+ | <code> | ||
+ | B>init | ||
+ | </code> | ||
+ | La commande suivante est à taper puis on appuie sur le bouton reset et on valide la commande et simultanément on relâche le bouton reset.\\ | ||
+ | La commande "halt" attend l'arrêt du processeur dans les 5 millisecondes. | ||
+ | <code> | ||
+ | B>halt | ||
+ | target state: halted | ||
+ | target halted in Thumb state due to debug-request, current mode: Supervisor | ||
+ | cpsr: 0x400000f3 pc: 0xffff0a42 | ||
+ | MMU: enabled, D-Cache: enabled, I-Cache: enabled | ||
+ | B> | ||
+ | </code> | ||
+ | Pour que le reste de la manipulation fonctionne, il faut être arrêté en mode "ARM" et non "Thumb" comme ci-dessus. | ||
+ | Il faut recommencer les manipulations précédentes jusqu'à obtenir ce qui suit : | ||
+ | <code> | ||
+ | B>halt | ||
+ | target state: halted | ||
+ | target halted in ARM state due to debug-request, current mode: Supervisor | ||
+ | cpsr: 0x000000d3 pc: 0xffff0000 | ||
+ | MMU: disabled, D-Cache: disabled, I-Cache: disabled | ||
+ | </code> | ||
+ | Il existe 2 méthodes pour installer l'image de U-Boot : | ||
+ | * charger l'image en mémoire puis l'installer à partir du nouveau U-Boot, | ||
+ | * installer directement l'image sur la NAND. | ||
+ | Pour les commandes, il y a aussi 2 possibilités : | ||
+ | * taper les commandes une à une, | ||
+ | * utiliser des macros inscrites dans le fichier "dockstar.cfg". | ||
+ | === Charger U-Boot en mémoire === | ||
+ | == Commandes successives == | ||
+ | Pour la commande "load_image", il faut indiquer le chemin absolu du fichier soit par exemple "/home/moncompte/Documents/u-boot.kwb".\\ | ||
+ | La commande "load_image" peut prendre plusieurs minutes à s'exécuter (ici 9min). | ||
+ | <code> | ||
+ | B>dockstar_init | ||
+ | B>load_image /tmp/uboot.mtd0.kwb 0x800000 | ||
+ | 524288 bytes written at address 0x00800000 | ||
+ | downloaded 524288 bytes in 593.427490s (0.863 KiB/s) | ||
+ | B>resume 0x800200 | ||
+ | </code> | ||
+ | Dans le terminal (C), on arrête le processus de redémarrage en tapant sur "Entrée", puis : | ||
+ | <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 | ||
+ | Marvell>>nand write.e 0x800000 0x0 0x80000 | ||
+ | Marvell>>reset | ||
+ | </code> | ||
+ | == Macros == | ||
+ | Modifier dans le fichier "dockstar.cfg" le chemin pour "load_image" pour refléter son emplacement dans la macro "proc dockstar_load_uboot { } {"\\ | ||
+ | Puis dans le terminal (B) : | ||
+ | <code> | ||
+ | B>dockstar_reflash_uboot | ||
+ | 524288 bytes written at address 0x00800000 | ||
+ | downloaded 524288 bytes in 593.427490s (0.863 KiB/s) | ||
+ | </code> | ||
+ | Passer sur le terminal (C), arrêter le processus avec la touche "Entrée", puis : | ||
+ | <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 | ||
+ | Marvell>>nand write.e 0x800000 0x0 0x80000 | ||
+ | Marvell>>reset | ||
+ | </code> | ||
+ | === Installer U-Boot sur NAND === | ||
+ | == Commandes successives == | ||
+ | Pour la commande "nand write", il faut indiquer le chemin absolu du fichier soit par exemple "/home/moncompte/Documents/u-boot.kwb".\\ | ||
+ | La commande "nand write" peut prendre plusieurs minutes à s'exécuter (ici 9min). | ||
+ | <code> | ||
+ | dockstar_init | ||
+ | nand probe 0 | ||
+ | NAND flash device 'NAND 256MiB 3.3V 8-bit (Micron)' found | ||
+ | nand erase 0 0x0 0x80000 | ||
+ | erased blocks 0 to 3 on NAND flash device #0 'NAND 256MiB 3.3V 8-bit' | ||
+ | nand write 0 /tmp/uboot.mtd0.kwb 0 oob_softecc_kw | ||
+ | wrote file /tmp/uboot.mtd0.kwb to NAND flash 0 up to offset 0x00080000 in 1222.956299s (0.419 KiB/s) | ||
+ | resume | ||
+ | </code> | ||
+ | Sur le terminal (C) : | ||
+ | <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 | ||
+ | Marvell>> | ||
+ | </code> | ||
+ | == Macros == | ||
+ | Modifier dans le fichier "dockstar.cfg" le chemin pour "nand write" pour refléter son emplacement dans la macro "proc dockstar_reflash_uboot { } {"\\ | ||
+ | Puis dans le terminal (B) : | ||
+ | <code> | ||
+ | B>dockstar_reflash_uboot | ||
+ | NAND flash device 'NAND 256MiB 3.3V 8-bit (Micron)' found | ||
+ | erased blocks 0 to 3 on NAND flash device #0 'NAND 256MiB 3.3V 8-bit' | ||
+ | wrote file /tmp/uboot.mtd0.kwb to NAND flash 0 up to offset 0x00080000 in 1222.956299s (0.419 KiB/s) | ||
+ | </code> | ||
+ | Sur le terminal (C) : | ||
+ | <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 | ||
+ | Marvell>> | ||
+ | </code> |