Hej gruppe.
Jeg sidder med et problem på jobbet, og ville lige høre her om nogen har en idé til hvordan at jeg løser det.
Jeg sidder i RMA afdeling, og står for reparation af nogle avancerede batteriopladere. Laderne er software baserede, og software løsningen i dem består af 2 dele - en bootloader og et stykke firmware.
Firmwaren i laderen er noget kunden selv kan opgradere via Serial eller USB (same shit, bare en indbygget USB kreds i nogle modeller)
Der sidder også en standard Microchip ISCP header på motherboardet, der passer direkte i en Pickit2 f.eks.
Processoren i produktet er en PIC24FJ64
Når kunden lægger en ny firmware ind i laderen, og den er markant nyere end den gamle, skal bootloaderen også opdateres, og her sker det af og til at noget går galt, og man ender op med en ret død lader der ikke kan boote.
Firmware re-flash er af gode grunde ikke muligt, da bootloaderen der lytter via Serial, ikke virker.
På værkstedet har vi nogle "brikker" der flasher firmwaren om. Disse består af et lille print med en ATMEGA128 processor, lidt passive komponenter, et par lysdioder osv.
Den sættes i laderen og den flasher en bootloader ned. Kildefilen til kredsen udleveres ikke. Egentlig nok et forsøg på at forhindre piratkopiering af produktet.
Vi har kun én brik for hver model af produktet, og går den i stykker er vi mildest talt på skideren - så en kopi af den, eller bare muligheden for at smide en Pickit2 i og flashe fra computeren ville være en super løsning.
Jeg kan ikke udlæse koden i laderen via Pickit2 da code protect er slået til, så alt læses som "00"
Kan jeg stole på de configuration bits som Pickit2 kan udlæse fra kredsen, selvom at code protect er slået til? I så fald ser jeg en mulig løsning. Inden i firmware flasher programmet, i selve exe filen ligger der også en opdateret bootloader - hvis jeg åbner exe filen i en hex editor står der højt og tydeligt BOOTLOADER og så en stor blok af data bagefter.
Hvis ellers at config bits er korrekt, burde jeg kunne flashe denne blok data ned med Pickit2, og så starte laderen op, og flashe selve firmwaren via Seriel porten....
Jeg har spekuleret over en anden mulighed. Reverse ICSP - er der nogen der har en idé om det kan lade sig gøre at "snuse" til ICSP programmeringen med en logic analyser/datalogger og så gendanne hex data den sender til kredsen ?
Nå, det var en lang smøre, jeg håber at det ikke var for stor en mundfuld at tygge sig igennem ;-)
Iøvrigt, vi har konfronteret producenten af laderen med vores projekt, og de har ikke noget problem med at vi roder med det, det er trods alt ladere uden for garanti vi eksperimenterer med p.t. - så ingen grund til at himle op om at der nok er en grund til at de ikke udleverer hexkoden osv - de har simpelthen ingen interesse i det, det er langt nemmere for dem at sende os en "brik" der programmerer produktet. Det er nemt og (næsten) idiotsikkert.
Det mest frustrende er næsten, at aller nyeste model i programmet, den har vi ikke engang en brik til, så når kunden får fejlflashet den, så er den død - ihvertfald indtil at vi får en brik der passer til den.....
Hvis du har nogen ideer eller indspark, så råb op!
// Per.