Forum: Mikrocontroller und Digitale Elektronik Problem mit Infinion C167CR mit AM29F200B-70SE


von Martin M. (mageb)


Lesenswert?

Hallo zusammen,

ich habe ein Problem mit dem Steuergerät von meinem Automatischen 
Schaltgetriebe. Auf der Platine ist ein Infinion  C167CR mit 
AM29F200B-70SE als externer Speicher. Ich würde gerne wissen ob es eine 
Möglichkeit gibt das Programm auszulesen. Ich habe gelesen dass man den 
Controller Serriel oder über Canbus programmieren kann. Stimmt das? Wenn 
ja mit welchem Programm? Und was brauch ich für ein Datenkabel? Kennt 
sich vieleicht einer mit dem Teil aus?

Ich bin Dankbar für alle Antworten

Schöne Grüße

Martin

von Jörg S. (joerg-s)


Lesenswert?

Schau dir mal das Programm MiniMon an (gibt's bei Infineon). Allerdings 
musst du beim dem Programm m.w. vorher die Buskonfiguration kennen.
FLASHit8 wäre ein Programm was die Config automatisch ausliest.

von Martin M. (mageb)


Lesenswert?

Danke erstmal für die Antwort. Ich werde es morgen direkt mal 
auspropieren. Ich hoffe du meinst mit dem Bus den Can Bus oder nicht? 
Gibts es außer dem CAN Bus noch eine andere möglichkeit um auf den 
Kontroller zuzugreifen wenn z.B der Bootloader defekt ist?

von Jörg S. (joerg-s)


Lesenswert?

> Ich hoffe du meinst mit dem Bus den Can Bus oder nicht?
Ich hab nur Erfahrung mit dem UART. Ob die Programme auch über CAN 
funktionieren weiss ich nicht.
Mit Buskonfiguration meine ich die Konfig für den Datenbus an dem das 
Flash dran hängt. Diese Konfiguration wird mit Widerständen am Datenbus 
bestimmt und wird vom C167 beim booten ausgelesen. Ohne passende 
Konfiguration lässt sich das Flash nicht ansprechen und so natürlich 
auch nicht auslesen.

von Martin M. (mageb)


Angehängte Dateien:

Lesenswert?

Ok das ist gut zu wissen. Aber wie greif ich denn auf den C167CR zu? Was 
für eine Schnittstelle braucht man dafür? Muss man vieleicht an pin 77 
und 78 mit einem max232 dran gehen? Ich lade das Datenblatt mal mit hoch 
fals du es gerade nicht zu hand hast.

von Jörg S. (joerg-s)


Lesenswert?

>Muss man vieleicht an pin 77 und 78 mit einem max232 dran gehen?
Genau das ja :) Pins stimmen auch...

von tom (Gast)


Lesenswert?

..natürlich musst du auch den bootstrap-mode des uC aktivieren , d.h. 
wenn er aus dem reset kommt muss ein bestimmter pin low gesampled werden 
(siehe Manual, irgendwo am Port 0.4 ??? (BSL-pin)).
UART Rx/Tx/Gnd per max232 an den PC-Comport anschliessen.
dann kannste auf den UART (9600Bd, N,8,1) mal ein 0x00-byte schicken und 
schauen ob du eine response bekommst (0xd5 oder ähnlich - siehe manual 
für den wert je nach derivat und stepping für's BSL-acknowledge...).
Wenn das passt, weisst du schonmal das deine HW funzt ;-).

Das flash ist 16-bit breit (wenn A0 nicht am uC angebunden, da gibt es 
keine ungeraden Adressen...), schau mal ob du adress-latches zwischen uC 
und Flash hast, dann ist es multiplexed mode, ansonsten non-muxed.

Je nach uC-Takt musst Du auf jeden Fall wait-states für das flash 
konfigurieren, da es 70nsec Zugriffszeit hat und z.B. ein 20Mhz uC-Takt 
in 50nsec resultieren würde, was zu schnell ist aber bei 25Celsius 
vielleicht funzt...

Nun kannste mit minimon fleissig bootstrappen, konfigurieren und 
auslesen ;-). Aber etwas manual lesen selbst sollte auch von vorteil 
sein ;-).

gruss + viel erfolg, tom.

von Martin M. (mageb)


Lesenswert?

