ASM z HEX

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

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
mihal
Příspěvky: 1812
Registrován: 06 dub 2005, 02:00
Bydliště: Zilina

#16 Příspěvek od mihal »

Ten procesor má spoločný adresný priestor a napríklad v tej subrutine pravdepodobne číta hodnotu z portu, na 0x0001 je PortA. Je ale kľudne možné že sa ti niekde posunul bajt a namiesto inštrukcie čítaš ich data. To by zodpovedalo tomu úseku kódu kde sa presúva hodnota z registra do registra bez nejakej náväznosti.
Ďalej musíš počítať s tým, že niektoré registre môže čítať cez DMA nejaký ďalší ďas a to že tam niečo zapíšeš a o chvíľu to prepíšeš môže mať nejaký ďalší význam, napríklad odblokovanie niečoho.
To spätné dekódovanie pri tak zložitom procesore neni úplne triviálne a potrebuješ poznať jeho vrtochy, inak nad tým stráviš mesiace.
Dúfam že to neni nejaká blbá RJ za pár stoviek €,

Uživatelský avatar
Bernard
Příspěvky: 3614
Registrován: 27 kvě 2005, 02:00

#17 Příspěvek od Bernard »

Nějak matně si vzpomínám, že i překladač zdrojového kódu může generovat nějaké zbytečné instrukce. V MCS-51 byl na to nějaký "odžmolkovací" program Lint, který ty zbytečnosti čistil. Tenkrát přišel každý ušetřený bajt programu vhod, aspoň občas.

Uživatelský avatar
samec
Příspěvky: 3692
Registrován: 19 pro 2017, 01:00

#18 Příspěvek od samec »

Nemám disassembler, len plošák, multimeter, výpis externej ROM a datašit k procesoru. Na adrese 0 začína program po zapnutí. To 0x0001 v subrutine nie je adresa, ale priame dáta. Procak nemá DMA. RAM je externá. Periférie môžu prepísať len data v RAM, nie procesorové registre. Samozrejme čarovať sa dá so všeličím, ale ten HW okolo nie je zas až tak inteligentný. Zatiaľ som prešiel asi 500 bajtov z 50kB. Na začiatku programu som našiel inicializáciu riadiacích registrov pre organizáciu pamätí a čip selektov a register ochrany (watchdog atď...). Potom prišli tie nezmyselné inštrukcie. Skúsil som vliezť cez chybové prerušenie a v nejakom bordeli som našiel volanie subrutiny na resetovnie watchdogu. Skúsil som ďalšie HW prerušenie a tam sa pomedzi bordel nastavujú nejaké bity výstupných portov. Najzložitejšie je rozlúštiť nejasnosti okolo príliš stučného popisu inštrukcií, napríklad čím sa doplní extended adresa na 20 bitov, alebo či sa offset ráta so znamienkom alebo bez. Tiež neviem, čo sa stane, keď nejaká nezmyselná inštrukcia chce zapisovať do ROM, či sa vyvolá nejaké chybove prerušenie alebo nič. Ešte sa trochu povrtam v tom kóde a potom asi skúsim pripojiť na zbernicu arduino a porovnať, či program beží tak ako to vidím v kóde.

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#19 Příspěvek od lesana87 »

samec píše:Nemám disassembler.
Tak to by nějaký chtělo.

Uživatelský avatar
samec
Příspěvky: 3692
Registrován: 19 pro 2017, 01:00

#20 Příspěvek od samec »

Čo sa stane, ak na EXTAL vstup pripojím externý zdroj impulzov z Arduina? Pokazím kryštál? Schéma je na strane 49.
https://www.nxp.com/docs/en/product-bri ... 16Z1TS.pdf

Uživatelský avatar
mihal
Příspěvky: 1812
Registrován: 06 dub 2005, 02:00
Bydliště: Zilina

#21 Příspěvek od mihal »

EXTAL je vstup externých hodín. Kryštál by som odpojil.

Uživatelský avatar
samec
Příspěvky: 3692
Registrován: 19 pro 2017, 01:00

#22 Příspěvek od samec »

Práve že ja nechcem nič odpájať. Nemám na to čas ani chuť, lebo ani neviem, koľko krát to budem musieť takto prepájať a potom naspäť do pôvodného stavu. Ale už asi viem, čo urobím. Privediem impulzy na oba vývody kryštálu súčasne.

Mám však iný problém. Narazil som pri lúštení kódu na nejasnosť. Prarameter inštrukcie BPL Branch if Plus je signed alebo unsigned?
(strana 131 v pdf, alebo strana 6-63 v texte)
https://www.nxp.com/docs/en/reference-m ... PU16RM.pdf

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#23 Příspěvek od termit256 »

Kdyz to nechces odpojovat, tak nechapu co tu resis.

Uživatelský avatar
samec
Příspěvky: 3692
Registrován: 19 pro 2017, 01:00

#24 Příspěvek od samec »

Predsa ako bez odpojenia kryštálu ho nezničiť externým zdrojom impulzov.

Uživatelský avatar
mihal
Příspěvky: 1812
Registrován: 06 dub 2005, 02:00
Bydliště: Zilina

#25 Příspěvek od mihal »

BPL skáče o offset ak bit N v CCR je 0. Nieje signed ani unsigned ale simple.

Odpovědět

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