Speicher aus Cartridge auslesen

Gast #3872554
Lesenswert?

Hallo,

ich habe am WE für meinen Sohn einen "Geschichtenbär" geschenkt 
bekommen. Der hat die Möglichkeit, weitere Geschichten von Cartridges 
abzuspielen.

Nun wird das Teil schon ewig nicht mehr hergestellt. Die Cartridges 
gibts nur noch selten bei Ebay zu exorbitanten Preisen. Auswahl fällt 
demnach auch sehr klein aus.

Der Plan ist, das ding mit neuen Daten (Hörbücher etc.) zu versorgen 
damit der Teddy nicht im Container landet.

Da hab ich mir gedacht, besorgst dir mal eine und schaust mal drüber. 
Aufgeflext, eingescant. Kann mir jemand sagen was das für speicher sein 
könnten? Evtl SPI da die Leiterbahnen wie ein Bus aussehen?

Gruß, Christian

(Alternativ "operiere" ich Bruno und bau ihm ein Raspberry ein :p)
Angehängte Dateien:
Gast #3872574
Lesenswert?

Ganz links ist GND, dann kommt VCC, ganz rechts ist auch VCC.

Den Rest wirst du dir im Betrieb mittels Oszi/Logic Analyzer anschauen 
müssen.

Ich zähle 7 Leitungen, daher würde ich einen 4-Bit Bus vermuten.
Clk + 4 Data + ALE + CS?

Kaffeesatzleserei.

RPi fände ich doof. Reverse die Leitungen/Protokoll und setz' 'nen µC 
(ggf. mit Mikro-SD) in deine Kassette.
Persönliche Seite #3872584
Lesenswert?

Bei zehn benutzten Anschlüssen bleiben acht für Inhalte übrig 
(Versorgungsspannung und Masse abziehen).

Das kann also irgendwas sein, Speicher mit 4-Bit-Datenbus, SPI, I²C 
oder auch analoger Kram, der in den ICs unter den Klecksen erzeugt 
wird.

Da die Innenbeschaltung Deines "Geschichtenbärs" vermutlich ebenso aus 
irgendwelchen Klecksen besteht, wird man entweder die Dinger röntgen 
müssen, oder aber mit einem Logikanalysator die Verbindungen zwischen 
Steckkärtchen und Bär abhorchen.

Der Aufwand dürfte erheblich sein; des Bären Elektronik durch einen Pi 
o.ä. zu ersetzen und einen SD-Karten-Leser einzubauen, über den dann 
einfach mp3-Files geladen und abgespielt werden, dürfte einfacher sein.

Ein Pi ist hier schon überdimensioniert; sofern der Bär nichts weiter 
macht als labern, reicht ein simples mp3-Modul.
Gast #3872600
Lesenswert?

Danke,

Wundert mich, das dort 2 chips drauf sind. vieleicht waren die ja 
günstiger.

Einfärbungen sind mit GIMP gemacht, Leitungen mit Zauberstab markieren, 
neue transparente Ebene in rot od. blau, Auswahl invertieren, markierung 
löschen.
Dann bleiben nur die ausgewählten Bahnen.

Vorher noch die Beiden Bilder ausrichten und übereinander legen.

der RPi wärs nur geworden, wenn das mit dem Speicher nix wird, dann hätt 
ich die interne elektronik komplett getauscht. Muss aber nicht sein, wär 
mir lieber dort ne SD Karte oder sowas reinzuklemmen.

Ich werd an die Cardridge mal kabel anlöten und im Betrieb mal die Pegel 
mitm oszi messen. Logic-Analyzer hab ich grad nicht parrat, wenn aber 
3,3v dann kann ich das ding auch an den GPIO vom rasp. hängen oder an 
nen parallelport oder an nen avr. Ich schau mal.

Gruß
Gast #3872604
Lesenswert?

Christian schrieb:
> Einfärbungen sind mit GIMP gemacht, Leitungen mit Zauberstab markieren,
> neue transparente Ebene in rot od. blau, Auswahl invertieren, markierung
> löschen.
> Dann bleiben nur die ausgewählten Bahnen.
>
> Vorher noch die Beiden Bilder ausrichten und übereinander legen.
Ok, also von Hand. Ich hatte auf eine automatisierte Lösung gehofft ;)
Gast #3872607
Lesenswert?