Danke für die Hilfe. Welcher manual meinst du denn? Meinst du das 
Datenblatt? Oder gibts nen gutes manual zu dem Minimon? Ich hab 
irgentwie noch keine Anleitung gefunden. Wäre echt nett wenn du mir 
einen Link schicken könntest.

von tom (Gast)


Lesenswert?

...guckst Du z.B. hier (habe nach einfach mal nach appnotes auf der 
infineon website gesucht).
Du muss P0L.4 auf low legen und dann 1xReset machen, damit der knabe in 
den BSL-mode geht. auf das 0x00-byte solltest du ein 0xc5 dann 
zurückbekommen (comport-toolkit oder irgendein RS232 terminalprogramm 
was hex-schicken kann).
damit wäre klar, das deine kabel funzt. nun solltest du in der lage 
sein, mit minimon zu arbeiten. das hat eine integrierte hilfe 
(F1-Taste)...
Jetzt muss du "nur" noch die richtigen Einstellungen für SYSCON u. 
BUSCONx Register ausknobeln - paar tips dazu habe ich dir ja schon 
gegeben, kenne die schaltung nicht also kann ich dir da auch nix 
konkretes sagen ausser das du mal im manual nachschaust, wie das externe 
businterface nach Pon über so ein paar pulldown-widerstände auf deiner 
platine initial konfiguriert wird, damit der prozessor von dort das 
programm fetchen kann.

http://www.infineon.com/dgdl/ap1601210_Bootstrap_Loader_IDB.pdf?folderId=db3a304313719f4f011372b30f58008a&fileId=db3a304318a6cd680118cb945a2140bc

von tom (Gast)


Angehängte Dateien:

Lesenswert?

guckst du hier, sollte praktikabel sein...

von Martin M. (mageb)


Lesenswert?

Dabke Danke tom, hab nur leider heute keine Zeit mehr das 
auszuprobieren. Ich hoffe ich komme morgen dazu. Ich meld mich auf 
jedenfall nochmal obs geklappt hat oder nicht.

Gruß Martin

von Martin M. (mageb)


Lesenswert?

Hallo, hab endlich mal ein bischen Zeit gefunden. Als erstes habe ich 
immer auf meine gesendete 00 eine 00 zurückbekommen. Hab dann aber 
festgestellt das ich GND vergessen habe. Kann so ja nicht klappen. Jetzt 
bekomme ich nach dem Reset eine 81 als Antwort auf meine 00. Aber nur 
einmal beim 2. mal 00 senden bekomme ich keine Antwort. Erst wenn ich 
einen erneuten Reset mache. Ist warscheinlich richtig so oder?
Ich werde mich morgen mal mit dem Minimon auseinandersetzen. Oder kann 
mir so schon jemand sagen was die 81 zu bedeuten hat? Oder was ich am 
Besten als nächstes testen kann?

Gute Nacht

Martin

von Martin M. (mageb)


Lesenswert?

Hallo, habe jetzt versuch mit Minimon die Daten auszulesen. Aber wenn 
ich auf connect klicke sendet der wohl auch eine 00 und bekommt eine 81 
als Anwort. Damit ist Minomon aber nicht zufrieden. Wenn ich einen 2. 
Versuch mache passiert nichts also keine Antwort. Auch nicht wenn ich 
einen erneuten Reset mache. Ich muss dem Controller erst die 
Versorgungsspannungs nehmen, ein bischen warten, Spannung wieder drauf, 
Reset machen und dann kann ich wieder conecten und bekomme wieder eine 
81 als Antwort.

Ich sende mit 9600 und haben als Controller den C167CR eingestellt. Muss 
ich mal mit den Einstellungen rumprobieren? Oder ist die Sache 
hoffnungslos und mein Controller defekt?

Wäre nett wenn mir da jemdand weiter helfen könnte.

Ich kann auch mal Fotos und Screenshots hochladen wenn das jemandem was 
bringt.

Martin

von tom (Gast)


Lesenswert?

Martin,

Also, das RTFM (Read The Fine Manuals) kann Dir niemand vollständig 
ersparen ;-)...

Das ACK-byte auf das 0x00 KANN nur beim 1. Mal senden zurückkommen, 
siehe Manual des BSL, danach "steht" der uC in seinem internen 
ROM-Programm und wartet sehnsüchtig auf 32bytes programmcode per UART... 
ABer das macht alles minimon, WENN denn Deine UART-Verbindung ok. ist.

