Quantcast
Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Reparatur Pogo E02 mittels Raspi als Jtag

joerg_999

Stamm User
Registriert
11. Mai 2010
Beiträge
1.041
Reaktionspunkte
758
Punkte
273
Reparatur Pogo E02 mittels Raspi als Jtag v3.1

Update 28.04.18 - aktuelles uboot 2017.07-tld-1 und uboot-envs 2016.05-tld-1
- Jetzt mit Konfiguration für alle RPIs auch der RPI3

*******************************************************************
Habe mir zur Reparatur einiger defekter Pogos einen Buspirate (Jtag) besorgt.

funktioniert natürlich prima, kostet aber so viel wie ein neuer Pogo.

Es geht jedoch auch anders:
Vermutlich hat fast jeder von euch einen RASPI rumliegen oder kennt jemand der einen hat.
Der Raspberry Pi bietet sich durch seine GPIOs ja förmlich an auch als Jtag vergewaltigt zu werden.
Es gibt zwar ein paar Ansätze im Netz aber alle sind entweder nicht komplett oder veraltet.
Nach einiger Zeit des Recherchierens und einigen Tests, habe ich nun eine fertige Lösung zusammengestellt,
mit der man mittels eines Raspberry Pi und darauf compiliertem openOCD + 6 Kabeln einen defekten Pogo E02 wiederbeleben kann.
(wenn zb mtd0 falsch geflasht/zerstört wurde)

Da openOCD auf dem Raspi läuft, kann das Ganze auch ohne zusätzlichen PC betrieben werden,
sofern man Tastatur,Maus und Monitor am Raspi angesteckt hat.
Ich habe den Raspi aber in mein Netzwerk eingebunden und die Terminals im (Windows)PC über putty aufgemacht.

Im Prinzip brauchen wir 3 Terminals:

Terminal1: (ssh Terminal) hier wird openOCD aufgerufen und man sieht die Reaktionen der Eingaben aus Terminal2
Terminal2: (openOCD Schnittstelle über Telnet Port 4444) hier werden die Steuerbefehle eingegeben
(zb uboot ins ram laden und starten)
Terminal3: über USB/TTL Adapter mit Pogo verbunden, von hier stoppen wir den Bootvorgang und flashen das neue uboot bzw die uboot envs ins nand

Was wird alles benötigt (Hardware):
Raspberry Pi B, B+, PI2 oder den neuen PI3
- Raspi auf standard clock Speed lassen - (B,B+700Mhz, RPI2 900Mhz und RPI3 1200Mhz)
6 Stück Verbindungskabeln vom Raspi (GPIO) zum Pogo Länge max 30cm
1 USB/TTL Adapter für die serielle Konsole auf dem Pogo.
Internetverbindung für den RaspberryPi, (funktioniert beim RPI3 auch über W-Lan, da eingebaut)

Installation auf dem Raspi:
Als erstes nehmen wir den Raspi installieren das aktuelle Raspbian
danach noch ein paar Abhängigkeiten und openOCD welches wir uns mit den passenden Einstellungen selber compilieren:
Code:
 sudo apt-get update
 sudo apt-get install picocom
 sudo apt-get install -y autoconf automake texinfo libtool libftdi-dev
 sudo apt-get install libusb-1.0 libusb-dev
 sudo apt-get install mtd-utils u-boot-tools
 git clone --recursive git://git.code.sf.net/p/openocd/code openocd-git && cd openocd-git
Danach kommt ein massiver Compilebefehl (Bitte komplett mit copy & paste in der Befehlszeile einfügen)

Etwas Geduld aufbringen, denn das Compilieren dauert ein Wenig
{
./bootstrap &&\
./configure --enable-bcm2835gpio \
--enable-buspirate \
--enable-maintainer-mode \
--disable-werror \
--enable-openjtag_ftdi \
--prefix=/usr\
&&\
make
} > openocd_build.log 2>&1
Installiert wird das Ganze mit:
Code:
sudo make install
cd ..
Wenn das erledigt ist legt ihr im Verzeichnis:
/usr/share/openocd/scripts/board/ die Datei pogo.cfg an:
Code:
sudo touch /usr/share/openocd/scripts/board/pogo.cfg
sudo nano /usr/share/openocd/scripts/board/pogo.cfg
und befüllt sie mit folgendem Inhalt:
# Pogoplug E02
# modification joerg_999 14.03.2016
# use this pogo.cfg taken from sheevaplug to use with Raspi direct or Buspirate jtag adapter
# use raspberrypi-native mode
# we use the Pins from SPI Interface (violett) 19,21,23,26 and 22, + 20 for GND
# see GPIO schematic Raspi


