www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Vorabinformationen C167.


Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ehe ich mich da ernsthaft ransetze: Motorsteuergerät mit C167, ext. 
Flash, ext. RAM, ext. SPI-EEProm.
Aufgabe: über K-Line Kommunikation das SPI-EEprom lesen und schreiben.
Programmtechnisch also sehr überschaubar.
Das Ding hat einen Bootlader on chip und einen bootpin. Meine Frage: ist 
es prinzipiell möglich, dem Dingen ein paar Bytes Programm in den RAM zu 
spielen und dann auch auszuführen, ohne den flash zu ändern? Zur Not 
würde aber auch gehen, den flash zu löschen, eigenes Programm rein, 
anschliessend wieder das Originale. Habe natürlich auch keine genauen 
Informationen über Speicheraufteilung :-(, das EEProm hängt jedenfalls 
an der Hardware-SPI.
Ich will keine fertige Lösung, mir geht es erstmal darum, den AUfwand 
abzuschätzen.
Und welcher Compiler kommt in Frage?

Autor: bushobbyentwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Comiler würde ich Keil sehr empfehlen. Davon gibt es eine kostenlose 
Version, die allerdings auf 2k Code beschränkt ist.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2k sollten für meine Aufgabe genügen...:-)

Autor: ex-mentor-user (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der C167 hat ein paar Strapping-Pins mit denen du den Startup 
konfigurieren kannst. Schau mal nach, so wie ich mich erinnern kann kann 
man den External-Bus-Controller da ziemlich gut konfigurieren. Der 
Boot-Code sollte im Flash liegen, allerdings könnten die ja mal eine 
Variante mit internen Flash rausgebracht haben. ST ist daran 
gescheitert...
Compiler: Keil oder Tasking. Beide haben ihre bugs.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der BSL des C167 lädt das Programm immer in
den internen XRAM. Was da geladen wird, bleibt
dir überlassen.

Tip: DesignGuide von Hitex: hitex_c166dg.pdf

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das wäre ja prima:-), und würde bedeuten, dass ich den flash gar nicht 
anfassen muss....
Bleibt die Frage: wie startet dann das Programm im RAM?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im 1.Schritt werden 32 Byte an eine feste
Adresse geladen und angesprungen. Mit
diesen 16 Instruktionen legst du das Folgende
selbst fest (s. AP1644).

Autor: Tomas Kuckenburg (Firma: tktronic) (tktronic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..na ja, XRAM ist nicht ganz korrekt und auch nicht ST sondern Siemens 
(jetzt Infineon) ist am internen Flash "gescheitert" in Zusammenhang mit 
C167CS seinerzeit.
Aso, die Herren und Damen - bitte keine Gerüchte verbreiten sondern 
fachlich weiterhelfen, ok. ?

deshalb kommen wir mal zum fachlichen Teil ;-).

Gehe mal davon aus, Du möchtest den uC über ASC0 (UART) bootstrappen 
(hurra, ein neudeutsches Wort).
Dazu muss der BSL-pin auf GND gezogen sein, wenn der uC aus'm reset 
kommt.
Guckst Du in Datenblatt, welcher pin das beim C167 ist.

Nun schickst du ein 0x00 byte mit einer verträglichen Baudrate (Quartz 
des uC !) zum uC und bekommst ein BSL-Acknowledge zurück. Variiert je 
nach uC und stepping (0xd5 oder ähnliches).
Jetzt kannst Du ein GENAU 32-byte kleines Programm schicken, welches vom 
uC-BSL (der ist ROM-resident) an eine feste adresse im internen RAM 
geladen wird.
sind alle 32 bytes geschickt, wird dieses progrämmchen dann automatisch 
vom ROM-BSL gestartet.
Sinnvollerweise ist dieses dein programm ein kleiner loader, der über 
die ASC0 nun dein eigentliches, grösseres programm ins IRAM laden kann 
und das dann startet. Ist unzweckmässig, wenn dein grösseres Programm 
über deinen 32-byte kleinen loader geladen wird ;-). Also schön auf die 
Lokierung achten !

Als Compiler/Assembler würde ich Tasking nehmen.

