Van egy bináris darabom egy olyan hardverből, amelyet már pár napja megfejtettem az IDA-val. Ma végre megkaptam a JTAG-on keresztül csatlakoztatott szondát, és az openocd elindította a GDB szervert. Az IDA csatlakozik a GDB szolgáltatáshoz, de amikor csatlakozom a folyamathoz, az összes nullát megmutatja a memóriában, és a PC nem volt ott, ahol vártam. Alapvetően úgy tűnik, hogy az IDA-nak nincs ellenőrzése, és nem kötődik hozzá. BTW, a cél fut, és inkább nem állítok le állítást, ha nem muszáj. Úgy gondolom, hogy ez a JTAG-mal lehetséges.
Nincs folyamatonkénti mondás, de nagyon szeretném, ha töréspontokat és egy lépést állíthatnék be a kód egyes helyein. Nyilván van valami telepítési probléma. Van valami ötleted?
UPDATE:
Sokat kellett tanulnom, és számos dolgot rosszul találtam ki.
- Kezdje az OPENOCD használatával a terminálon keresztül
- Valójában le kell állítania a célpontot, hogy hozzáférhessen a kézben lévő nyilvántartásokhoz
- a JTAG sebessége túl nagy
- A tesztelt eszközön be volt kapcsolva a WDT. Most, hogy ki van kapcsolva, le tudom állítani a célpontot, és megnézem a megfelelő regisztereket. Láttam, hogy ez történt, mivel remekül kezdi el olvasni a PC-t, de mire az alacsonyabb regs-re ért, minden F-et elolvasott.
- A DUT-nak van gyorsítótára és az MMU engedélyezve, így bár le tudom állítani cél, az újraindítás mindig adatmegszakítással végződik. Ha az arm11.c fájlt nézzük meg az ocd fájlban, úgy tűnik, hogy van egy csomó olyan csonk, amely még nincs teljesen megvalósítva a gyorsítótár bekapcsolásához. A folytatás előtt megpróbáltam kiüríteni a gyorsítótárat, de még mindig megszakítom az adatokat. További vizsgálatra van szükség, de ha valakinek van tanácsa, tudassa velem.
Eddig a segítségéért ez biztosan tanulási élmény volt.