# source [find interface/buspirate.cfg]
# source [find interface/sysfsgpio-raspberrypi.cfg]
source [find interface/raspberrypi123-native.cfg]
source [find target/feroceon.cfg]

$_TARGETNAME configure \
-work-area-phys 0x100000 \
-work-area-size 65536 \
-work-area-backup 0
#arm7_9 dcc_downloads enable
# this assumes the hardware default peripherals location before u-Boot moves it
set _FLASHNAME $_CHIPNAME.flash
nand device $_FLASHNAME orion 0 0xd8000000
proc pogo_init { } {
# We need to assert DBGRQ while holding nSRST down.
# However DBGACK will be set only when nSRST is released.
# Furthermore, the JTAG interface doesn't respond at all when
# the CPU is in the WFI (wait for interrupts) state, so it is
# possible that initial tap examination failed. So let's
# re-examine the target again here when nSRST is asserted which
# should then succeed.
jtag_reset 0 1
feroceon.cpu arp_examine
halt 0
jtag_reset 0 0
wait_halt
arm mcr 15 0 0 1 0 0x00052078
mww 0xD0001400 0x43000C30 ;# DDR SDRAM Configuration Register
mww 0xD0001404 0x39543000 ;# Dunit Control Low Register
mww 0xD0001408 0x22125451 ;# DDR SDRAM Timing (Low) Register
mww 0xD000140C 0x00000833 ;# DDR SDRAM Timing (High) Register
mww 0xD0001410 0x000000CC ;# DDR SDRAM Address Control Register
mww 0xD0001414 0x00000000 ;# DDR SDRAM Open Pages Control Register
mww 0xD0001418 0x00000000 ;# DDR SDRAM Operation Register
mww 0xD000141C 0x00000C52 ;# DDR SDRAM Mode Register
mww 0xD0001420 0x00000042 ;# DDR SDRAM Extended Mode Register
mww 0xD0001424 0x0000F17F ;# Dunit Control High Register
mww 0xD0001428 0x00085520 ;# Dunit Control High Register
mww 0xD000147c 0x00008552 ;# Dunit Control High Register
mww 0xD0001504 0x0FFFFFF1 ;# CS0n Size Register
mww 0xD0001508 0x10000000 ;# CS1n Base Register
mww 0xD000150C 0x0FFFFFF5 ;# CS1n Size Register
mww 0xD0001514 0x00000000 ;# CS2n Size Register
mww 0xD000151C 0x00000000 ;# CS3n Size Register
mww 0xD0001494 0x003C0000 ;# DDR2 SDRAM ODT Control (Low) Register
mww 0xD0001498 0x00000000 ;# DDR2 SDRAM ODT Control (High) REgister
mww 0xD000149C 0x0000F80F ;# DDR2 Dunit ODT Control Register
mww 0xD0001480 0x00000001 ;# DDR SDRAM Initialization Control Register
mww 0xD0020204 0x00000000 ;# Main IRQ Interrupt Mask Register
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0020204 0x00000000 ;# "
mww 0xD0010000 0x01111111 ;# MPP 0 to 7
mww 0xD0010004 0x11113322 ;# MPP 8 to 15
mww 0xD0010008 0x00001111 ;# MPP 16 to 23
mww 0xD0010418 0x003E07CF ;# NAND Read Parameters REgister
mww 0xD001041C 0x000F0F0F ;# NAND Write Parameters Register
mww 0xD0010470 0x01C7D943 ;# NAND Flash Control Register
}
proc pogo_reflash_uboot { } {
# reflash the u-Boot binary and reboot into it
pogo_init
nand probe 0
nand erase 0 0x0 0xa0000
nand write 0 uboot.kwb 0 oob_softecc_kw
resume
}
proc pogo_reflash_uboot_env { } {
# reflash the u-Boot environment variables area
pogo_init
nand probe 0
nand erase 0 0xc0000 0x20000
nand write 0 uboot-env.bin 0xc0000 oob_softecc_kw
resume
}
proc pogo_load_uboot { } {
# load u-Boot into RAM and execute it
pogo_init
load_image uboot.kwb
verify_image uboot.kwb
resume 0x800200
}
und erstellen einen Symlink dafür:
Code:
ln -s /usr/share/openocd/scripts/board/pogo.cfg pogo.cfg
Im nächsten Schritt laden wir uns das aktuelle uboot und die uboot envs herunter entpacken sie und erstellen ebenfalls einen Symlink:
(uboot 2017.07-tld-1 und uboot-envs 2016.05-tld-1)
## download uboot Pogo E02 and create Symlink:
Code:
wget -c dl.dropbox.com/s/vgbshmiq3o14btp/uboot.2017.07-tld-1.pogo_e02.bodhi.tar
tar -xf uboot.2017.07-tld-1.pogo_e02.bodhi.tar
ln -s uboot.2017.07-tld-1.pogo_e02.mtd0.kwb uboot.kwb

