Hi, kann mir jemand sagen was der hintere Chip für einer ist? Ich tippe
auf Flashspeicher aber ich kann mit dem Symbol leider nichts anfangen.
Und unter der Bezeichnung finde ich nichts.
Wie wahrscheinlich ist es den Speicher auslesen und beschreiben zu
können (bzw. den des TI)? Leider kann man nicht mal die Pins bestimmen.
Ich gehe mal von <10% aus.
Vielen Dank.
Mach Mal ordentliche Bilder.
Irgendwo wird ein EMMC , Flash oder SPI NOR sitzen..
Ggf. wird auch alles von SD geladen..
Da dort mit hoher Wahrscheinlichkeit ein Win CE oder Linux läuft wird es
schwer mit einfach auslesen bzw. verändern..
Fileformat, Partitionen usw.
Besser die Konsole finden (UART ggf. auf der 10 pol Stiftleiste? mit dem
Oszi beim booten Mal schauen..) und dann mit dem uboot oder barebox den
Flash ansprechen..
Oder halt Linux , Win CE ggf gibt's ne offene telnet oder ssh..
Der Controller ist ein AM335 der hat kein Flash..
Nur ein minimales ROM wo der First Stage bootloader drin ist.
Da muss irgendwo was sein. SPI Nor kann auch ein SO8 sein...
Ordentliches Bild oben unten wo man Beschriftung sieht würde helfen...
Ahhh, ich habe ihn doch noch gefunden. Das müsste er sein. Ich schaue
mal nach einem Datenblatt.
Mein Gedanke war einfach dass ich den Speicher eines funktionierenden
Gerätes anspinne, Auslese und hierauf schreibe. Da ist der Inhalt und
das Betriebssystem doch irrelevant? Bei identischen Geräten?
Exakt, noy. Auf dem Gerät läuft ein Linux und es gibt sogar eine
10polige nicht bestückte Pinleiste. Die Belegung weiß ich aber nicht und
kenne mich wahrscheinlich für dein Vorgehen (leider) zu wenig damit aus.
Das Foto ganz oben ist zusammen gesetzt um die Beschriftung zu zeigen,
ich wollte deswegen noch 2 riesige Fotos einzeln hochladen. Der Flash
sitzt auf der Rückseite unter den Kondensatoren.
Ja ist RAW Flash..
Also das anfädeln und 1:1 auslesen (weiß gerade nicht Mal ob es so
einfach geht, bin aber auch kein softi...) ist deutlich mehr Arbeit /
schwieriger als mal die Pins beim booten mit einem Logic analyzer oder
Oszi anzuschauen und dann nen ftdi anzutüdeln und ne com aufzumachen..
Ggf. kurz Mal noch Spannung an jedem Pin messen... Nicht das da
irgendwelche hohen Displayspannungen oder so anliegen...
Hat ja sogar Ethernet... Hast du geschaut ob nicht ssh , telnet offen
ist?
Wenn du über die UART dran kommst kannst du sogar die einzelnen
Partitionen über Ethernet oder auf USB sichern..
Hier habe ich das Datenblatt:
https://www.micron.com/-/media/documents/products/data-sheet/nand-flash/20-series/2gb_nand_m29b.pdf
Ich würde ungern etwas dran löten. Die Pin-Abstände sind mir da etwas
winzig, aber darf das Board leider auch nicht ausführen
(Uni-Forschungsbereich). Also war mein Gedanke einen Controller zu
nehmen, ihn zu programmieren, dass er die Blöcke ausliest und dann auf
ein anderes Board 1:1 schreibt. Ich habe Pin-Werkzeug (soetwas
https://www.ecu-cables.de/images/product_images/original_images/bootframe_3.jpg)
zur Verfügung.
noy: Meinst du einen FTDI Chip an den Flasch oder den Controller? Der
wird doch sicher mehrere UARTS haben?
Ja, genau, Ethernet ist onboard. Das Problem ist aber wohl, dass der
Speicher verloren gegangen ist. Der Fehler liegt in fehlerhafter
Software des Herstellers und ist kein Einzelfall. Es bootet bis
irgendwohin, aber nicht ins Linux. Scheinbar liegen relevante
Bootloader-Teile auch auf dem Flasch, denn dieser (Update über USB)
funktioniert auch nicht mehr. Beide Ethernetleds sind permanent an. Und
Ethernet ohne Funktion. Es reagiert nicht mal auf einen Req auf Layer 2.
FTDI an den Controller. Ja hat mehrere UART aber Chancen sind doch hoch
das es auf dem Stecker liegt?
Ansonsten schauen ob es noch was anderes gibt was nach "Debug"
ausschaut. Testpunkte? Anderer kleiner Stecker?
Der AM335 bootet folgendermaßen:
1. Stage Bootloader aus dem Controller ROM läd von der eingestellten
Bootquelle (bootstrap Widerstände) (bei dir wohl Flash) den 2. Stage
Bootloader ins controller interne RAM (sehr klein) das geschieht soviel
ich weiß sogar ohne ECC korrektur. Sofern ich mich erinnern kann sucht
der ROM ganz am Anfang vom Flash nach dem 2.Stage..
Der 2. Stage Bootloader (barebox oder uboot abgespeckt) initialisiert
den externen RAM und lädt die "große" Version der barebox oder uboot
dort hinein ab hier wohl auch mit ECC. Und springt dann dorthin.
Von da an wird dann der Kernel geladen usw.
Wenn da gar nix mehr bootet kann es auch schon 2. Stage Bootloader
sein...
Du willst also mit den Nadeln das Flash "anfahren" und von extern mit
einem entsprechend programmierten und fähigen Controller auslesen? Wie
versorgst du das Flash mit Spannung ohne das der AM335 startet durch
Rückspannung? Also eher ablöten also das Flash oder noch die Reset
Leitung finden und den AM335 in den Reset setzten, Board direkt über den
"offiziellen" Spannungsstecker versorgen und dann auslesen.
Aber bzgl. Controller entsprechend zum auslesen programmieren usw. und
ob dann noch was vernünftiges rauskommt muss dir eher ein Softi helfen
da hab ich weniger Ahnung von...
Alternativ Bootpins des AM335 finden und die Bootquelle wechseln und
eine andere Bootquelle benutzen. USB ? Oder UART ggf. ETH und dann einen
angepassten 2. Stage Bootloader über UART oder andere Bootquelle
schicken..
Schau Mal im Datenblatt vom AM335 nach der Bootreihenfolge und
Bootquellen weiß es nicht mehr auswendig...
No Y. schrieb:> ECC
Das werde ich morgen probieren, Danke.
Und auch vielen Dank schon mal an dich für deine ausführliche Hilfe,
noy.
No Y. schrieb:> Ansonsten schauen ob es noch was anderes gibt was nach "Debug"> ausschaut. Testpunkte? Anderer kleiner Stecker?
Auf dem Board ist noch ein weiterer MSP430 Controller mit 5 unbestückten
Pads. Dessen Funktion kann ich mir aber nicht ausmalen. Auf alle Fälle
werde ich erstmal alle Pins nach TX abklappern.
Und, ja, genau das war meine Idee. Ein Eval Board (STM oder TI) genommen
und darüber den Speciher angesprochen und 1:1 komplett ausgelesen. Und
dann wieder gespeichert. Ob das funktioniert weiß ich nicht genau.
Wahrscheinlich liegt die Seriennummer und MAC etc auf dem Flasch und
vllt führt dieser sogar eine Plausabilitätsprüfung (mittels SN oder
irgendwas anderem vor dem Boot durch. Es betrifft leider nicht nur
dieses Board sondern mittlerweile liegt hier schon ein ganzer Stapel
(Danke, Siemens). Den Flasch müsste ich dann an einer passenden Stelle
(GND ist recht ausgeprät) mit einem Messer trennen oder den Controller
auf Reset ziehen (war mein eigentlicher Gedanke aber BGS sei Dank wird
das wohl schwierig). Aber auf alle Fälle checke ich erstmal deine
nichtzerstörersichen Vorschläge ab.
Deine andere Bootquelle ist natürlich auch ein genialer Vorschlag, wobei
ich befürchte dass dieser zu genial für mich ist. Das wäre ja schon ein
größeres Projekt. Aber wie schon gesagt, vielen Dank erstmal. :)
Die MAC Adresse ist von TI aus schon im AM335.
Wegen Reset würde ich nach einem Spannungs Supervisor suchen da ist
meißt auch der Reset dran. Oder aber schau bei der ethernet phy (ich
hinter der Ethernet Buchse) da kannst du den Pin für Reset aus dem
Datenblatt raussuchen und ggf ist es derselbe Reset wie der am335.
Der Ablauf bei den Embedded Systemen ist häufig identisch:
1st stage Loader läd sich sein Zeugs aus einem NOR-Flash (SPI)
2nd stage Loader (U-Boot) holt sich sein Zeugs aus dem NAND Flash.
hier mal etwas zum "ansehen" (ca 22:00)
https://www.youtube.com/watch?v=DV5S_ZSdK0s
--
Ich knoble an einer ähnlichen Aufgabe wir du:
Philips Glotze, QFU2.1E Board. Tut nix mehr.
Gottseidank gibts ein RS232 Interface. ich hab ein PL2303 dran getüdelt,
und kann mir dann die Bootlogs des Bootloaders ansehen.
Das Nand scheint bei mir zermurkst zu sein, ich bekomme jede Menge
Meldungen der Art
UBI: fixable bit-flip detected at PEB 143
UBI: schedule PEB 143 for scrubbing
und zum Schluss crasht mir das Zeugs beim Anstarten des Linux Kernel:
Kernel panic - not syncing: VFS: Unable to mount root fs on
unknown-block(249,0)
-->
@dominic:
Vielleicht ist es ja was ähnliches bei dir.
Da wäre es zweckmäßig, nach RX-TX Leitungen Ausschau zu halten, und mal
abzuschüffeln mit dem Oszi, ob oder wo da aus TX irgendwelche Meldungen
rausposaunt werden. PL2303 USB Adapter (TTL-Eingang,Ausgang) kostet 3
EUR in der e-Bucht, CuteCom für Linux gibts umsonst (Ansonsten mit
Hyperterm oder so unter Windows). 3 Leitungen anklemmen, fertig (RX, TX,
GND).
Schon bist du nicht mehr ganz so blind.
wegen Flash auslesen: Irgendwo auf dem Board wirds bestimmt ein JTAG
Interface geben, darüber solltest du den Speicher auslesen können.
Braucht 3-4 weitere Leitungen.
Flash in der Größe wird selten über JTAG programmiert dauert viel zu
lange es durch die Chain zu schieben...
Auslesen willst du es doch auf einem i.O. Board und dann clonen auf die
kaputten oder?
Ein kaputtes auslesen bringt ja nix. Würdest ja die Fehler mitclonen.
Ansonsten Debug halt suchen und schauen was dir das "kaputte" um die
Ohren haut.
Wenn da der Bootloader schon nicht geht musst du es neu flashen.. und
dazu musst du ggf. zuerst von einer anderen Bootquelle booten. Sofern
1:1 clonen nicht geht..
Wenn der AM335 nichts bootbares findet gibt er "CCCCCCC...." Über die
Boot UART aus. Im Datenblatt steht von welcher UART gebootet wird und
welche Pins es sind..
Supervisor ggf. einer der sot-23 bei den schaltreglern. Einen PMIC sehr
ich nicht...
Danke auch, Wegstaben. Ich bin erstmal nach Hause. Schaue dann morgen
Abend weiter. Ich habe auch mal deine Typenbezeichnung gegoogelt und es
scheinen wirklich einige Probleme mit diesem Flasch zu haben. Wenn man
allerdings bedenkt, dass es sich bei dir um ein Consumer Produkt handelt
und hierbei um ein Industrieprodukt was für ein Sehrvielvielfaches der
Hardwarekosten verkauft wird, dann ist das schon echt interessant.
Ich überprüfe morgen mal die Pins auf UART, mal schauen wo ich ggf die
Resetleitung finde und dann mal weiter.
Bester/ einfachster Ansatz wäre:
Flash von einem i.O Board sauber ablöten mit Heißluft..
Dann auf einen Universalprogrammer (elnec beeprog2 und Adapter oder
ähnliches...) schnallen der das Flash unterstützt und auslesen.
Danach wieder auflöten.
Anschließend kaputtes ablöten, ebenfalls auf den Programmer schnallen
und programmieren und wieder auflöten.
TSSOP-48 geht ja noch ..
Genau, noy.
Ich schaue erstmal ob ich irgendwelche Highlevel-Meldungen über einen TX
bekommen (das wäre natürlich schon mal etwas), falls das nicht klappt,
dann würde ich ein anderes (baugleiches) Board auslesen, vllt mal drüber
schauen ob es ggf verschlüsselt ist oder irgendwo eine Checksumme steht
und dann versuchen diese auf den defekten Flash zu schreiben. Dann
nochmal lesen und schauen ob vllt ein ein Sektor defekt ist (dann wäre
es das an dieser Stelle für mich, da noch irgendwelche jmp Befehle
reinzubasteln, ist dann wohl doch etwas über das Ziel hinaus geschossen,
sofern es überhaupt möglich ist (ich gehe immer noch von einer
Checksumme über den gesamten Flash mit Einbeziehung der Seriennummer
aus)). Und mit etwas Glück funktioniert es sogar, dann würde ich vllt
versuchen das zu vertextlichen.
Glück hast du, dass es ein AM335 ist..
Sowas wie Secureboot usw. kann der nicht..
Und ich denke die MAC Adresse (woher sollte die Software die
Seriennummer wissen, außer die steht irgendwo in einem eeprom...) wird
nicht abgefragt denn dann müsste die Software ja bei jedem Board nach
dem flashen irgendwie an die MAC des Controllers oder Seriennummer
angepasst werden...(denke mehr Aufwand als nutzen...)
Falls Seriennummer im Flash steht wird ja alles mitgeklont samt
Checksumme (sofern Badblocks im Ziel Flash da nicht Probleme
machen....)
Und verschlüsselt denke ich auch nicht zumindest nicht der 2. Stage
Bootloader.. Der interne ROM Bootloader kann keine Verschlüsselung. Wenn
dann geht es erst bei Barebox/Uboot mit verschlüsselt los... Aber
zumindest in den Bootloader solltest du kommen...
So, ich habe mir die Platine mal genauer angeschaut. Die Pinleiste
scheint in der Tat für's Debugging gedacht zu sein, ist allerinds im
weiteren nicht bestückt :/. ich bekomme also außer 3.3V und GND nicht
viel mehr raus. Eine Resetleitung ist auch da, allerdings auch nicht
vollständig bestückt, aber sie führt zum SVS. Das ist ein TPS386000 und
irgendwie sind Pinleiste und SVS mit einem SOT23 Bauteil mit der
aufschrift M52 vebunden. Ich dachte erst an einen Transistor, aber das
macht von der Beschaltung keinne Sinn.
Was mich allerdings sehr iritiert ist, dass der SVS mit 5V läuft. Ich
finde aktuell echt keine Resetverbindung zum Processor. Ich wünsche mir
einfach TTL-Bestückung wieder zurück.
Falls du das noch liest, noy, was machst du beruflich? Entwickelst du
solche Platinen? Falls ja, wie lange brauch man denn für das Schematic
und das Layout eines solchen Boards? Ich gehe von 4-6 Layern aus.
Ja ich lese noch mit, will doch wissen ob du weiter kommst...
Was meinst du mit "weiteren nicht bestückt"? vVerfolge mal die
"unklaren" Pins im Layout ggf. sind einfach nur Serienwiderstände nicht
bestückt worden um es nicht "zu einfach" zu machen.
Der TPS386000 ist doch ein Supervisor IC. Schau doch mal ob wie gesagt
ggf. eine der Leitungen auch an das Reset der Ethernet Phy geht bringt
ggf. zusätzlich klarheit. Oder aber der MAX17075 neben dem Flash aht
auch einen Reset ggf. hängt der auch an einem "globalen" Reset..
Den rest der ICs kann ich auf den Bildern nicht entziffern. Was ist da
noch so an "größeren" ICs drauf? Z.B. der neben dem Goldcap? Oder die
paar auf der Unterseite?
M52 auf einem SOT-23-3 könnte ein ADM810RARTZ sein. Könnte also passen.
5V an SVS ist doch ok. Ist ja die Versorgung vom IC aber hat ja mehrere
Sense und die Ausgänge sind Open Drain sollte also auch passen mit Reset
Leitung.
Ist das ein Display Anschluss das Flachbandkabel?
Bekommst du die Belegung über den Display Typ / Datenblatt raus?
Beim AM335 sind die RGB TTL Pins fürs Display nämlich auch die Bootstrap
Pins ;-)
Da kannst du rausfinden was du betüdeln musst um die Bootquelle zu
ändern...
Beruflich bin ich Hardware Entwickler für kundenspezifische
Entwicklungen bei der Phytec ;-)
Also ja, ich entwickel ähnliche Platinen. Habe aber den Vorteil, dass
ich meißt keine Flatdesigns sondern unsere SOMs einsetzten kann. Aber
die Beschaltung von denen kenne ich halt auch...
Wenn man eine ordentliche Bauteillib (alle Bauteile bereits angelegt
usw.) und etwas Erfahrung / ggf. erprobte Schaltungsteile welche
wiederverwendet werden können (Schaltregler usw.) Und natürlich den
Prozessor mit seinen Eigenheiten usw. gut kennt, schafft man einen
Schaltplan für eine solche Platine wie du da zeigst in 1-1,5 Wochen.
Schon mit etwas Puffer eingeplant aber ich weiß jetzt nicht was Siemens
da noch alles vorgesehen, aber nicht bestückt hat.
Das Layout dauert wohl auch 1-2 Wochen, manches auf der Platine geht
schnell anderes dauert länger (DDR3 Anbindung) hängt aber auch vom
genutzten Programm ab. Wir nutzen Mentor DxDesigner und Expedition PCB
da kann man sehr viel einstellen (Impedanz, Differential Pairs,
Längenabgleiche, Routing Reihenfolge usw.) was alles beim Layouten hilft
und die Zeit verkürzt. Und unsere Layouter machen halt nichts anderes
als Layouts seit zig Jahren...