Sieht aber nicht so aus... Baudrate ist ok, aber schau mal ob Du 8,N,1 
eingestellt hast. Wenn Du ein scope hast, einfach mal anschauen, was da 
am Rx-Pin des uC ankommt und am Tx-Pin rausgeht. 0x81 ist definitiv 
KEINE gültige ACK-Kennung eines C167-Typs, da haut was mit Deiner 
Kabelage noch nicht hin. Aber das ist Rx/Tx/Gnd und ein MAX232 mit 
+5V/GND und paar C's, der richtig beschaltet sein sollte. Das ist 
relativ trivial und solltest Du schon selbst auf die Reihe kriegen...

Gruss, tom.

von Martin M. (mageb)


Lesenswert?

Hallo Tom,

danke für die Info. Mich wundert nur das ich nach einem Reset keine 
erneute Antwort bekomme. Ich muss erst die gesammte Spannungsversorgung 
weg nehmen. Ich habe auch schon mal RXD und TXD getauscht. Dann bekomme 
ich garkeine Antwort. Ich benutzte im Moment einnen FTDI weil mein 
Laptop keine Serielle Schnittstelle mehr hat. Einen FT323. Ein Atmel 
lässt sich damit ansprechen. Oder sollte ich es mal besser mit einem max 
versuchen?
Was sollte ich denn auf dem Scope sehen? Ich habe nur son altes analoges 
Hameg.

Was passiert wenn ich die falsche Taktrate eingestellt habe? Auf dem 
Quarz steht 808KS042+. Hat der wohl 8 MHz? 80MHz kann der C167 ja nicht 
oder? Mein Ossi geht auch nur bis 10 MHz. Aber ich werde es wohl mal 
drann machen. Fals es wirklich nur 8 MHz sind müsste ich es ja noch 
messen können.

Ich habe mir mal den C167CR bei Ebay gekauft und kann damit dann mal ein 
bischen testen. Den Flasch gibts ja auch für 2,50 bei Farnell.

Grüße

Martin

von Jörg S. (joerg-s)


Lesenswert?

>Einen FT323.
Wahrscheinlich eher ein FT232? Benutze ich auch für den C167. Geht 
problemlos.

Den Bootstrap Modus hast du aber aktiviert, oder?

von Martin M. (mageb)


Lesenswert?

Hallo,

ja genau einen FT232. Pol.4 auf 0V und dann 1 mal Reset. Wie gesagt dann 
bekomme ich einmal 0x81. Aber nach einem erneuten Reset bekomme ich 
keine neue Antwort. Was passiert wenn man die falsche Taktfrequenz 
angegeben hat?

Gruß

Martin

von Jörg S. (joerg-s)


Lesenswert?

> Pol.4 auf 0V und dann 1 mal Reset.
Direkt gegen GND geschaltet? Ich bin mir nicht sicher, aber ich glaube 
die Pins darf man nur mit Pull-Down (~8,2k) gegen GND schalten.

von B. J. (bjue)


Lesenswert?

>Mich wundert nur das ich nach einem Reset keine
>erneute Antwort bekomme. Ich muss erst die gesammte Spannungsversorgung
>weg nehmen.

Das ist richtig so! tom hat das auch so gemeint in seiner Antwort.
Hier noch andere Links zu den Antworten:
http://www.embeddedrelated.com/usenet/embedded/show/7562-1.php
http://www.infineon.com/dgdl/p1601310_Bootstrap_Loader_Versions.pdf?folderId=db3a304412b407950112b409d4b00386&fileId=db3a304412b407950112b40a11780435

Ohne Speicher Oszi wird es vermutlich schwer die Antwort zu überprüfen, 
aber ich würde vermuten, der Fehler liegt irgendwo in der Hardware 
zwischen TX Pin des Controllers und Deiner RS232 vom PC.
Eventuell solltest Du mal das Schaltbild posten...

Gruß
Bernd

von Martin M. (mageb)


Lesenswert?

Hallo,

stimmt in der Anleitung steht was von 8k2. Ich habe den Pin so auf 0V 
gelegt. War vieleicht nicht ganz so gut. Werde es mal mit Widerstand 
versuchen. Ich habe RXT, TXD und GND direkt mit meinem FT232 verbunden. 
Wie gesagt mit einem Atmel gehts.

Nur an dem C167 gehen von den RXD und von dem TXD Leiterbahnen irgentwo 
anders hin. Ich konnte noch nicht nachverfoleg wo hin. Sollte ich die 
mal durchtrennen oder die Pins vorsichtig ablöten und hochbiegen? Oder 
kann das nicht stören?