## download u-boot envs and create Symlink:
Code:
wget -c dl.dropbox.com/s/4smmw2wr4ugayz9/uboot.2016.05-tld-1.environment.bodhi.tar
tar -xf uboot.2016.05-tld-1.environment.bodhi.tar
ln -s uboot.2016.05-tld-1.environment.img uboot-env.bin
Zum Schluss erstellen/ändern wir noch eine Datei auf der Basis von raspberrypi-native.cfg, passen die Einstellung für die richtigen Reset Pins, die Adapter Geschwindigkeit und der Übergangsverzögerung je nach Raspi Modell an) in der Datei: /usr/share/openocd/scripts/interface/raspberrypi123-native.cfg
Code:
sudo nano /usr/share/openocd/scripts/interface/raspberrypi123-native.cfg
mit folgenden Inhalt: ## Bitte hier die Einstellungen an den benutzten RASPI (B,RPI2 oder RPI3) entsprechend anpassen ##
#
# raspberrypi123-native.cfg (now for all of the Raspis)
# It´s about 4 times faster for writing and 14 times faster for reading
# compared to the generic sysfsgpio driver

# Config for using Raspberry Pi's expansion header
#
# This is best used with a fast enough buffer but also
# is suitable for direct connection if the target voltage
# matches RPi's 3.3V and the cable is short enough.
#
# Do not forget the GND connection, pin 6 of the expansion header.
#
# Please set the right peripheral_base address and Transition delay
# depending on which Raspi (1,2 or 3) you use.


interface bcm2835gpio
# Raspi2 and Raspi3 peripheral_base address
bcm2835gpio_peripheral_base 0x3F000000

# Raspi1 peripheral_base address
# bcm2835gpio_peripheral_base 0x20000000

# Transition delay calculation: SPEED_COEFF/khz - SPEED_OFFSET
# These depend on system clock, calibrated for stock 700MHz
# bcm2835gpio_speed SPEED_COEFF SPEED_OFFSET

# Raspi3 BCM2837 (1200Mhz):
bcm2835gpio_speed_coeffs 194938 48

# Raspi2 BCM2836 (900Mhz):
# bcm2835gpio_speed_coeffs 146203 36

# Raspi1 BCM2835: (700Mhz)
# bcm2835gpio_speed_coeffs 113714 28

# Each of the JTAG lines need a gpio number set: tck tms tdi tdo
# Header pin numbers: 23 22 19 21
bcm2835gpio_jtag_nums 11 25 10 9

# or if you have both connected,
# reset_config trst_and_srst srst_push_pull

# Each of the SWD lines need a gpio number set: swclk swdio
# Header pin numbers: 22 18
bcm2835gpio_swd_nums 25 24

# If you define trst or srst, use appropriate reset_config
# Header pin numbers: TRST - 26, SRST - 18

bcm2835gpio_trst_num 7
reset_config trst_only

# bcm2835gpio_srst_num 18 # should be GPIO 24, (maybe typo in original)
# reset_config srst_only srst_push_pull

# or if you have both connected,
# reset_config trst_and_srst srst_push_pull

# adapter speed in khz
adapter_khz 200
Starten von openOCD:
Gestartet wird die ganze Show im Terminal1 mit:
Code:
sudo openocd -f pogo.cfg
Im nächsten Spoiler seht ihr die Kommandos/Rückmeldungen und wie man seine 3 Terminals benutzt.
Die wichtigen Eingaben sind grün angepinselt den Rest könnt ihr wenn keine Fehler kommen als Info ansehen.
Für die Reparatur reicht es und ist (bis auf die Treiber Einbindung beim Compilieren) gleich wie beim Buspirate.
(zur Info T1=Terminal1 T2=Terminal2 usw):
## Die Ausgabe in Terminal #1 nach Aufruf von openOCD sollte in etwa so aussehen:
Code:
sudo openocd -f pogo.cfg

Open On-Chip Debugger 0.10.0-dev-00220-gdfc6658 (2016-02-17-01:51)
Licensed under GNU GPL v2
For bug reports, read

