Hallo Leute, ich versuche gerade mit einen Siemens C166(!kein C167) im BSL zu schicken und darüber Befehle auszuführen... Das Datenblatt ergibt um in den BSL zu kommen, folgendes zu machen: "The SAB 80C166 enters BSL mode, when ALE is sampled high at the end of a hardware reset andif NMI becomes active directly after the end of the internal reset sequence." Verstehe ich das richtig... ALE auf HIGH und dann reset? Ist der dann im BSL? Außerdem nutze ich KEIL uVision und bekomme bei einem BSL assembler Code eine 113Byte große H86 Datei... Wie wird diese 32Byte groß für den BSL Mode? Vielleicht hat ja jemand noch Erfahrungen... Ich würds mir wünschen :D Lg und Danke!
mm lang ist es her. Deshalb alles nur aus der Erinnerung. Nach dem Aktivieren des BSL modes kannst du bis zu 32 Bytes schicken, die ein gültiges Prorgram darstellen müssen. Die Schnittstelle wird mit 9600 8N1 bedient. Wie so ein Program aussehen muss, ist in irgend einer Appnote beschrieben. Danach wird dann regulärer Code übertragen. SecondStageLoader Natürlich kann das kein IntelHex (H86). Du musst das schon binär schicken. Ich glaube mich auch zu erinnern, dass der BSL eine autobaud Funktion hatte. Wie man den BSL aktivert, hab ich vergessen.
Ja danke erstmal für deine Antwort. Autobaud ist richtig, aber ich bekomme keiner richtige Verbindung hin. Laut Datenblatt: "After entering BSL mode the SAB 80C166 scans the RXD0 line to receive a zero byte, i.e. one start bit, eight ‘0’ data bits and one stop bit. From the duration of this zero byte it calculates the corresponding baudrate factor with respect to the current CPU clock and initializes ASC0 accordingly." Nun verstehe ich nicht was ich genau dem Ding per Seriel schicken soll? Einfach 0? Ich habe jedenfalls nie eine Antwort mit "The SAB 80C166 returns the value <55H>." bekommen. Nachdem Init will er ein 32Byte Programm richtig... Vielleicht bekomme ich ihn auch nur nicht im Boot Mode, keine Ahnung -.-
So langsam kommen wieder ein paar Bruchstücke... Es ist bei mir ziemlich genau 20 Jahre her... Über die Steuerleitungen des Comports haben wir ALE und RESET bedient. Danach die 0 gesendet und auf die Antwort gewartet. Wir haben auf diese Weise dann die Flashs auf dem Board programmiert. Wenn du also keine Antwort bekommst würde ich es einfach mit einer kleineren Baudrate noch mal probieren. Es gab aber, meine ich, auch einen Weg den BSL mit bootpin Optionen zu sperren.
Fabian E. schrieb: > Nun verstehe ich nicht was ich genau dem Ding per Seriel schicken soll? > Einfach 0? Ich habe jedenfalls nie eine Antwort mit "The SAB 80C166 > returns the value <55H>." bekommen. Binär 0x00. Nicht ASCII "0", das wäre 0x30.
Okay, ich hole mir dann mal die ALE Leitung und RESET raus. Um genau zu sein ist der C166 in einem Bosch Steuergerät und sollte keine Boot Loader sperre haben. Reicht es auch ALE High zu haben und dann einfach Strom an? Oder benötige ich extra RESET? Danke für die Infos
Bei einem Steuergerät würde ich darauf wetten dass BSL vernagelt ist. Bosch wird Updates sicher nicht per BSL einspielen. BSL ist mehr was für die Produktion. Das sollte auch mit PwrOn reset gehen.
Soul E. schrieb: > Fabian E. schrieb: > >> Nun verstehe ich nicht was ich genau dem Ding per Seriel schicken soll? >> Einfach 0? Ich habe jedenfalls nie eine Antwort mit "The SAB 80C166 >> returns the value <55H>." bekommen. > > Binär 0x00. Nicht ASCII "0", das wäre 0x30. Ja okay, gibts ein Terminal indem ich direkt Hex schicken kann? Putty anscheinend ja nicht. Sonst muss ich mal ein kleines Programm für diesen Zweck schreiben.
Thomas Z. schrieb: > Bei einem Steuergerät würde ich darauf wetten dass BSL vernagelt ist. > Bosch wird Updates sicher nicht per BSL einspielen. BSL ist mehr was für > die Produktion. > Das sollte auch mit PwrOn reset gehen. Laut Forum für Flashen von Steuergeräten, soll die möglich sein. Normal wird der Flash per KWP2000 programmiert. Wenn das Steuergerät jedoch nicht erreichbar ist, sollte BSL funktionieren. Wollte per BSL den internen ROM vom C166 auslesen. Ist dies Schwer?
Fabian E. schrieb: > Ist dies Schwer? nein ist es nicht, allerdings sind die Dinger doch Romless oder täusche ich mich da?
Thomas Z. schrieb: > Fabian E. schrieb: >> Ist dies Schwer? > > nein ist es nicht, allerdings sind die Dinger doch Romless oder täusche > ich mich da? Die Dinger gibts ROMLess, aber auch mit 32kByte ROM. In den SG wurde wohl immer mit 32kbytes ROM verbaut.
Fabian E. schrieb: > Ja okay, gibts ein Terminal indem ich direkt Hex schicken kann? > Putty anscheinend ja nicht. HTerm kann das. Oder Coolterm. Oder oder oder. Viele Terminalemulatoren können auch Textdateien senden und/oder lassen sich skripten oder haben eine eigene Skriptsprache eingebaut. Dann gibt es von Infineon noch ein Flashtool [1], welches über einen Bootstrap-Lader ein Monitorprogramm in den RAM geladen hat, welches Flash lesen und schreiben konnte. Hatte ich mal vor langer Zeit für die XC2000-Serie verwendet... mfg mf PS. [1] https://www.infineon.com/dgdl/Infineon-Memtool-DevelopmentTools-v04_90-EN.exe?fileId=5546d462518ffd8501525537c197206f
:
Bearbeitet durch User
Fabian E. schrieb: > Die Dinger gibts ROMLess, aber auch mit 32kByte ROM OK c166 mit Rom sind mir bis jetzt noch nicht untergekommen. Ob man den Rom Inhalt so einfach lesen kann, kann ich nicht sagen. Es ist durchaus möglich, dass sowas gesperrt ist. Siemens hatte das Flashzeitalter irgendwie verpennt.
Ich hab noch was gefunden, was dir weiterhelfen könnte.Die relavante Funktion ist "CVICALLBACK FB", hier siehst du, wie 32 Bytes über die serielle geschickt werden, gefolgt von einem "Hexloader-Programm", das darauf folgende Bytes in das externe Flash klopft. Eventuell kann ich auch noch das Hexloader Programm finden, falls du es brauchst. Grüsse
geb schrieb: > Ich hab noch was gefunden, was dir weiterhelfen könnte.Die relavante > Funktion ist "CVICALLBACK FB", hier siehst du, wie 32 Bytes über die > serielle geschickt werden, gefolgt von einem "Hexloader-Programm", das > darauf folgende Bytes in das externe Flash klopft. > Eventuell kann ich auch noch das Hexloader Programm finden, falls du es > brauchst. > Grüsse Vielen dank! Jedoch bekomme ich nicht hin das Ding in BSL zu bekommen. Ich habe ALE immer High und auch !NMI auf HIGH. "when ALE is sampled high at the end of a hardware reset", "NMI becomes active directly after the end of the internal reset sequence" Aber ich bekomme keine 55H zurück. Kann mir jemand noch sagen was alles zutreffen muss? Muss ALE erst HIGH sein wenn Reset auf HIGH geht? Muss ich irgendein Timing beachten?
Es ist schwer dir zu helfen wenn wir nicht wissen wie dein Setup aussieht... Was für HW benutzt du? Welches OS? Welches Terminal Prog? Was für ein Comport Adapter? Was passiert im Terminal wenn du RX und TX verbindest? Bekommst du im Terminal dann ein Echo? Welche Baudrate und Settings? Steht das Terminal auf binär?
Was ich mich noch erinnern kann, muss Datenleitung D4 beim Reset auf Masse gezogen werden. Irgendwo hab ich noch einen Schaltplan, aber leider nicht auf diesem Rechner. Falls das für dich wirklich wichtig ist, könnte ich noch meinen alten Rechner hochfahren. Wenn man so drüber nachdenkt... wie kompliziert in der Handhabung waren diese Prozessoren damals. Heute eingebaute Bootloader über seriell, USB, SPI,I2C... Grüsse
Thomas Z. schrieb: > Es ist schwer dir zu helfen wenn wir nicht wissen wie dein Setup > aussieht... > > Was für HW benutzt du? Welches OS? Welches Terminal Prog? Was für ein > Comport Adapter? Was passiert im Terminal wenn du RX und TX verbindest? > Bekommst du im Terminal dann ein Echo? Welche Baudrate und Settings? > Steht das Terminal auf binär? Also... Ich benutze ein CP2102 Seriell Adapter, dieser bekommt auch Echo wenn RX/TX gebrückt sind. Der Prozessor schickt auch irgendwas per Seriell wenn man RESET auf HIGH setzt, nur definitiv nicht der BSL. Als Terminal benutze ich HTerm... Als Baud habe ich alles zwischen 1200-115200 probiert. Das Terminal steht auf HEX und sendet 0x00.
geb schrieb: > Was ich mich noch erinnern kann, muss Datenleitung D4 beim Reset auf > Masse gezogen werden. > Irgendwo hab ich noch einen Schaltplan, aber leider nicht auf diesem > Rechner. > Falls das für dich wirklich wichtig ist, könnte ich noch meinen alten > Rechner hochfahren. > Wenn man so drüber nachdenkt... wie kompliziert in der Handhabung waren > diese Prozessoren damals. Heute eingebaute Bootloader über seriell, USB, > SPI,I2C... > Grüsse Ja heute ist das deutlich einfacher, auch von der Dokumentation Online von vielen Bastlern die darüber berichten. Es wäre echt Super wenn du nochmal nachschauen könntest, denn ich stehe voll aufm Schlauch. Kann am Ende auch sein das ich die CPU schon getoastet habe. Neue Steuergeräte sind schon unterwegs. Jede Antwort von Euch hilft mir ungemein. Ist auch echt interessant mit alten Dingern noch was zu machen :D
Ich hab noch einen ausgedruckten Schaltplan gefunden, D4 auf Masse bei
Reset ist richtig, ALE und NMI wurde da nicht benutzt, bzw. war gar
nicht angeschlossen. Allerdings handelte es sich um einen C161.
>>Ist auch echt interessant mit alten Dingern noch was zu machen
weiss nicht, bin schon älter und nicht masochistisch veranlagt. Aber wer
sich selbst geisseln will...
Grüsse
geb schrieb: > Allerdings handelte es sich um einen C161. Der gehört aber zur C167-Familie! Der C166 war anders.
Ja, definitiv, aber war etwas abgespeckt und daher billig.
Ich habe Mal ein Bild vom dem Prozessor angehangen. Vielleicht ist es ja ein c161? Tuner Forum sagen das man D4 auf Masse setzen muss. Beim c166 wars aber wieder anders und auch beim c167... Ist sehr unübersichtlich für mich der damit nun was macht :D
Das sieht nicht nach einem C167er aus, die sind meist quadratisch. Ich habe hier das "Handbuch des 80C166" von Siemens, da ist kein BSL darin erwähnt. Im C167-Handbuch ist allerdings wirklich die Signatur 0x55 für den C166 angegeben. Ev. hatten den BSL nur spätere Typen mit EPROM o.ä.? Beim C167 muss P0L.4 mit Widerstand auf Masse gezogen werden, das wird dir aber auch nicht viel helfen.
Sieht weder nach einem C167 noch C161 aus, vlt. irgend ein maskenprogrammiertes Spezial-Kundenteil.
Ich habe eine PDF von Siemens "SAB 80C166/83C166". Darin ist der BSL beschrieben und auch das Pinout passt 1:1 auf meinen Chip.
Lt einem PDF von Phytec ist BSL erst ab einer bestimmten Maskenrevision beim C166 verfügbar. Es ist durchaus möglich, dass das bei der Boschvariante einfach nicht geht. https://www.phytec.eu/fileadmin/user_upload/downloads/Manuals/L071E.pdf
Das Bild ist ein custom chip. Könnte natürlich ein festprogrammierter C166 sein (MASK-ROM). Der BSL im C166 hatte irgendeinen Fehler. Kommt aber erst später ins Spiel. Er antwortet auch so. Du kannst ja die unterschiedlichen Aktivierungen des BSL der C16x Familie ausprobieren. Vielleicht ist es ein 161, 163, 164, 165 oder doch 167? Die hätten auch flash onboard.
661C schrieb: > Fabian E. schrieb: >> das Pinout passt 1:1 auf meinen >> Chip > > Gibt es externen Speicher? Ja, es war ein AM29F400. Die Datei ist aber zur ersten Hälfte nur mit 00 voll. Müsste dann nicht theoretisch eine Sprunganweisung am Anfang sein? Zumindest wenn er theoretisch ROMLess wäre. Kann natürlich sein das BSL deaktiviert ist und nur ein Bootloader auf dem Prozessor liegt. Man kann auch ohne Flash das Steuergerät mit einem OBD2 programmier Kabel erreichen, das heißt das ein Code auf jeden Fall drauf ist und dieser nicht ROMLess ist.
Fabian E. schrieb: > Ja, es war ein AM29F400. > Die Datei ist aber zur ersten Hälfte nur mit 00 voll. Welche Datei??? Fabian E. schrieb: > Müsste dann nicht > theoretisch eine Sprunganweisung am Anfang sein? Wenn er MASK-ROM hat, kann da irgendetwas drin stehen, irgendwelche Parameter. Fabian E. schrieb: > heißt das ein Code auf jeden Fall drauf ist und > dieser nicht ROMLess ist Wie aktivierst du den BSL, Power On oder nur Reset? Ich würde immer den Reset Pin wählen, wenn die Versorgung stabil anliegt.
Fabian E. schrieb: > Ja, es war ein AM29F400. > Die Datei ist aber zur ersten Hälfte nur mit 00 voll. Müsste dann nicht > theoretisch eine Sprunganweisung am Anfang sein? Zumindest wenn er > theoretisch ROMLess wäre. Weiter oben schreibst du, dass dir das Handbuch vorliegt. Die Buskonfiguration bei diesen Chips ist sehr vielfältig, aber durch Nachmessen leicht bestimmbar. Also, ran mit dem Multimeter! Dann weißt duch auch was Anfang des Speichers ist.
661C schrieb: > > Welche Datei??? > Ich habe das Steuergerät zuvor per OBD Ausgelesen und die 512kb Datei gespeichert. Außerdem habe ich per Arduino den Flash ebenfalls ausgelesen und die Dateien stimmen 1:1. > Wenn er MASK-ROM hat, kann da irgendetwas drin stehen, irgendwelche > Parameter. > So wird es dann sein. > Wie aktivierst du den BSL, Power On oder nur Reset? Ich würde immer den > Reset Pin wählen, wenn die Versorgung stabil anliegt. Ich setze ALE auf HIGH und dann setze ich die Schaltung unter Spannung. Ich habe es auch immer mit Reset-Pin versucht. Die Stromaufnahme steigt immer um 7mA wenn Reset LOW, bzw !RSTIN auf HIGH ist. Der Prozessor sendet immer über TXD0 3 Byte wenn ich reset von low auf high setze. Der setzt sich dann wohl nicht in BSL sondern lädt normal das Programm oder sowas.
Nun im Datenblatt steht dass auch NMI am Ende des Resets anstehen muss. Versuch das mal. Baudrate <9600. Edit: Bitte vorher nachmessen ob der NMI nicht hart auf VCC hängt.
:
Bearbeitet durch User
Das habe ich auch schon Probiert. Ich habe mit ALE, NMI und Reset in jeder Konstruktion schon durchprobiert. Nun liegt mir auch die komplette Funktionsbeschreibung von der Steuergerätenserie vor... Im EDC15C_Siemens_PDF.pdf ist die Bezeichnung des genauen PDFs genannt. (http://www.diakom.ru/el/elfirms/datashts/Infineon/m167.pdf) Darin ist beschrieben das der BSL per "pin P0L.4 is sampled low" aktiviert wäre. Das wäre ja ein C167. Jedoch steht in der Flash Routine(EDC15C Flash.pdf) per KWP2000(OBD), dass es ein 83C166 ist(WTF?). Also das wird so wirr. Was noch interessant ist, ist dieser Satz: "Aufgrund des Gehäuse-Typs des eingesetzten FLASH-Bausteins wird die FLASH-Programmierung über KWP2000 auch im RB-Werk bei der SG-Fertigung genutzt". Das heißt, dass der C166 schon ein fertiges ROM drauf hat und vlt kein BSL da ist. Ich bekomme heute noch paar Steuergeräte zum testen geliefert. Ich werde mal sehen welch C166/167 verbaut ist. Vielleicht haben die BSL...
Fabian E. schrieb: > Ich setze ALE auf HIGH und dann setze ich die Schaltung unter Spannung. > Ich habe es auch immer mit Reset-Pin versucht. Die Stromaufnahme steigt > immer um 7mA wenn Reset LOW, bzw !RSTIN auf HIGH ist. > > Der Prozessor sendet immer über TXD0 3 Byte wenn ich reset von low auf > high setze. Der setzt sich dann wohl nicht in BSL sondern lädt normal > das Programm oder sowas. Was mit jetzt noch einfällt, wäre ihn ROMLESS zu starten. Also zusätzlich BUSCON oder den entsprechenden Pin beschalten und dann das BSL Procedere.
Fabian E. schrieb: > Das heißt, dass > der C166 schon ein fertiges ROM drauf hat und vlt kein BSL da ist. Der BSL wird schon drin sein. :-) In der Doku steht doch alles drin: Das Ding ist ein c166 mit MASK-ROM. Im MASK-ROM sind grundsätzliche Funktionen enthalten (startup). Zur Anpassung besonderer flash Bausteine wird Code ins RAM geladen und dort 'exiku...' (einfach geil die Ausdruckweise). Das Ding ist ein Neumännchen. Der kann Code im ganzen Speicherbereich ausführen. Vermutlich wird immer aus dem MASK-ROM gebootet. Die Grundfunktionen zur Kommunikation sind dort auch enthalten. Erweiterungen sind im externen ROM/flash. Für welches Auto? Wieviel PS gibt es jetzt, oder nur Tacho zurück?
661C schrieb: > Was mit jetzt noch einfällt, wäre ihn ROMLESS zu starten. Also > zusätzlich BUSCON oder den entsprechenden Pin beschalten und dann das > BSL Procedere. Ja ich versuche mich weiter dran. Aber Danke für diesen Tipp! 661C schrieb: > Die > Grundfunktionen zur Kommunikation sind dort auch enthalten. > Erweiterungen sind im externen ROM/flash. Ja das macht auch Sinn. Denn über KWP2000 kann er ja noch den ausgelöteten Flash 'lesen' lach. 661C schrieb: > Für welches Auto? Wieviel PS gibt es jetzt, oder nur Tacho zurück? Ist ein W638, oder auch Vito als 108CDI mit 80PS gewesen. Hatte erst ein 112CDI(122PS) Steuergerät bekommen und danach habe ich den Flash gezogen und nun sinds ca 160PS, aber noch mehr Pferde kommen noch. Ich weiß nichtmal ob der Techo aufm Steuergerät gespeichert ist... Wird zumindest nicht über CAN mit dem KI ausgetauscht. Ich möchte eigentlich dem Steuergerät die Funktion von MAP Switching hinzufügen -> Eco, Normal und Gummitod. Generel mal diese alten Mikrocontroller verstehen.
Moin, eines der Steuergeräte hat den C167 und siehe da, den bestimmten Pin auf LOW und direkt eine Antwort vom BSL. Nun stellt sich für mich die Frage wie ein 32byte ASM Code aussehen muss? Dieser soll mir nur das Rechnerinterne ROM auslesen. BZW halt von Speicheraddresse ... bis Speicheradresse ... Ich habe Keil als Compiler.
Fabian E. schrieb: > Ich habe Keil als Compiler. Den Compiler kannst du erstmal in der Schublade lassen, es sei denn du möchtest auf diesem Weg die Assembler-Anweisungen einfügen. Ich habe mich damit mal eine zeitlang beruflich beschäftigt, da kannst du dich auf eine intensive Lernkurve einstellen. Schritt 1 ist C16x Assembler lernen, segmentiertes Speicherkonzept verstehen etc. Dann UART konfigurieren, ein Konzept zur Übertragung erstellen und die PC Gegenstelle programmieren.
Ach ja, und noch ein Nachladekonzept für den 2nd Stage Bootloader, weil man in den ersten 32 Byte kaum etwas anderes machen kann als den 2nd Stage nachzuladen. Das PC Programm muss das natürlich unterstützen und den 2nd Stage „bereitstellen“, bevor die gewünschte Aktion ausgeführt wird.
Die Adressdekodierung musst Du auch noch herausfinden, es ist nicht gesagt, dass Du alle gewünschten Bereiche linear vorfindest.
Hier ist eine Appnote die sich mit BSL beschäftigt. http://alt.ife.tugraz.at/datashts/Siemens/ap160701.pdf
Ja habe ich schon gesehen. Ich habe den 67PRELD1.ASM jetzt zumindest kompiliert bekommen aber nun ist die h86 Datei 137Bytes groß, zu groß für den BSL. Ich weiß auch nicht weiter was ich in uVision einstellen soll. Außerdem kennt er nicht MOVB und JMPA. Erste versuche mit ASM, schwierig :D
Naja solange dir der Unterschied zwischen InteHex .h86 und binär nicht klar ist wird es schwierig. Du musst die 32 Bytes in binär schicken. Ein Intel Hex ist da suboptimal. Das hatte ich aber schon ganz oben geschrieben. Schau halt mal ins .lst File oder poste das.
Hallo, ich habe das gleiche Problem, ein Steuergerät von Continental mit besagtem Chip C161CS32RF. Ein Wasserschaden hat einige PINs beschädigt. Was ist bei deinen Experimenten herausgekommen? Ich müsste aus einem Chip ein Dump auf einen anderen Chip übertragen.
Nein, ich habe nichts mehr in dem Bereich gemacht. Der Chip hat wohl kein BSL Boot Loader... Zumindest hat es nie funktioniert. Vielleicht forsche ich nochmal weiter dran rum, aber im Moment nicht. LG
Wenn es darum geht, etwas auszulesen, könnte eine ältere Version MemTool helfen. Dann braucht man sich nicht mit den Innereien des UrLoaders zu beschäftigen. Allerdings muss man es hinbekommen, dass der Prozessor im Bootstraploader-Modus startet und auf die 0h mit seinem Byte antwortet! Memtool für ältere Prozessoren C16x gibt es hier (siehe Link im letzten Beitrag): Beitrag "Suche kompatibles Memtool für C164CI"
Nachtrag... Also ein C167 konnte ich Problemlos im BSL betreiben, der Antwortet auch mit 0h... Der C166 mit dem ich eigentlich am Kämpfen war, klappt das ganze bis heue nicht...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.