Hi,
ich habe mir das grade noch mal angeschaut, kann mir jemand den folgenden Code erläutern, beziehungsweise meine Überlegung dazu mal prüfen?
Die Funktion clockin wird von den einigen andern Funktionen aufgerufen unter andrem ReadWriteData, ReadData und WriteData was ja grade die interessanten Funktionen sind.
if(wiggler) data = (1 << WTDO) | (0 << WTCK) | (tms << WTMS) | (tdi << WTDI) | (1 << WTRST_N);
Das sind genau die Pins die im Wiki für das Wiggler Interface beschrieben sind.
Wenn ich jetzt einfach 5 Pins am AVR wie oben definiere dann wäre das doch der gleiche output wie am Parallelport, oder nicht?
Ist die clockin die Outputfuktion? Könnte da so funktionieren?
static unsigned char clockin(int tms, int tdi)
{
unsigned char data;
tms = tms ? 1 : 0;
tdi = tdi ? 1 : 0;
if(wiggler) data = (1 << WTDO) | (0 << WTCK) | (tms << WTMS) | (tdi << WTDI) | (1 << WTRST_N);
else data = (1 << TDO) | (0 << TCK) | (tms << TMS) | (tdi << TDI);
#ifdef WINDOWS_VERSION // ---- Compiler Specific Code ----
_outp(0x378, data);
#else
//ioctl(pfd, PPWDATA, &data); Was ist das???
#endif
if(wiggler) data = (1 << WTDO) | (1 << WTCK) | (tms << WTMS) | (tdi << WTDI) | (1 << WTRST_N);
else data = (1 << TDO) | (1 << TCK) | (tms << TMS) | (tdi << TDI);
#ifdef WINDOWS_VERSION // ---- Compiler Specific Code ----
_outp(0x378, data);
#else
//ioctl(pfd, PPWDATA, &data); Was ist das???
#endif
#ifdef WINDOWS_VERSION // ---- Compiler Specific Code ----
data = (unsigned char)_inp(0x379);
#else
// ioctl(pfd, PPRSTATUS, &data);
#endif
data ^= 0x80;
data >>= (wiggler ? WTDO : TDO);
data &= 1;
return data;
}
patch() ruft ejtag_read(addr1) auf
ejtag_read(addr1) ruft ejtag_pracc_read(addr) auf
ejtag_pracc_read(addr) ruft ExecuteDebugModule(pracc_readword_code_module) auf (pracc_readword_code_module) ist die Assembler Funktion um den Speicher zu lesen denke ich
ExecuteDebugModule(pracc_readword_code_module) ruft ReadWriteData(PRACC | PROBEN | SETDEV) und ReadData() mehrfach auf
ReadData() WriteData() ReadWriteData() rufen die oben beschreibende clockin() auf.
Also landet alles irgendwann da und wird über die Pins rausgeschickt.
Ich weiß nicht ob ich das alles richtig verstanden habe aber es scheint mir schon so zu sein.
Kann das jemand so bestätigen?