BCM2835 GPIO config: tck = 11, tms = 25, tdi = 10, tdo = 9
BCM2835 GPIO config: trst = 7
trst_only separate trst_push_pull
adapter speed: 2000 kHz
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'.
trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain connect_deassert_srst
adapter_nsrst_delay: 200
jtag_ntrst_delay: 200
Warn : use 'feroceon.cpu' as target identifier, not '0'
pogo_load_uboot
Info : BCM2835 GPIO JTAG/SWD bitbang driver
Info : JTAG only mode enabled (specify swclk and swdio gpio to add SWD mode)
Info : clock speed 2009kHz
Info : JTAG tap: feroceon.cpu tap/device found: 0x20a023d3 (mfg: 0x1e9 (Marvell Semiconductors), part: 0x0a02, ver: 0x2)
Info : Embedded ICE version 0
Info : feroceon.cpu: hardware has 1 breakpoint/watchpoint unit

## open Terminal #2: # telnet (WindowsPC) or picocom (raspbian)Terminal#
$ telnet <adress of your RASPI> 4444

T1 Info : accepting 'telnet' connection on tcp/4444

# T2 The processor will be stopped:
# -> Run command:
> pogo_init
> soft_reset_halt # normaly works without reset button, if it fails, press reset on Pogo

# You normally get this event (the important thing is the status "ARM state"):
# target state: halted
# target halted in ARM state due to debug-request, current mode: Supervisor ## OK
# cpsr: 0x000000d3 pc: 0xffff0000
# MMU: disabled, D-Cache: disabled, I-Cache: disabled

# If you get the following output, again:
# target state: halted
# target halted in Thumb state due to debug-request, current mode: Supervisor ## not OK !
# cpsr: 0x200000f3 pc: 0xffff0a8a
# MMU: enabled, D-Cache: enabled, I-Cache: enabled
# T2 Is initialized with the command:
> pogo_init

# T2 We verify that the nand is well recognized:
> nand probe 0
# NAND flash device 'NAND 128MiB 3.3V 8-bit (Hynix)' found ## OK

# T2 If you see this output, start from the beginning:
> nand probe 0
# unknown NAND flash device found, manufacturer id: 0x00 device id: 0x00 ## not OK!
# in procedure 'nand'

# T2 We clear the first 512kB:
> nand erase 0 0x0 0xa0000
# erased blocks 0 to 5 on NAND flash device #0 'NAND 128MiB 3.3V 8-bit'

# T2 Then we write the nand file uboot:
# Files we use: pogo.cfg, and Symlinks we created before
# uboot.2017.07-tld-1.pogo_e02.mtd0.kwb ----> uboot.kwb
# uboot.2016.05-tld-1.environment.img uboot-env.bin ----> uboot-env.bin

> nand write 0 uboot.kwb 0 oob_softecc_kw

Wenn ihr die neuen uboot envs ebenfalls flashen wollt könnt ihr das ebenfalls jetzt durchführen:
pogo_init
nand probe 0
nand erase 0 0xc0000 0x20000
nand write 0 uboot-env.bin 0xc0000 oob_softecc_kw
Fertig-> openOCD schließen - Pogo vom Strom nehmen und wieder anstecken, Pogo sollte mit neuem uboot starten

Die Ausgabe des bootloaders seht ihr in Terminal (T3) über TTY/USB Adapter angeschlossen an Pogo CON3

# start Terminal 3 with the matching ttyUSBx (mostly ttyUSB0 if nothing else is connected)
# in T3 (USB/TTL Win/Linux Terminal /dev/ttyUSBx) Hit any key to stop autoboot,

U-Boot 2017.07-tld-1 (July 06 2017 - 15:46:25-08:00)
Pogo E02
SoC: Kirkwood 88F6281_A0
DRAM: 256 MiB
WARNING: Caches not enabled
NAND: 128 MiB
In: serial
Out: serial
Err: serial
Net: egiga0
Hit any key to stop autoboot: 0
< Hit Enter>
Pogo E02>
Anmerkung:
bodhis neues uboot.2016.05-tld-1.environment.img beinhaltet universal uboot-envs für alle gängigen plugs!
Wenn ihr neue uboot-envs benötigt könnt ihr die vom Terminal 2 oder besser über einen
gebooteten Linux USB Stick über Termial 3
flashen bzw. auch über ein eventuell bestehendes rescue-system im nand.

Die Verdrahtung und das Pin Layout der beiden Kandidaten:
:(bitte die ganzen Teile natürlich spannungslos zusammen bauen und verdrahten!!)
## JTAG connector - Pogo E02 pinout ##

--------------------------------------------------------------------------------
## Pogo ##
J1:
(1) GND ---> next to power plug
(2) TDI
(3) SRST (not connected)
(4) TDO # 6 connecting cables from Pogo to Raspi (must have)
(5) CLK
(6) TMS
(7) RES
(8) 3.3V (not connected) ---> next to serial port