Ansonsten Appnotes, Manuals und googlen nach Beispielen...

Für teuer Geld macht das ansonsten eine mir gut bekannte Firma für Dich 
;-).

Gruss, tom.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut, bedanke mich für die Infos.
Sollte also alles im überschaubaren Rahmen machbar sein.
Vielleicht mach ich das bisschen Zeug gleich in Assembler, schaun wir 
mal.

Werde berichten, wie es ausgegangen ist :-)

Autor: Stefan Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Das EEPROM auszulesen ohne das Gerät zu öffnen interessiert mich auch.

Für die Variante, einen loader in den Prozessor zu laden, müsste aber 
ASC0 (UART) und der BSL-PIN von aussen zugänglich sein, oder?

Wenn nicht ist es ja schliesslich kein Problem, das EEPROM direkt 
auszulesen. Zur Zeit löte ich es aus, lese es, kopiere es und löte es 
wieder ein. Das ganze bei geschlossenem Gerät zu machen, wäre super.

@crazy horse

Um welches Steuergerät geht es denn, hast Du schon geprüft, ob die Pins 
von aussen zugänglich sind?
Vielleicht kann ich auch unterstützen.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bosch Cartronic.
BSL-Pin ist nicht rausgeführt, zumindest nicht direkt.
Lesen hat schon mal geklappt, Schreiben noch nicht, muss erst mal noch 
rausfinden, wohin der WP-Eingang  geht...

Autor: Stefan Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich dachte Cartronic wäre nur der Name der Architektur, heisst das 
Steuergerät so oder hat das noch eine Modellbezeichnung oder Bosch-Nr.?.


Ich hab mal das Datenblatt gezogen und mal an einem Motorsteuergerät für 
den VW-Pumpe-Düse TDI (Bora) nachgeschaut. Das Steuergerät ist ein Bosch 
EDC15P+

Bei dem Steuergerät geht die beiden ASC0 (UART) in die K-Leitung über. 
Der BSL-PIN liegt ja laut Datenblatt wohl an PIN 104 und ist ein 
Wandler. Der geht auch an die Messerleiste nach draußen.

Dann müsste das ganze so funktionieren, wie Thomas es vorgeschlagen hat.

Wie hast Du es geschafft, das Eprom zu lesen? Hast es mit dem kleiner 32 
Byte Loader gemacht? Wäre brennend daran interessiert.

Autor: Stefan Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
WP vom EPROM geht bei dem Steuergerät, was ich hier liegen habe an den 
"RST IN" PIN vom C167

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, hier auch :-)

Autor: Stefan Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hast Du das jetzt mit dem Lesen gemacht?

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tja, Programm geladen, EEprom ausgelesen, über K-Line rausgeschmettert.

Autor: Bill Lewis (einspritzmotor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
crazy horse wrote:
> Bosch Cartronic.
> BSL-Pin ist nicht rausgeführt, zumindest nicht direkt.
> Lesen hat schon mal geklappt, Schreiben noch nicht, muss erst mal noch
> rausfinden, wohin der WP-Eingang  geht...

Hallo,

Entschuldigung, aber ich spreche nur kleine Deutsch.

Ich habe bekommen Bootstrap-Modus zu arbeiten in einem Porsche Cartronic 
SG.

Sprechen Sie English?  I can show you what I did to make it work.

http://www.wrljet.com/junk/ME7.8-bootmode.jpg

http://www.wrljet.com/junk/ME7.8-solder-side2.jpg

Tschuss,
Bill

Autor: Stefan Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab jetzt noch ein anderes Steuergerät geschnappt. Es ist ein ME7.5 
(Audi 1.8T) Dort ist leider der BSL-PIN nicht herausgeführt sondern er 
geht direkt auf den Flash-Baustein.
Die Methode ist damit leider nicht geeignet um bei allen Steuergeräten 
das EEPROM auszulesen ohne das Gehäuse zu öffnen. Aber zur Zeit löte ich 
die EEPROMs immer aus, schreibe sie und löte sie wieder ein.

Allerdings könnte man sich bei der Bootstrap-Methode wenigstens das 
Öffnen des Gehäuses sparen. Leider muss ich zugeben, dass ich es wohl 
alleine nicht hinbekommen würde, das EEPROM über K-BUS zu lesen und zu 
schreiben.

@Crazy horse: Kann man Dein Programm bekommen. Was brauch ich 
zusätzlich? Einen K-Bus-Adapter für die serielle Schnittstelle? Ein 
Terminalprogramm?

Autor: Stefan Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir jemand sagen, was ich brauche?

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
K-Line-Converter brauchst du schon (OBD2-shop).
Software PC-Seite habe ich ein eigenes geschrieben mit Oberfläche, noch 
nicht ganz fertig :-)