automatisch könnteste ja per Gimp-Script machen. Ebene nehmen, in 1 bit 
wandeln und einfärben. War mir händisch aber schneller :)

Das Vieh zappelt übrigens auch mit Armen und Beinen, hat also ettliche 
Servos drin, ich denk mal mit Analog is das nicht zu machen.
Gast #3872697
Lesenswert?

so, hab mal kurz durchgeklingelt

1 - gnd
2 - vcc 3,3v

3 - nc
4 - nc

5 - bei Modus1 clock 32khz 1,2us
6 - bei Modus2 clock 32khz 1,2us

7 - ???

8 - data
9 - data
10 - data
11 - data

12 - vcc 3,3v

alles 3.3v, müsste ich also mal irgendwie nen LogicAnalyzer 
organisieren.

5,6 sind mMn das Clock signal des jeweiligen Chips (es gibt 2 Modi, 
Märchen und Musik). 8-11 sieht verdächtig nach Daten aus.

Einzig die 7 macht micht stutzig. sieht wie ein regelmäßiger clock aus, 
und sobald man ein neues Kapitel anspringt etc. sehe ich "daten". Werden 
damit evtl. Speicherbereiche angesteuert? (daher so regelmäßig beim 
normalen abspielen, unregelmäßig beim seek.)
Gast #3872707
Lesenswert?

Dann müsste ich aber alle servos ansteuern, musik, bewegung, 
positionsabfrage etc. das halte ich für komplizierter als mit einfach 
mal den speicher anzuschauen ... Vieleicht ist es ja auch garnicht allzu 
komplex.
Gast #3872833
Lesenswert?

32kHz bei 4 Bit, macht 16kHZ bei 8 Bit, kann schon sein.
Das Chip Select ist demnach über die Clock realisiert.
7 könnte dann eine Art "address increment" sein.

Häng doch mal einen kleinen Mikrocontroller dran, der synchron zum Clock 
die Nibbles eines 8Bit PCM raushaut. Wenn der Puffer leer ist, einfach 
wieder von vorn. Wirst ja sehen, ob das geht. Gegebenenfalls Nibbles 
tauschen.

Was macht das Ding denn, wenn der Track zu Ende ist? Das müsste doch 
auch noch signalisiert werden. Geht das vielleicht mit über die 7?
(Firma: matzetronics) #3872836
Lesenswert?

Klingt für mich nach 8 bit Sound, evtl. mit aLaw oder µLaw noch etwas 
aufgemöbelt. Was mich dabei wundert, sind die lediglich 4 
Datenleitungen, denn irgendwoher müssen ja auch noch die Servosignale 
für die Motoren kommen. Läuft beim Liedchen immer die gleiche 
Motorsequenz oder ist das jedesmal anders?
Wenn das jedesmal anders ist, könnte ich mir vorstellen, das der Rechner 
einfach das Audio ein wenig auswertet und mit den Ohren oder der 
Schnauze wackelt.
ghls Vorschlag klingt gut, da könntest du dich mal ranmachen.
Gast #3873070
Lesenswert?

soo, hab ihn mir jetzt nochmal in aktion angeschaut.

also die bewegungen sind definitiv programmiert. Audio-Auswertung is das 
nicht, da er gewisse bewegungen bereits macht, wenn er nichts sagt.

also bei "streck die hände in die höhe" hat er schon vor dem satz die 
hände oben. Also definitiv gescriptet.

Ich werd morgen mal den analyzer drankleben und mir das mal 
mitschneiden.

Kann es sein, das über pin 7 quasi die steuersignale kommen (track 
anfang, ende, handpositionen)? Dann würde das ja bedeuten, das der IC in 
der Cardridge nicht nur ein speicher ist sondern aufwändiger. Warum 
sollte ein hersteller soviel logik in ein externes modul stecken wenn es 
doch eigentlich nur den sinn eines speichers hat.

Nagut, danke erstmal, ich werd morgen mal berichten!

MFG Christian
Gast #3873090
Lesenswert?