CON3:
(1) GND
(2) RXD # 3 connecting cables from Pogo to TTL/USB Adapter - don´t use the 3,3V!
(3) TXD
(4) 3.3V (not connected)

--------------------------------------------------------------------------------
## Raspi ## Note: Bitte nicht GPIO und Pin-Nummern verwechseln beim Raspi!
## wir nehmen die Pins vom SPI Interface (violett) 19,21,23,26 and 22 + 20 für GND siehe GPIO schematic Raspi

GPIO--------Pin#--color ------------ JTAG Pogo E02 (Wire colors i used from Buspirate cable-code)

GND ------- 20 - (Brown) GND ----------- GND (1)
GPIO 10 --- 19 - (Grey) MOSI ----------- TDI (2)
GPIO 9 ---- 21 - (Black) MISO ---------- TDO (4)
GPIO 11 --- 23 - (Violett) CLK --------- CLK (5)
GPIO 25 --- 22 - (White) CS ------------ TMS (6)
GPIO 7 --- 26 - (Blue) AUX/TRST ------- RES (7)

--------------------------------------------------------------------------------
## JTAG Kabel, so sollte es aussehen ##
Create a JTAG cable with the following pinout:
Pin Name Raspi(PinHeader) Pogo E02 (J1)
TRST ----------- 26 ------------------- 7
GND ------------ 20 ------------------- 1
JTAG_TMS ----- 22 ------------------- 6
JTAG_TDI ------ 19 ------------------- 2
JTAG_TDO ----- 21 ------------------- 4
JTAG_TCK ------ 23 ------------------- 5

Wir verwenden hier die Pins vom SPI Interface (violett) 19,21,23,26 und 22 (General I/O) + 20 für GND!
Du musst angemeldet sein, um Bilder zu sehen.
Foto vom Aufbau:
,
,
Meine Quellen:








PS: Für Anregungen, Verbesserungen und auch Kritik habe ich immer ein offenes Ohr
** lange lebe der Pogo ;-) **
 
Zuletzt bearbeitet:
AW: Reparatur Pogo E02 mittels Raspi als Jtag

Hey joerg_999,
die Anleitung sieht gut aus. Aber die Verdrahtung macht mir sorgen. Ich könnte ein Raspi von einem freund ausleihen. Das Blaue T-Stück überträgt die Pins einfach auf das Board oder?

Irgendwie sehe ich keinen Zusammenhang zwischen der Zeichnung und deinem Bild. Dein Bild sieht einfacher aus, aber die Perspektive und quaität lässt es nicht zu, dass ich mich nur daran orientiere.
Hast du noch eine einfache Schaltung/Bild?

Edit:
z.B. bei J1: (3) SRST -> NC. Auf deinem Bild hast du aber das Rote Kabel dran?
Und den TTL hast du auf dem Board mit dem Raspi und CON3 verbunden? Quasie Knoten oder? Welche Schaltung benötige ich dazu? Und muss der TTL nicht an den USB Port vom Raspi?
 
Zuletzt bearbeitet von einem Moderator:
AW: Reparatur Pogo E02 mittels Raspi als Jtag

Update: siehe Beitrag1
###############

Was du auf dem Foto siehst ist ein Adapter den ich mir gebastelt habe, da ich das Ding öfter mal benutze.
( der besteht aus einem handelsüblichen Breadboard das man per Flachbandkabel an den Raspi anschließen kann und von dort gehe ich über ein weiteres Flachbandkabel mit Stiften bzw. Buchsen dran auf einen Adapter der mir den 2,54mm Raster Stecker auf einen 2,0mm Raster Buchse wandelt die direkt auf den Raspi J1 passt).

Das alles muss aber nicht sein, besorge dir aus dem Elektronikladen ein Flachkabel wo Buchsen drauf sind: (zb)

(die steckst du direkt auf den Raspi) und löte die anderen Enden direkt an den Pogo auf der Platinen Unterseite.

Die Farben die ich angegeben habe stimmen schon und beziehen sich auf das Flachbandkabel.
Wie du richtig festgestellt hast ist der SRST (Pin3) vom J1 nicht verbunden.
Verbunden gehört es genau so:

Raspi Pin# -------------- J1 (Pogo) Pin#
20 - (Brown) -- GND -------- GND (1)
19 - (Grey) -- MOSI --------- TDI (2)
21 - (Black) -- MISO --------- TDO (4)
23 - (Violett) -- CLK --------- CLK (5)
22 - (White) -- CS ----------- TMS (6)
26 - (Blue) -- AUX/TRST ---- RES (7)

