Editace hex souboru pro Atmega8

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Kuba230
Příspěvky: 68
Registrován: 28 zář 2007, 00:00

Editace hex souboru pro Atmega8

#1 Příspěvek 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.
Přílohy
avr code.hex
(20.31 KiB) Staženo 200 x
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 00:00
Bydliště: Praha

#2 Příspěvek 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í.
Přílohy
avr_code_182.zip
(9.14 KiB) Staženo 165 x
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#3 Příspěvek 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 :D
Možno to je ono.
hakamusai
Příspěvky: 939
Registrován: 17 dub 2007, 00:00

#4 Příspěvek od hakamusai »

FHonza>jaký disassembler na to používáš ?
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 00:00
Bydliště: Praha

#5 Příspěvek 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í.
hakamusai
Příspěvky: 939
Registrován: 17 dub 2007, 00:00

#6 Příspěvek od hakamusai »

FHonza>Díky.
Uživatelský avatar
Kuba230
Příspěvky: 68
Registrován: 28 zář 2007, 00:00

#7 Příspěvek 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.
Přílohy
avr code - hex.txt
(35.69 KiB) Staženo 150 x
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#8 Příspěvek 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ť.
Uživatelský avatar
jiriS
Příspěvky: 609
Registrován: 14 led 2014, 00:00
Bydliště: Ašsko
Kontaktovat uživatele:

#9 Příspěvek 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.
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 00:00
Bydliště: Praha

#10 Příspěvek 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.
Uživatelský avatar
Kuba230
Příspěvky: 68
Registrován: 28 zář 2007, 00:00

#11 Příspěvek 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. :wink:
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 00:00
Bydliště: Praha

#12 Příspěvek od FHonza »

Myslím že by stačilo přepisovat jenom EEPROM obsahem, který si stáhneš z procesoru, když je "nabytý".
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“