Mega128 flash crc

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 69
Csatlakozott: 2005. április 22. péntek, 6:00

Mega128 flash crc

Hozzászólás Szerző: Csuhas »

Van egy nagyobbacska programom ami a procit majdnem megtölti. Az eszközt bootloaderrel programozzuk.
Szeretném a felhasználó kérésére a flash tartalmát egy crc képzéssel ellenőrizni. A gondom az hogy az új kód néha kisebb mint a meglevő ezért a flashban maradt régi kód miatt nem ad használható eredményt ha a teljes memóriára számolok. Kérdés hogyan tudhatja egy proci futási időben hogy meddig tart a programkód. Igazából a beégetett bin file hossza kellene nekem. Sajnos nem lehet a kód végére egy címkét tenni és lekérdezni mert a fordító még valamilyen kódot rak a címke mögé.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Mega128 flash crc

Hozzászólás Szerző: Robert »

Hülye tipp:
A programkód végét feltöltöd DATA sorral, ami a flashba kerül (ha jól emlékszem a végére)
$EEPROM a data előtt: EEPROMba kerül
$DATA a data előtt (alapértelmezett): FLASHba kerül

Viszont tényleg betesz utána valamit:(
Tipp: II.
Bootloader csináljon egy teljes flash törlést. Utána programozzon :)
Így tudod, hogy a végén FF-ek vannak.
A beégetés (HEX állomány) alapban soronként tartalmaz CRC ellenőrzést.
A felhasználó azt akarja, hogy nem módosult e állás/héttérsugárzás hatására?
- Bootloader beégetés után (vagy első programinduláskor) olvasd végig a flasht-t és CRC-t számolj. Ez mentődjön EEPROMban 3 helyre.
utána tudsz ellenőrizni....
http://www.tavir.hu - a gazda :)
Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 69
Csatlakozott: 2005. április 22. péntek, 6:00

Re: Mega128 flash crc

Hozzászólás Szerző: Csuhas »

A következő munka során tényleg megtöröltetem a bootloaderrel a flasht. Ez jó megoldás, mert így nem kell a program végét sem ismernem hiszen a nem használt részen mindig ugyanaz a FF lesz. A meglévő eszközöknél a készülék időnként status üzenetet küld gsm kapcsolaton, annak része a flash crc is. Most kompromisszumként a program végén levő data sor címkéjéig számolok, és fordító által mögé pakolt részt nem ellenőrzöm. Így is figyelem a program kb 90%-át, és ez szvsz bőven elég hiszen az évek alatt még nem volt hiba. A doksiba pedig bekerülhet hogy a flash ellenőrizve van, ezért nem jelent kockázatot, megnyugodhatnak a bürokraták. Igazából az volna a bootloader változtatás nélküli megoldás, ha a bascom lehetővé tenné hogy futási időben lássam a report file romimage sorának az értékét. Vagy ha volna egy előre deklarált "romend" címke.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Mega128 flash crc

Hozzászólás Szerző: Robert »

Beépített kontansok elérhetőek. A $loader megmondhatja honnan van a bootloader eleje (fordításkor számol a bootloader mérettel).
_ROMSIZE beépített konstans vagy tudod melyik IC-re fordítasz. És a flash ez alatt van:)
Viszont hogyan lesz a HEX-edben CRC, amikor fordításod történik?
Ez egy ezutáni lépés lenne....
http://www.tavir.hu - a gazda :)
Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 69
Csatlakozott: 2005. április 22. péntek, 6:00

Re: Mega128 flash crc

Hozzászólás Szerző: Csuhas »

Robert írta:Viszont hogyan lesz a HEX-edben CRC, amikor fordításod történik?
Fordítás után amikor a címkék értéket kapnak akkor képződhetne egy romend címke is. A hex file crc pedig nem gond hiszen az gondolom a bin-ből képződik.
Válasz küldése