Für den Hersteller könnte der "Sinn" durchaus darin bestehen, die ganze 
Sache so unorthodox zu gestalten, daß er sich das lukrative 
Folgegeschäft mit den Cartridges sichern wollte - während der "Bär" 
sozusagen "unter Preis" verkauft wurde. Ist die Sache zu einfach zu 
kopieren, stehen die Fremdanbieter sofort bei Fuss - und liefern "nur" 
Cartridges. Der Bär selber ist dann evtl. Gebrauchsmuster/Copyright etc. 
produktrechtlich einfacher zu schützen, nicht jedoch die Verwendung von 
"Speichermodulen". Es dürfte also einfach "Absicht" gewesen sein...
Gast #3873258
Lesenswert?

Plausibel wäre, das es sich hier einfach um "zwei Files in Hardware" 
handelt.
Ich glaube kaum, dass sich der Entwickler hier mit Filesystemen und 
komplizierten Strukturen aufgehalten hat. Sicherlich werden feste 
Datenpakete mit z.B. entsprechender ID versandt. Bewegung und Sprache 
kombiniert, Musik extra.
Gast #3873804
Lesenswert?

Pin 7 würde ich für eine Steuerleitung halten, z.B. R/W. Der Controller 
muß erstmal sagen (schreiben), welche Adresse er lesen will, dann wird 
auf Lesen umgeschaltet und es kommen Daten aus dem Speicherchip. Beim 
Kapitelwechsel herrscht da natürlich Aktivität, weil der Controller im 
Inhaltsverzeichnis herumsucht. Während des Abspielens muß nur 
gelegentlich eine neue Blockadresse übermittelt werden, so daß das 
Signal sehr regelmäßig aussieht.

Es wäre interessant zu sehen, in welche Richtung jeweils Daten 
übertragen werden. Ein Widerstand in einer Datenleitung schafft da (am 
Oszilloskop) Klarheit.
Gast #3874013
Lesenswert?

So, hab mal weiter gemacht.

Aktuell hab ich noch keinen Logic Analyzer zur Hand. Daher erstmal nur 
das oszi.

Das bärchen wird langsam zum Cyborg, hab die Cardridge verlängert sodass 
ich jetzt die Leitungen unterbrechen kann etc.

Wie messe ich denn die Datenrichtung? Ich hab einen Widerstand zwischen 
Leitung.

Dann habe ich 2Messpunkte:

Leitung 1 - zum Bär : 3v
Leitung 2 - zur Cardridge: 2,8v

würde das nicht bedeuten, das die Signale vom Bär kommen?

Im übrigen hat das Tier auch eine Geschichte integriert, also ohne 
Cartridge. Wenn die Läuft, habe ich auch Signale auf dem Slot.

MFG
#3874212
Lesenswert?

hp-freund schrieb:
> Das ist ja wie bei der Modelleisenbahn.
> Sollte nicht eigentlich der Junior ....  ;-)
>
> Falls Du einen Rechner mit Druckerport hast, hilft vielleicht das
> weiter:
>
> http://jwasys.home.xs4all.nl/old/diy2.html
>
> Damit lässt sich sicher schon etwas anfangen bis der LA kommt.


ich kenne sowas ähnliches als TFLA (gehostet bei Berlios)

http://sourceforge.net/projects/tfla-01.berlios/
Gast #3874265
Lesenswert?

ja den TFLA nutze ich hier, bekomm ich aber nix brauchbares raus...

Ich werd heut abend mal versuchen, meinen Raspberry zu nutzen, der 
sollte mehr performance haben:

http://tuxbabe.eu/raspalyzer.html

Vieleicht kann ich das dann auch gleich aufzeichnen etc.

Kann mir eigentl. jmd. sagen wie ich die Flussrichtung der Daten 
bestimme? Ich steh da n bissl aufm schlauch.

MFG Christian
Gast #3874274
Lesenswert?

@hp-freund

der Junior ist erst 1,5 Jahre alt, das gibt ärger wenn ich dem nen 
Lötkolben in die Hand drücke. So hat der Papa aber auch noch viel Zeit 
:)
Der kleine hat eh noch Angst vor Bruno.
Gast #3876323
Lesenswert?

