Firmware kopiéeren AT91SAM7X64 microcontroller

Hallo allemaal,

Heb weer eens een software gerelateerde vraag waarbij ik wat hulp kan gebruiken. Ik heb van een bekende een ElectroVoice audio processor op de werkbank staan. Tijdens een firmware update via zijn PC (via de USB poort) is er iets fout gegaan en het apparaat start nu niet meer op. Doet helemaal niets meer. Het apparaat is voorzien van een Atmel AT91SAM7S64 microcontroller. Deze stuurt voor diagnose ook een paar status LED's aan, maar ook deze doen helemaal niets meer. De firmware zal dus corrupt zijn geraakt. Het apparaat is ook niet meer benaderbaar via de USB aansluiting.

Nu heeft het mainboard waar deze processor op zit een micro JTAG aansluiting. Dit is een 2x 10 polige pinheader. Volgens het schema van het apparaat komt de pinout overeen met die van een aantal standaard USB programmers met ook zo'n 2x 10 polige pinheader. ZO'n programmer koop je al voor 15 a 20 euro, dus dat is de investering nog wel waard.

De vraag is alleen waar ik een firmware file ga krijgen. De software om hem te updaten lijkt deze niet te bevatten, misschien word deze online ergens vandaan getrokken.

Nu heb ik zelf zo'nzelfde werkende unit staan. Nu had ik het idee om uit mijn unit een kopie te maken van de firmware, en deze in de defecte proberen te schieten.

Kan iemand mij vertellen hoe ik dit kan aanpakken en wat ik hier voor nodig heb? En of dit überhaupt mogelijk is? Alvast mijn dank!

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!
Arco

Special Member

De bootloader zal beschadigd zijn. Het je al bij Electro-voice gevraagd of die beschikbaar is?

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Hoi Arco,

Ik heb dit voorgelegd bij EV. Heb echter helaas de ervaring dat dit soort vragen simpelweg niet opgepakt word bij de importeur.

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!
bprosman

Golden Member

Je zegt firmware update. Dan heb je dus de firmware ? Kun je die dan niet met een Atmel (JTAG) programmer er zo inblazen zonder bootloader ?
Volgens mij staat er in V&A een te koop