Steht aber in der Beschreibung darüber, ich habe nur der Vollständigkeit halber die GPIO Nummern vom Raspi dazugeschrieben, da die ja nicht gleich mit den Pin Nummern sind.

Der ttl Adapter geht nur von con3(Pogo) auf einen PC-USB Port oder auf einen Raspi USB Port - sonst nirgendwo hin!
(sieht man am Bild wirlich nicht so gut...)
Da ich wie in meiner Beschreibung das ganze über den PC betrieben habe steckt bei mir der ttl-Adapter an einem USB am PC,
bei dir wenn du das ganze ohne PC nur direkt mit dem Raspi machen möchtest gehört er natürlich in einen der USB Ports am Raspi.

Wenn du noch Infos brauchst melde dich ruhig.
PS: wenn es dir vom Verständnis hilft habe ich noch einen Anhang:



so habe ich den Buspirate angeschlossen.
joerg_999
 
Zuletzt bearbeitet:
AW: Reparatur Pogo E02 mittels Raspi als Jtag

Der TTL wird also ganz "normal" an die Pogo (CON3) angeschlossen, oder?
Auf dem Bild sieht es so aus als ob der mit dem Breadboard verbunden ist.
 
AW: Reparatur Pogo E02 mittels Raspi als Jtag

So ist es. nur an CON3. Das ist am Foto schlecht zu erkennen.
(Dafür war das Foto aber auch nicht gedacht ;-)
 
Zuletzt bearbeitet:
AW: Reparatur Pogo E02 mittels Raspi als Jtag

Update -> siehe Beitrag1 - Nun läuft alles wie der geölte Blitz....

Die wichtigsten Änderungen
:

1.) switched to raspi-nativ mode für mehr Speed (Neucompilierung OpenOCD mit nativ mode erforderlich!),
2.) set adapter_khz 2000 - Adapter Speed erhöht
3.) ändern des Reset von Pin 18 (GPIO24) to Pin 26 (GPIO7) -- das war das Hauptproblem

Update1: Mit der neuen Konfiguration konnte ich das uboot in 12sec flashen -- superfast ! (7 times faster than buspirate)

Update2: Beschreibung Seite 1 aktualisiert! + update uboot / uboot-env auf die letzte Version von bodhi.
---------> aktuelles uboot (uboot.2015.10-tld-1)+ uboot-env (uboot.2014.07-tld-3.environment)

Update3
: Konfiguration der raspberrypi123-native.cfg angepasst,nun laufen alle Raspis (B,B+,RPI2 und der neue RPI3)

--joerg_999
 
Zuletzt bearbeitet:
AW: Reparatur Pogo E02 mittels Raspi als Jtag

Hallo joerg_999,

nach langer zeit habe ich es gewagt deine Anleitung zu probieren :-)
Ich komm mal gleich zu meinem Problem, weil es schon spät geworden ist.
Ich hab ein RP2 und es ist mit Verdrahtung noch nicht verbunden. Liegt eventuell hier der Fehler wenn ich versuche (wie nach Anleitung) sudo openocd -f pogo.cfg ausführe?

pi@raspberrypi:~ $ sudo openocd -f pogo.cfgOpen On-Chip Debugger 0.10.0-dev-00250-g9c37747 (2016-04-08-21:51)
Licensed under GNU GPL v2
For bug reports, read

BCM2835 GPIO config: tck = 11, tms = 25, tdi = 10, tdo = 9
BCM2835 GPIO nums: swclk = 25, swdio = 24
BCM2835 GPIO config: trst = 7
trst_only separate trst_push_pull
adapter speed: 2000 kHz
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'.
trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain connect_deassert_srst
adapter_nsrst_delay: 200
jtag_ntrst_delay: 200
Warn : use 'feroceon.cpu' as target identifier, not '0'
pogo_load_uboot
Info : BCM2835 GPIO JTAG/SWD bitbang driver
Info : JTAG and SWD modes enabled
Info : clock speed 2002 kHz
Error: JTAG scan chain interrogation failed: all zeroes
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: feroceon.cpu: IR capture error; saw 0x00 not 0x01
Warn : Bypassing JTAG setup events due to errors
Info : Embedded ICE version 0
Info : feroceon.cpu: hardware has 1 breakpoint/watchpoint unit
Error: unexpected Feroceon EICE version signature
raspberrypi123-native.cfg:
## raspberrypi123-native.cfg (now for all of the Raspis)
# It´s about 4 times faster for writing and 14 times faster for reading
# compared to the generic sysfsgpio driver