Werde nacher mal ein paar Bilder und Skitzen machen.


Grüße

Martin

von Jörg S. (joerg-s)


Lesenswert?

>Nur an dem C167 gehen von den RXD und von dem TXD Leiterbahnen irgentwo
>anders hin. Ich konnte noch nicht nachverfoleg wo hin. Sollte ich die
>mal durchtrennen oder die Pins vorsichtig ablöten und hochbiegen? Oder
>kann das nicht stören?
Am RX Pin vom C167 sollte nach Möglichkeit natürlich nur der FT232 
treiben. Am besten mal mit nem Oszi schauen ob an TX und RX die Flanken 
und Pegel sauber von 5V auf 0V gehen.

von Martin M. (mageb)


Lesenswert?

Hallo,

ich werde mal versuchen nur den Controller an den FTDI anzuschließen. 
Ich habe in einer Rummerkiste noch einen C164CI-LM gefunden. Wird der 
ähnlich programmiert? Ich würde den gerne mal auf eine Platine setzen 
und damit ein wenig versuchen. Kann mir jemand sagen was ich dazu alles 
brauche? Quarz ist klar. Wie bringe ich den in den BTM? auch P0L4 auf 
GND?

Wäre nett wenn mir das jemand sagen könnte.

Grüße

Martin

von B. J. (bjue)


Lesenswert?

>Wie bringe ich den in den BTM? auch P0L4 auf GND?
Ja, siehe den Link von neulich, Seite 5:
http://www.infineon.com/dgdl/p1601310_Bootstrap_Lo...
Antwort müsste laut Liste B5h lauten.
Gruß
bjue

von Martin M. (mageb)


Lesenswert?

Hallo,

ouh ja stimmt hab ich garnicht gesehen. Hat vieleicht jemand einen 
Schaltplan für eine standart Beschaltung für den C164CI? Vpp/EA werde 
ich ja wohl auf high legen müssen um den internen Rom zu benutzten. Muss 
ich noch mehr Eingänge beschalten? Oder reicht es wenn ich die nicht 
connecte?


Gruß

Martin

von Martin M. (mageb)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe es endlich geschafft mit meinem Controller zu connecten. Ich 
haben einen 8k2 an P0L.4 gegen GND. Wenn ich die Spannungsversorgung 
einschalte kann ich conecten. Wenn ich erst einen Reset mache wie 
vorgesehen dann antwortet der Controller nicht. Ist das wohl richtig so?

Ich habe mal einen Screenshot von meinem Minimon gemacht. Kann mir 
vieleicht jemand sagen wie ich dem Controller ein Programm einlocken 
kann? Ich kann Bytes makieren und diese vom Controller uploaden. Aber 
das was rechts daneben steht kann ja keiner lesen. Welche Einstellungen 
muss ich ändern? Oder wo kann man das nachlesen?

Danke für eure Hilfe


Martin

von B. J. (bjue)


Lesenswert?

>Wenn ich die Spannungsversorgung einschalte kann ich conecten.
>Wenn ich erst einen Reset mache wie vorgesehen dann antwortet
>der Controller nicht.
Wo steht denn was von Reset? Der Controller geht nur dann in den 
Bootstraploader Modus, wenn beim Einschalten der Versorgungsspannung 8k2 
an P0L.4 gegen GND geschaltet ist. Dies wird oft über einen Jumper oder 
Schalter gemacht, damit man den Controller gezielt in den 
Bootstraploader Modus schalten kann.
>Ist das wohl richtig so?
Ja!

>Aber das was rechts daneben steht kann ja keiner lesen.
Das sind ganz einfach die jeweils 16 Bytes links daneben in Character 
Darstellung (Windows Zeichensatz). Wenn in dem Speicherbereich Texte 
abgelegt wären, könntest Du auch was lesen.

Viel Erfolg weiterhin!
Gruß
Bernd

von holger (Gast)


Lesenswert?

>Aber das was rechts daneben steht kann ja keiner lesen.

Das ist halt Binärcode. Man könnte den kompletten Code
mal durch einen Disassembler jagen. Helfen wird dir das
aber vermutlich auch nicht.

> Welche Einstellungen
>muss ich ändern? Oder wo kann man das nachlesen?

Den Hersteller fragen? Ne, lass mal, der sagt dir sowieso nichts.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.