[Bericht gewijzigd door bprosman op donderdag 30 april 2020 12:56:44 (13%)

De jongere generatie loopt veel te vaak zijn PIC achterna.
Arco

Special Member

Firmware update programma's communiceren met de bootloader. Geen bootloader, geen firmware... ;)
Zelfs al zou je de losse firmwarefile hebben, dan werkt die vaak niet alleen, omdat de downloadadressen niet kloppen. (o.a. de resetvector)

[Bericht gewijzigd door Arco op donderdag 30 april 2020 12:53:54 (42%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
elmowww

Golden Member

Kleine kans...

Die processoren zijn uitgerust met lees- en/of schrijfbeveiliging als ze er een béétje overna gedacht hebben. Dat is zo simpel als het zetten van een bitje en jij kan er geen meer uitlezen.

De code hoort bij het ontwerp en wil een fabrikant (begrijpelijkerwijs) beschermen. Als deze eenmaal op straat ligt is de beveiliging weg.

Ik geef je heel weinig kans om hem zelf uit te lezen (hoewel het soms nog wel lukt ook).

Betere optie lijkt mij om hem ter reparatie op te sturen.

PA0EJE - www.eje-electronics.nl - e.jongerius[aapje]eje-electronics.nl - EJE Electronics - Elektronica/firmware ontwikkeling
bprosman

Golden Member

Firmware update programma's communiceren met de bootloader. Geen bootloader, geen firmware... ;)
Zelfs al zou je de losse firmwarefile hebben, dan werkt die vaak niet alleen, omdat de downloadadressen niet kloppen. (o.a. de resetvector)

Niet helemaal mee eens, een Arduino kun je ook met een gewone ICSP programmer programmer en de bootloader bypassen.
En uitlezen hoeft niet, je kunt de processor altijd wissen en overschrijven zelfs al staan de security fuses aan.

Overigens zijn er van die Segger ook Chinese clones.

De jongere generatie loopt veel te vaak zijn PIC achterna.
Arco

Special Member

Dat kan, maar dan moet de firmware daar wel voor gemaakt zijn... (of het werkt is dus een gok)
Wat ik hier en daar lees is dat die chip een interne bootloader heeft (of dat klopt weet ik niet)
Als er problemen zijn zou je de TST pin 10 sec hoog moeten maken en daarna weer laag.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Zoals ik al dacht lijkt het grootste probleem het verkrijgen van de firmware. Heb zojuist mijn werkende processor via de USB aangesloten, de software waarmee de unit word bediend/geupdated gestart en het firmware update proces gestart met verbroken internet connectie. Het updaten werkt dan ook prima, het lijkt er dus op dat de firmware ergens aan boord van dit programma zit. Ik heb alle mappen van dit programma al doorgespit, maar kom niets tegen wat op een firmware file lijkt. Alleen een bestand met file extensie .RSC met een grootte van 1,58MB. Dit lijkt me te groot voor een firmware file?

Overigens, normaal gesproken als bij deze processors de firmware in de soep loopt start hij niet op, maar krijgt men een melding "bootloader 1.2.0" in het display te lezen. Die melding krijg ik nu ook niet

Edit: Gisterenavond nog even verder gegaan met dit avontuur. Voor ik met de software aan de slag ga wilde ik er graag zeker van zijn dat de hardware OK was, geen losse contacten enzo. Stuitte er per toeval op dat pin 18 (VDDIO) van het AT91SAM IC geen 3.3V meer kreeg door een gare doormetalisering. Dit gerepareerd, maar nog steeds start de processor niet op, geen status LED's etc.
Windows lijkt de processor nu wel te detecteren via de USB, maar geeft aan dat de USB poort niet goed werk (geel uitroeptekentje in apparaatbeheer). Ik heb met de scope gecheckt of het kristal werkt, maar deze doet dat niet. De scoop geeft aan dat hij op +/- 1MHz loopt, maar betwijfel of deze meting klopt. Kristal zou 18.432 MHz moeten zijn.
Pinnen TST, erase en JTAGSEL zijn allemaal laag. Pin NRST is hoog (3,3V).
Kan het zijn dat het IC simpelweg defect is?

[Bericht gewijzigd door DJohnny op vrijdag 1 mei 2020 11:14:27 (35%)

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!
Arco

Special Member

Heb je het 10 sec hoog maken van TST al geprobeerd? (zit wellicht een jumper voor in?)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

@Arco: Vergeten te vermelden, dit had ik inderdaad ook nog geprobeerd maar maakt geen enkel verschil.

Edit: Erase pin doet ook niets. Enige leven wat er nu in zit is dat de USB poort gedetecteerd word, zij het onjuiste wijze.

Bekende van mij heeft een J-Link EDU, welke ik mag lenen. Misschien dat ik daar iets mee kan.

[Bericht gewijzigd door DJohnny op vrijdag 1 mei 2020 12:01:06 (18%)

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!

het correct initialiseren van de usb peripheral (of hij HID, CDC of whatever moet doen) is doorgaans functionaliteit van de applicatie firmware. En ik verwacht hier van de bootloader.
Op zich zou je verwachten dat de bootloader nooit corrupt raakt, omdat bij ene mislukte firmware update dan inderdaad je product in de vuilbak kan.
Toch kan er in sommige gevallen voor gekozen worden om applicatie met bootloader te combineren.
Uitlezen van een bestaande unit zal niet werken.
Een beetje bedrijf zorgt wel dat de firmware die ze openbaren voor updates enkel draait op hun geproduceerde hardware.

Ik heb wel eens een applicatie gemaakt waarvan ik de hardware leverde. Diegene kreeg mijn hardware met een custom bootloader. (niet meer dan een standaard bootloader waar is een secret waarde op een gedefinieerd adres heb gezet.
Je kan de applicatie gewoon op dat adres laten kijken of die waarde er staan. Zo ja, runnen maar zo niet, pech gehad)

Als de firmware dan in een print zonder bootloader programmeerd, dan zal hij op dat adres 0xFF lezen en dat matched niet.

Vandaag de dag gata het nog een stap verder met encrypted firmware updated en secure boot etc, maar dat zal daar dnek ik nog niet in zitten wellicht. Ik zou het toch bij de fabrikant overleggen

Arco

Special Member

Normaal gesproken zou een bootloader nooit beschadigd mogen worden, maar het kan in sommige gevallen toch gebeuren.
Sommige apparaten hebben ook de mogelijkheid hun eigen bootloader te updaten. Als bij dat updaten een 'hik' voorkomt kan het einde oefening zijn.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Een beetje ontwikkelaar maakt een aparte bootloader waar je vanaf blijft en laadt alleen de applicatie. Dan kun je hem niet bricken. Mag ik dit hobbyistenbrol noemen?

Zelfs bootloaders kun je veilig maken door twee bootloaders te laden met een jump vanaf adres 0. Als de tweede veilig geladen is verander je pas de jump, 2 of 4 bytes, dat risico is erg klein. Wel moet je flash gebruiken waarmee dit kan.

Iedereen bedankt voor zijn of haar reactie!

Wat ik mezelf afvraag:
kan een corrupte bootloader ervoor zorgen dat de USB interface niet correct word herkend door Windows? De exacte melding welke windows bij apparaatbeheer geeft is "Code 43, verzoek voor apparaatdescriptor is mislukt"

En: Ik begrijp uit posts op Google dat deze chips worden geleverd met een standaard bootloader waarbij de USB beschikbaar word gesteld? Voor het geval dat de fabrikant een eigen bootloader heeft gebruikt, zou het mogelijk zijn om de originele Mircrochip bootloader in te flashen via de J-tag, even aangenomen dat deze nog werkt?

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!
Shiptronic

Overleden

Proberen? Stuk is het nu toch al.

Wie de vraag stelt, zal met het antwoord moeten leren leven.
Arco

Special Member

De USB interface zit op de controller zelf. Dus als die niet 'loopt', werkt de USB ook niet.
De kans een andere bootloader werkt met dat update programma is zo goed als nul: bijna alle bootloaders zijn verschillend.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

@Shiptronic:

Ik moet even wachten tot de J-Link in mijn bezig is.

@Arco:
De reden dat ik de originele bootloader zou willen flashen is om te kijken of in elk geval de chip nog werkt en/of de USB aansluiting tot leven komt. Dat die doormetalisering het op heeft gegeven is op zijn minst verdacht te noemen. Dan kan ik vanuit daar weer verder borduren.

[Bericht gewijzigd door DJohnny op vrijdag 1 mei 2020 14:17:47 (13%)

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!

Een USB interface op een controller is niet meer dan de minimaal benodigde interface hardware. Die funktioneert alleen als die door de firmware wordt aangestuurd.

Dus inderdaad als de bootloader weg is dan doet USB niks meer.

Jtag daarentegen is (meestal) volledig in hardware ingebouwd en funktioneert dus onafhankelijk van de firmware.

[Bericht gewijzigd door deKees op vrijdag 1 mei 2020 14:48:27 (20%)

@DeKees

De USB doet nog wel wat, hij word gedetecteerd, alleen niet goed. Kan dit ook door de bootloader komen?

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!

Ja, dat kan. Daar zit een weerstandje in (Meestal intern in de controller) die aangeeft of het Low speed is of High-speed. Dan ziet windows wel dat er een USB is aangesloten, maar krijgt geen antwoord op de configuratie requests.

Maar ook die weerstand wordt meestal door de firmware aan en uitgezet. Dan hangt het er vanaf in hoeverre de firmware nog wel functioneert.

Arco

Special Member

Er moet een PID en VID verzonden worden en de 'capabilities'.
Als dat softwarematig gebeurt, dan weet Windows bij uitblijven daarvan niet wat er aan de poort hangt...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Beste mensen,

Mijn dank voor de hulp. Heb gisteren de J-link in ontvangst mogen nemen, en zojuist even mee aan het stoeien gegaan. En met enige trots kan ik zeggen dat het is gelukt, de processor werkt weer! Joepie!

Heb met de J-link unit uit mijn eigen processor een gedeelte kunnen kopieren. Achteraf gezien bleek dit de bootloader van de fabrikant. Toen deze in de defecte processor geschoten werd, herkende windows en de update software van de fabrikant de processor meteen, en werd de firmware compleet ingeschoten.

Vooralsnog lijkt alles te werken. Deze processoren kunnen beetje nukkig zijn, dus krijgt ie eerst nog een flinke duurtest alvorens hij de baan weer op mag! Iedereen mijn dank voor zijn of haar bijdrage in deze!

Als je ampje piept en kraakt, is DJohnny die hem maakt... Kom alleen niet om garantie, want dan is DJohnny met vakantie!

Altijd fijn als alle moeite niet voor niets bleek!

If you want to succeed, double your failure rate.
Turbokeu

Golden Member

I love watching conspiracy theorists use the airtight logic of the argument from incredulity: "Well I don't understand how it works so it can't be real!!!"