# Config for using Raspberry Pi's expansion header
#
# This is best used with a fast enough buffer but also
# is suitable for direct connection if the target voltage
# matches RPi's 3.3V and the cable is short enough.
#
# Do not forget the GND connection, pin 6 of the expansion header.
#
# Please set the right peripheral_base address and Transition delay
# depending on which Raspi (1,2 or 3) you use.


interface bcm2835gpio
# Raspi2 and Raspi3 peripheral_base address
bcm2835gpio_peripheral_base 0x3F000000


# Raspi1 peripheral_base address
# bcm2835gpio_peripheral_base 0x20000000


# Transition delay calculation: SPEED_COEFF/khz - SPEED_OFFSET
# These depend on system clock, calibrated for stock 700MHz
# bcm2835gpio_speed SPEED_COEFF SPEED_OFFSET


# Raspi3 BCM2710 (1200Mhz):
#bcm2835gpio_speed_coeffs 194938 48


# Raspi2 BCM2709 (900Mhz):
bcm2835gpio_speed_coeffs 146203 36


# Raspi1 BCM2708: (700Mhz)
# bcm2835gpio_speed_coeffs 113714 28


# Each of the JTAG lines need a gpio number set: tck tms tdi tdo
# Header pin numbers: 23 22 19 21
bcm2835gpio_jtag_nums 11 25 10 9


# or if you have both connected,
# reset_config trst_and_srst srst_push_pull


# Each of the SWD lines need a gpio number set: swclk swdio
# Header pin numbers: 22 18
bcm2835gpio_swd_nums 25 24


# If you define trst or srst, use appropriate reset_config
# Header pin numbers: TRST - 26, SRST - 18


bcm2835gpio_trst_num 7
reset_config trst_only


# bcm2835gpio_srst_num 18 # should be GPIO 24, (maybe typo in original)
# reset_config srst_only srst_push_pull


# or if you have both connected,
# reset_config trst_and_srst srst_push_pull


# adapter speed in khz
adapter_khz 2000

VG, Spyer
 
AW: Reparatur Pogo E02 mittels Raspi als Jtag

Die Fehlermeldung kommt da du noch keine Verdrahtung hast.
Sonst schaut es gut aus ;-)

LG
joerg_999
 
AW: Reparatur Pogo E02 mittels Raspi als Jtag

Hallo joerg_999,

gut das du da bist.:DDD
Nach der Verdrahtung siegt das besser aus:

nach der verdrahtung:
pi@raspberrypi:~ $ sudo openocd -f pogo.cfgOpen On-Chip Debugger 0.10.0-dev-00250-g9c37747 (2016-04-08-21:51)
Licensed under GNU GPL v2
For bug reports, read

BCM2835 GPIO config: tck = 11, tms = 25, tdi = 10, tdo = 9
BCM2835 GPIO nums: swclk = 25, swdio = 24
BCM2835 GPIO config: trst = 7
trst_only separate trst_push_pull
adapter speed: 2000 kHz
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'.
trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain connect_de assert_srst
adapter_nsrst_delay: 200
jtag_ntrst_delay: 200
Warn : use 'feroceon.cpu' as target identifier, not '0'
pogo_load_uboot
Info : BCM2835 GPIO JTAG/SWD bitbang driver
Info : JTAG and SWD modes enabled
Info : clock speed 2002 kHz
Info : JTAG tap: feroceon.cpu tap/device found: 0x20a023d3 (mfg: 0x1e9 (Marvell Semiconductors), part: 0x0a02, ver: 0x2)
Info : Embedded ICE version 0
Info : feroceon.cpu: hardware has 1 breakpoint/watchpoint unit

Am pogo gehen aber die Lichter beim einschalten kurz an und dann wieder aus und die verbindung per TTL spuckt auch nichts aus.
Ich schau mal wie es mit telnet weiter geht.

Telnet ausgabe:
Open On-Chip Debugger> pogo_init
feroceon.cpu: 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
> soft_reset_halt
requesting target halt and executing a soft reset
feroceon.cpu: target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x400000d3 pc: 0x00000000
MMU: disabled, D-Cache: disabled, I-Cache: disabled
>
telnet2. Versuch:
Open On-Chip Debugger> pogo_init
feroceon.cpu: 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
> pogo_init
> nand probe 0
unknown NAND flash device found, manufacturer id: 0x00 device id: 0x00


>
Irgenwas stimmt da nicht.. soll ich weiter mit
Code:
nand erase 0 0x0 0xa0000
machen oder ist da was falsch?

VG, Spyer