Autor: rkam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Können Sie mir bitte erklären, welche Befehle zu verwenden, um eeprom zu 
lesen?

Mein ME7 hat ein AMD29F800BB und ein 5P08C3

Dieses ist die loader, die ich benutze. Es liest ein Programm der 
örtlich festgelegten Länge und beginnt es. (FA60-FA7F)

00FA40: E6 58 01 00 9A B7 FE 70 E6 F0 60 FA 7E B7 9A B7
00FA50: FE 70 A4 00 B2 FE 86 F0 7F FA 3D F8 EA 00 60 FA
********************************xxxxx******************
00FA40: MOV S0TBUF,#0001h
00FA44: JNB S0RIR,FA44h
00FA48: MOV R0,#FA60h
00FA4C: BCLR S0RIR
00FA4E: JNB S0RIR,FA4Eh
00FA52: MOVB [R0],S0RBUF
00FA56: CMPI1 R0,#FA7Fh
00FA5A: JMPR cc_NZ,FA4Ch
00FA5C: JMPA cc_UC,FA60h
*****************************

Autor: Martin Teves (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie lautet denn die BOSCH-Nummer von dem Gerät? Vom ME7 gibt locker 1000 
verschiedene Varianten.

Autor: rkam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BOSCH-Nummer 0261206272
26SA5834, 09470738 B

Sorry for not taking the time to translate into German.
After two HD crashes and reinstalling windows I had trouble finding
this thread again.

In the reset handler of an ME7.0 file I find the following:
ROM:0206 mov CP, #0FB40h
ROM:020A mov BUSCON0, #4AEh
ROM:020E mov SYSCON, #0E304h
ROM:0212 mov ADDRSEL1, #3005h
ROM:0216 mov BUSCON1, #40Eh
ROM:021A mov ADDRSEL2, #0
ROM:021E mov BUSCON2, #0
ROM:0222 mov ADDRSEL3, #0
ROM:0226 mov BUSCON3, #0
ROM:022A mov ADDRSEL4, #0
ROM:022E mov BUSCON4, #0
ROM:0232 mov DPP0, #4
ROM:0236 ; assume dpp0: 4 (page 0x10000)
ROM:0236 mov DPP1, #5
ROM:023A ; assume dpp1: 5 (page 0x14000)
ROM:023A mov DPP2, #0C0h ; '+'
ROM:023E ; assume dpp2: 0C0h (page 0x300000)
ROM:023E mov DPP3, #3
ROM:0242 mov STKOV, #0F600h
ROM:0246 mov SP, #0F700h
ROM:024A mov STKUN, #0F700h
ROM:024E mov PSW, #0
ROM:0252 extr #2
ROM:0254 movb DP0L, #0
ROM:0258 movb DP0H, #0
ROM:025C extr #2
ROM:025E movb DP1L, #0
ROM:0262 movb DP1H, #0
ROM:0266 extr #1
ROM:0268 movb ODP8, #8
ROM:026C movb P8, #0ECh ; '8'
ROM:0270 movb DP8, #0F7h ; '˜'
ROM:0274 movb rl1, #14h

Autor: Martin Teves (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erst jetzt gelesen, falls noch benötigt:

Das ist ein ST95P04 EEPROM, also SPI

SSDI -> Processor Pin 75 (P3.8)
SSDO Pin 76 (P3.9)
SSCLK Pin 80 (P3.13)

Chipselect an Pin 92 (P4.7)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.