You are here

PIC ROM részleges programozása

18 posts / 0 new
Last post
Markhazy
Markhazy's picture

Sziasztok,

A következő kérdéseim lennének PIC programozással kapcsolatban mivel ezeken a területeken még nincs tapasztalatom:

Egy Kód védelemmel ellátott PIC-ben lévő programot nem lehet kiolvasni?

Egy Kód védelemmel ellátott PIC ROM jának bizonyos részeit lehet-e programozni úgy hogy a többi rész érintetlen maradjon?

Köszönöm
Üdv
M.

Comments
ty

Szia!

Akkor újra fel kellene tenni a kérdést azok szerint, amiket időközben elmondtál.
- Megtudtuk, hogy van egy .hex állományod
- Nem tudjuk, hogy megvan-e aki írta
- Nem tudjuk, hogy miben írták és hogy megvan-e a forráskód.
- Tudjuk, hogy a .hex tartalmaz egy egyedi címet, azt kellene változtatni
- Nem tudjuk, hogy a cím 1,2,4 vagy több bájtos.
- Nem tudjuk, hogy milyen PIC-re írták ezt a programot

A problémád nyilván megoldható, legfeljebb nem pont abban a formában ahogyan elsőre elképzelted.
Egy bájtot nem fogsz tudni égetővel átírni a PIC memóriájában, de a .hex fájlban módosítható egy bájt is,
amelyet utána teljes egészében rátölthetsz a PIC-re.
Persze más megoldások is elképzelhetőek.

Üdv, ty
 

0

Vote up!

You voted ‘up’

Markhazy
Markhazy's picture

- Megtudtuk, hogy van egy .hex állományod

 

- Nem tudjuk, hogy megvan-e aki írta

Én írtam.

- Nem tudjuk, hogy miben írták és hogy megvan-e a forráskód.

C ben (CCS)

- Tudjuk, hogy a .hex tartalmaz egy egyedi címet, azt kellene változtatni

Egyedi adatot tartalmaz ismert címen (0x008F)

- Nem tudjuk, hogy a cím 1,2,4 vagy több bájtos.

1 bájtos adatról van szó

- Nem tudjuk, hogy milyen PIC-re írták ezt a programot

PIC16F874A

 

Megoldottam már. RS232-n keresztül a ROM ban módosítom ezt a byteot. Így elvileg a módosítás után kikapcsolást követően bekapcsolás után is a legutóbb beírt cím lesz érvényes. Remélem nem tévedek. Ezen a téren nincs nagy tapasztalatom. Ha ennek így kell működnie ahogy leírtam akkor minden meg van oldva.

 

Üdv

M.

1

Vote up!

You voted ‘up’

ty

Megoldottam már. RS232-n keresztül a ROM ban módosítom ezt a byteot.

Nem teljesen értem ezzel mit akarsz mondani, mert utána feltételes módban fogalmazol.
Most akkor megoldottad, vagy azt gondolod megoldható így?
Na mindegy, megpróbálok kicsit segíteni;
- A 874A valóban tudja írni a saját flash tartalmát, ez rendben
- Az írás legkisebb egysége 4 word, tehát min. ennyit kell beírjál egyszerre
- De ez sem igaz, mivel az írást törlés előzi meg, aminek a minimum egysége ha jól emlékszem 64b, de lehet tévedek.

Összegezve:
ROM használatával is megoldható, de indokolatlanul bonyolult lenne.
Amit meg szeretnél valósítani (Jaca már írta) arra a belső EEPROM memória való.
Ez bájtos egységben írható, nem kell előtte törölni. Használata egyszerű, ha elakadnál lesz aki segít.

Üdv, ty
 

0

Vote up!

You voted ‘up’

Markhazy
Markhazy's picture