edit:
3. versuch. Jetzt hat der gelöscht, aber es kommt ein time out beim schreiben.
Open On-Chip Debugger> pogo_init
unexpected Feroceon EICE version signature
> soft_reset_halt
requesting target halt and executing a soft reset
feroceon.cpu: target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x400000d3 pc: 0x00000000
MMU: disabled, D-Cache: disabled, I-Cache: disabled
> nand probe 0
NAND flash device 'NAND 128MiB 3.3V 8-bit (Hynix)' found
> nand erase 0 0x0 0xa0000
erased blocks 0 to 4 on NAND flash device #0 'NAND 128MiB 3.3V 8-bit'
> nand write 0 uboot.kwb 0 oob_softecc_kw
timed out while waiting for target halted
error executing hosted NAND write
Unable to write OOB data to NAND device
failed writing file uboot.kwb to NAND flash 0 at offset 0x00000000
> nand write 0 uboot.kwb 0 oob_softecc_kw
NAND flash access requires halted target
NAND flash access requires halted target
NAND flash access requires halted target
NAND flash access requires halted target
NAND flash access requires halted target
target not halted
Unable to write data to NAND device
failed writing file uboot.kwb to NAND flash 0 at offset 0x00000000
> nand write 0 uboot.kwb 0 oob_softecc_kw
NAND flash access requires halted target
NAND flash access requires halted target
NAND flash access requires halted target
NAND flash access requires halted target
NAND flash access requires halted target
target not halted
Unable to write data to NAND device
failed writing file uboot.kwb to NAND flash 0 at offset 0x00000000
>
 
Zuletzt bearbeitet von einem Moderator:
AW: Reparatur Pogo E02 mittels Raspi als Jtag

Drück mal die reset taste im Pogo.
Weiters muss bei nand probe 0 was vernünftiges kommen sonst kannst du nicht weitermachen

Kurze Zwischenfrage: ist dein Pogo tot oder möchtest du nur flashen mittels Raspi probieren?
 
Zuletzt bearbeitet:
AW: Reparatur Pogo E02 mittels Raspi als Jtag

Hallo joerg_999,

ich habe hier damals zwei pogos zerschossen.
Jetzt hat es glaube geklappt. Man muss paar versuche tätigen.
Bekomme gerade keine Verbindung mit dem TTL her, aber der pogo blinkt erstmal :-)

Warum hat der bei mir nur 4 Blöcke gelöscht und in deiner Anleitung steht 5?
erased blocks 0 to 4 on NAND flash device #0 'NAND 128MiB 3.3V 8-bit'

VG, Spyer
 
AW: Reparatur Pogo E02 mittels Raspi als Jtag

0-4 sind 5 Blöcke (Block0 Block1 Block2 usw) das passt so.

PS: TTL Adapter brauchst erst nach dem flashen des uboots
--joerg_999
 
AW: Reparatur Pogo E02 mittels Raspi als Jtag

okay da bin ich bei dir. Ich habe mich nicht eindeutig ausgedrückt.
Bei dir steht in der "soll" Ausgabe" : erased blocks 0 to 5 on NAND flash device #0 'NAND 128MiB 3.3V 8-bit'
Und bei mir stand : erased blocks 0 to 4 on NAND flash device #0 'NAND 128MiB 3.3V 8-bit'
 
AW: Reparatur Pogo E02 mittels Raspi als Jtag

Das stimmt es werden sicherheitshalber Block 0-5 gelöscht - das alles sauber ist bis dorthin
Das uboot wird dann in block 0-4 geschrieben (4x128k = 512kb)
dann bleibt Block 4 bis 6 frei
und ab Block 6 werden die uboot envs geschrieben.
so steht es in der Bibel.....(von bodhi)

Hier zur Erinnerung nochmals das nand layout:
================================================================================
## uboot layout (mtd0) ##
================================================================================
......................offset
Block 0 (128K) 0x0 ------------|
|
Block 1 (128K) 0x20000........ |
|
Block 2 (128K) 0x40000 uboot | size 0x80000
|
Block 3 (128K) 0x60000........ |
|
Block 4 (128K) 0x80000 -----------|--> uboot 4 Blocks zu 128K

Block 5 (128K) 0xa0000

Block 6 (128K) 0xc0000 -----------| size 0x20000
.................................uboot env |
Block 7 (128K) 0xe0000 -----------|--> uboot env 1 Block zu 128K

128K x 8 = 1024K = 1M
bis 0x100000 1M = 8 Blocks (0-7)

================================================================================

--joerg_999
 
Zuletzt bearbeitet:
Zurück
Oben