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é.
Mega128 flash crc
Re: Mega128 flash crc
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....
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
Re: Mega128 flash crc
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.
Re: Mega128 flash crc
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....
_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
Re: Mega128 flash crc
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.Robert írta:Viszont hogyan lesz a HEX-edben CRC, amikor fordításod történik?