Összegezve:
ROM használatával is megoldható, de indokolatlanul bonyolult lenne.
Amit meg szeretnél valósítani (Jaca már írta) arra a belső EEPROM memória való.
Ez bájtos egységben írható, nem kell előtte törölni. Használata egyszerű, ha elakadnál lesz aki segít.

Erre gondoltam én is! Még nem teszteltem. Talán holnap ha lesz rá este időm! :)

0

Vote up!

You voted ‘up’

Jaca
Jaca's picture

Ha a Data EEPROM-ra gondolsz, akkor az megtartja az értékét. De ha jól tudom, a regiszterek is megtartják az értéküket, ha reset után nincsenek törölve, bár ez nem biztos.

0

Vote up!

You voted ‘up’

Markhazy
Markhazy's picture

Data EEPROM ra gondoltam természetesen. Idegen nyelvű fórumokon ahogy láttam, egyszerűen flash-nek hívják a program memóriát. Azért írtam csak ROM ot mert úgy voltam vele hogy abból értitek mire gondolok, nem is tévedtem! :)

0

Vote up!

You voted ‘up’

ty

Volt aki értette, én nem :)

Érdemes a datasheet szóhasználatát követni, azt nehéz félreérteni:
- Data memory = RAM
- Data EEPROM memory = belső EEPROM
- flash program memory - program memória - ez lehetne leginkább ROM, de már rég nem az

üdv, ty

0

Vote up!

You voted ‘up’

Markhazy
Markhazy's picture

Szia, Jogos és legközelebb odafigyelek erre! Hasznos volt amit írtál az előzőekben is. Köszönöm segítséged!

1

Vote up!

You voted ‘up’

Oszi11
Oszi11's picture

Szia!

Erre nem lehet általánosságban válaszolni. Van olyan pic amiben a kódvédelmet több részben lehet bekapcsolni, van olyan amelyikbe lehet bootloadert tenni ami képes saját magát is átprogramozni. Lehet olyat csinálni, hogy a címet az eepromban tárolja a program, így lehet a kód védett az eeprom pedig szabadon programozható. Nem tudom milyen címről van szó, de az állítható lehet pl. dip kapcsolóval.
Az egyszer védetté tett memóriát csak teljes törlés után lehet újra olvasni, és ezt csak az ic lábaira csatlakozva nem lehet megkerülni. Ha elektronmikroszkóppal nem is de a belső buszra kontakttűkkel az ic fémezésére csatlakozva ki lehet olvasni a flasht, de ehhez olyan technológia kell, hogy nem kicsit olcsőbb újraíratni az egészet.

Üdv,
   Oszi

0

Vote up!

You voted ‘up’

zka67

Szia, ha "lock"-olva van egy chip, abból nem tudsz kiolvasni semmit, még "elektronmikroszkóppal laugh " sem, és semmi más megoldás nincs rá. (Amik esetleg a neten keringenek, szétbontott IC-kről, azok mind fake-k). Viszont ha meg van neked az eredeti programod HEX vagy BIN formátumban, azzal esetleg tudsz kezdeni valamit, mert a lock-olt chipek törölhetők és újra programozhatók.

Üdv, Zoli

0

Vote up!

You voted ‘up’

Markhazy
Markhazy's picture

Megvan a HEX. Csak nem akarom mindig újrafordítani ha újra címet kell adni egy-egy eszköznek. Legalábbis erre keresek egyszerűbb megoldást.

0

Vote up!

You voted ‘up’

Jaca
Jaca's picture

Szia!

Írd át a programot úgy, hogy az eeprom tartalomból olvassa fel a címet. Az eepromtartalmat külön lehet írni.

1

Vote up!

You voted ‘up’

Jaca
Jaca's picture

Szia!

Ha védett a tartalom, akkor sajnos nem lehet kiolvasni, max elektronmikroszkóppal. Ez az egy dolog nagyon jól sikerült a PIC-ekben.Tud is szivatni rendesen, mikor konfignál véletlenül bekapcsolod a védelmet, aztán programozás után visszaolvassa, és dobálja verify errorra, mert semmit nem tudott kiolvasni.

0

Vote up!

You voted ‘up’

Markhazy
Markhazy's picture

A védelem vonatkoztatható csak részleges memóriarészekre vagy kötelezően az egész memóriára tud csak érvényes lenni?

Van egy hardver ami RS232 hálózatba köthető és PC hez csatlakoztatható. A számítógép az egyes eszközöket egyedi fizikai címmel azonosítja és ez a cím a PIC be van beégetve. Valahogy lehetővé lehet-e tenni ennek az egy byte-nak a módosítását? A példa hex filet képzeljétek el úgy hogy abban két sor van csak, az első sor a módosítandó byte ra vonatkozó információkat tartalmazza illetve az utólsó sor az Intel HEX záró kód.

Van-e lehetőség egy ilyen HEX file felhasználásával kizárólag a PIC ROM egy adott részét programozni.

Ha igen akkor lehet-e részleges védelemmel ellátni a többi részt vagy a többi rész egy részét.

0

Vote up!

You voted ‘up’

kissi

Szia!

Ha jól értem a kérdésedet, akkor a PIC-et akarod egy hex-el programozni, úgy, hogy az eredeti hex megvan, csak bizonyos helyen mást kellene a FLASH-be írni ?!

Ha így van, akkor van lehetőség a hex szerkesztésére is ( nem kell az eredeti forrásállomány hozzá!), a megfelelő byte-ok átírásával, majd a szerkesztett hex beégetése után használhatod a megváltoztatott egyedi azonosítóval a PIC-et ( a kiolvasás elleni védelem közben folyamatosan aktív lehet !) !

Ez így nem részleges flash írás, de az eredmény az, amit kértél!

A szerkesztés történhet sima szövegszerkesztóvel is, de lehet rá programot is írni !

Remélem jól értelmeztem a problémádat :) !?

0

Vote up!

You voted ‘up’

simpiiii

"A védelem vonatkoztatható csak részleges memóriarészekre vagy kötelezően az egész memóriára tud csak érvényes lenni?" A memória melyik részére? Nálad van programmemória, és adatmemória (EEPROM). (Programmemóriába konstanst csak forgatás előtt lehet létrehozni, így marad az adatmemória.) Mindkét területet lehet védeni kiolvasás ellen. Mindkettőben elhelyezheted az azonosító adatodat. Ha nem szeretnéd, hogy egy pickit2-vel felüssék az érzékeny adatot, akkor vagy megnehezíted az érzékeny adat megtalálását (valamilyen algoritmus alapján titkosítod az érzékeny adatot) de a kontroller olvasható írható kívülről, vagy magában a kontrollerben kell megírni azt a programrészt amivel beadod az érzékeny adatot. Kérdés, hogy mekkora energiát szeretnél ebbe belefektetni. Legegyszerűbben én írnék egy mezei UART alapú programrészt, ahol UART snifferrel, akármilyen terminálprogrammal lehetne módosítani az érzékeny adot(-kat). Csatlakoztatod az UART átalakítót, terminálba bepötyögöd a mesterjelszót, a kontroller valamit visszaválaszol, bepötyögöd az érzékeny kódodat amit mentesz az EEPROM-ba. Konfigba meg lehet beállítani a kódvédelmet olvasásra.

0

Vote up!

You voted ‘up’

varga jano
varga jano's picture

Szia Markhazy !
Ahogy én tudom .
Ha "elégették " a kiolvasási lehetőséget . No,akkor nem lehet kiolvasni a tartalmat .
Fizikai lehetőség VAN a kiolvasásra . Az interneten is hirdetnek ilyen "szürke" megoldásokat .
Fizikailag megbontják a PIC alkatrészt . Majd kiolvassák a programot . Megfelelő díjazásért .
Szerintem .
Üdv jano

0

Vote up!

You voted ‘up’

More similar content