Christian schrieb:
> Kann mir eigentl. jmd. sagen wie ich die Flussrichtung der Daten
> bestimme? Ich steh da n bissl aufm schlauch.

Interessante Frage. Oder ich weiss es einfach nicht besser :-)

Meine Idee:
1m Koaxkabel in die Datenleitung mit Abschlusswiderstand und dann mit 
dem Oszi vorn und hinten messen. Sollte etwa 5ns Unterschied ergeben.

Oder gibt es eine bessere Lösung?
Die Richtung kann ja auch wechseln, also evtl. die Messung mit ext. Takt 
triggern???
Gast #3877748
Lesenswert?

Könnte man die Datenrichtung bei Unidirektionaler verbindung nicht mit 
einer Diode feststellen?

So mal kurz zum Status:

Logic Analyzer kann ich heute erst probieren, bis dato hab ich aber ein 
bisschen mitm Raspberry und dessen GPIO rumgespielt.
Außerdem gabs einige englischsprachige Seiten, die mit dem Tier (TJ 
Bearytales) rumgebastelt haben. Auch welche, die das Ding direkt 
angesteuert haben.

Aufgrund dessen, werde ich wohl die interne Elektronik komplett 
austauschen, denn ich habe Festgestellt, dass die Daten auf der 
Cartridge doch nur ein teil vom eigentlichen Programm sind. Diverse 
Texte wie z.B. die Kapitelansage sind auf dem Mainboard. So müsste ich 
also, sollte ich die Cartridge "nachbauen", meine Daten in das selbe 
Format bringen. Wer weis welche Beschränkungen man da noch feststellt.

Ich erhoffe mir vom direkten ansteuern, dass auch die Bewegungen 
flüssiger werden und ich völlig frei beim steuern bin.

Ich behalte trotzdem das Reverse Engineering im Auge, spätestens wenn 
ich einen geeigneten Logic analyzer habe.

Noch einige Infos die ich erlangt habe:
- Es handelt sich nicht um eine einfache SD-Card im 4-Bit Modus, 
zumindest konnte ich sie an einem Kartenleser nicht zum reagieren 
Bewegen. (Vermutung war SD-Card, da 4 Datenleitungen + clock + Command)

- Pin 7 scheint der gemeinsame Clock, Pin 5/6 scheint die Steuerleitung.

- das Teil scheint ziemlich komplex zu sein. Im inneren befindet sich 
auch eine Antenne. Scheinbar hatte der Hersteller noch einiges vor.

- Ich vermute, auf der Cartridge befindet sich ein richtiges 
Dateisystem.

- Wenn man die Cartridge stört (z.b. Data-Leitung im Betrieb auf GND), 
so laufen die Bewegungen weiter, aber der Ton setzt aus.

Heut abend gehts dann weiter, Ich werd das Teil mit seinen 
Spezialschrauben mal öffnen und werd mal die Hardware ausbauen.
Gast #3887099
Lesenswert?

So, da bin ich wieder.

mit dem Logic analyzer hat das auch alles ganz gut geklappt.

Im Anhang einige Dumps der Datenpakete.

In Kombination mit meinem Raspberry hab ich dann auch das Init 
erfolgreich zur Karte senden können. Die Karte antwortet entsprechend.

Ist jemanden dieses Protokoll bekannt? Oder muss ich das alles händisch 
nachbauen...

Das normale Datenpaket ist wie folgt aufgebaut (init_pressplay.png):

cs1-select (data 0b1111)
 data 0b0010 (write to card)
cs1-release

cs1-select (data 0b1111)
 data 0b0000 (write to card)
cs1-release

cs1-select (data 0b1111)
 data 0b1001 (write to card)
 data payload (write to card)
 data payload (write to card)
 data payload (write to card)
 data payload (write to card)
 data 0b1111 (write to card)
 data 0b1000 (write to card)
cs1-release

cs1-select (data 0b1111)
 data 0b0000 (write to card)
 data payload (read from card)
 .... .... ....
cs1-release


Ideen?

Ansonsten auch noch analysen vom audio-playback (play_??.png).
bestehend aus:
1 clock - write to card
1 clock - write to card
2 clocks - read from card (=8bit)

Ich glaube bei ca. 8khz, muss ich aber nochmal nachmessen.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren