Stránka 1 z 1
Editace hex souboru pro Atmega8
Napsal: 19 bře 2014, 10:21
od Kuba230
Ahoj, má tu někdo zkušenosti se editováním hex souboru pro atmega8 ?
Soubor obsahuje počítadlo pro počet zapnutí, pravděpodobně 500. Při prvním zapnutí se zobrazí údaj, zbývá 499 použití (LAST 499 USAGE).
Chtěl bych navýšit počet použití na maximum, ale vůbec nemůžu najít, jak to změnit. Přikládám hex soubor.
Napsal: 19 bře 2014, 11:08
od FHonza
Otevři hex soubor v AVR Studiu jako nový projekt a pak jedině hledat. Nebo otevři asm co je v příloze (je to hex prohnaný disassemblerem), na úplně první pohled to tam vidět není.
Napsal: 19 bře 2014, 11:36
od procesor
v r16 a r17 je asi konštanta .500
Kód: Vybrat vše
.
.
.
; ----------- jump on last line
L0BCA:
rcall L0105
ldi r17,k00
ldi r16,k00
rcall L0118
ldi r20,k07
ldi r21,k00
rcall L0DC6
cpi r16,kF5
ldi r18,k01
cpc r17,r18
brcs L0BDA
; ----- branch on last line
ldi r16,kF4
ldi r17,k01
ldi r20,k07
ldi r21,k00
rcall L0DD8
L0BDA:
ldi r20,k07
.
.
.
hF4
h01
1/-Nájsť v tom Hex súbore ldi r16,kF4 a ldi r17,k01 (treba si to preložiť do strojového kódu tie dve inštrukcie a upraviť konštanty aj s kontrolnými číslami v riadku hex súboru).
2/-Skúsiť preložiť ponúknutý súbor.asm
Možno to je ono.
Napsal: 19 bře 2014, 15:27
od hakamusai
FHonza>jaký disassembler na to používáš ?
Napsal: 19 bře 2014, 16:42
od FHonza
Poměrně starý a dloho neudržovaný ReAVR 3.2 z roku 2005.
tady je ke stažení, původní stránky už dávno nefungují.
Napsal: 19 bře 2014, 18:32
od hakamusai
FHonza>Díky.
Napsal: 19 bře 2014, 21:41
od Kuba230
Ahoj procesor,
tak jsem ten hex překonvertoval pomocí progamu Ascii Coded Hex Utility, ale nějak nemůžu najít ty konstanty, asi se v tom neumím dostatečně orintovat.
Jako přílohu, přikládám přeložený soubor, je v notepadu.
Program jsem stáhl z tyhle stránky:
http://www.avrfreaks.net/index.php?func ... ks%20Tools
Všem děkuji za pomoc.
Napsal: 20 bře 2014, 00:21
od procesor
V AVR nie som doma.
Prevod hex do asm nemusí sa dať urobiť na "jeden klik". Nepoznám štuktúru programu a dat toho procesora. Podľa toho hex-u na začiatku sú nejaké textové reťazce, ale v prevode do asm sú tam inštrukcie. Asi by na tom asm sa muselo ešte veľa popracovať.
Napsal: 20 bře 2014, 06:53
od jiriS
Ahoj, trochu jsem se na to mrknul, je to šílený kód. Asi bych začal tím, že bych v asm změnil předefinované registry z označení např. p1E na názvy podle datasheetu (v tomto případě je to EEARH). Potom by to mělo být trochu přehlednější. Protože je informace o počtu zapnutí pravděpodobně uchovávána přímo v MCU, je to v EEPROM. (Kdyby byla ve vnější paměti, musel bys asi hledat v komunikaci s touto pamětí, ale nepředpokládám to.)
No a registry pro zápis a čtení EEPROM (EEARH,EEARL,EEDR a EECR) už podle datasheetu dekóduješ. Horší by bylo, kdyby paměť byla využívaná i na zápis a čtení nějakých dalších hodnot. Dá se ale předpokládat, že po skoku na reset vektor program zřejmě nejdřív přečte a dekrementuje počet zapnutí (po zápisech základních nastavení). Nějaké zápisy adres do EEARL a H jsem našel na labelu L0DCD, ale najít, jestli se jedná o část kódu, který hledáš, je na tobě. Přeju úspěch a trpělivost.
Napsal: 20 bře 2014, 09:33
od FHonza
A co to zkusit takto: vyčti EEPROM do souboru, poté zařízení zapni. Odečte se počítadlo. Znovu vyčti EEPROM do jiného souboru. Porovnej kam se počítadlo ukládá. Pak by se to dalo najít asi jednoduše.
Případně sem vlož alespoň blokové schéma co je k procesoru na jaké porty připojeno, zas se bude o něco líp orientovat v programu.
Napsal: 20 bře 2014, 18:41
od Kuba230
Opravdu je to šílený kód, asi na to kašlu, těch 500 požití, mě stačí na 5 měsíců, pak ho vytáhnu z patice, vymažu flash, eprom a opět nasypu do něj program, tím pádem se všechno vynuluje, zkusil jsem to a funguje to.
Výrobce zaručuje 10000 cyklů přepisů, takže procesor by mě mněl vydržet do konce života.
Děkuji vám kluci za pomoc.

Napsal: 21 bře 2014, 09:39
od FHonza
Myslím že by stačilo přepisovat jenom EEPROM obsahem, který si stáhneš z procesoru, když je "nabytý".