@@ -361,6 +361,103 @@ Ha nincs a RST lábat használó átvitel megnyitva, lehetőségünk van aszinkr
\subsection{Átviteli módok}
\subsubsection{JTAG}
% TODO
Az első és talán legfontosabb implementált átviteli mód a JTAG. Ez a 0. interfész 0x01/0x82 enpoint-párját használja, valamint az LDC TDI, TDO, TMS, TCK és JTREF lábait. Ezen az interfészen keresztül lehetséges az LDC-hez illesztett elektronika konfigurálása és hibakövetése.
A JTAG megnyitásához két Control blokkot kell kiadnunk:
\noindent Ha az első kérés logikai hamisat ad vissza, megszakítjuk a műveletet. A "JTAG mód" paraméter leírása lejjebb található.
Megnyitott JTAG átvitel közben fel tudjuk deríteni a JTAG láncot (\textit{Boundary Scan}), ehhez egy tapasztalati úton talált "mágikus sorozatot" kell leadnunk a 0x01 Bulk végponton, erre a \texttt{logsys\_jtag\_scan} függvény használható.
Az átvitel bezárásához a következő kérést használjuk:
A LDC kétféle módban tudja a JTAG interfészt kezelni:
\begin{itemize}
\item Visszaolvasás mód: ebben a módban a kiadott TDI értékekre kapott TDO választ visszaküldi USB transzferen keresztül a számítógépnek
\item Ellenőrzés mód: ekkor a számítógép a TDI-vel együtt a várt TDO értékeket is elküldi, majd a transzfer után egy Control blokkal lekérdezi, hogy történt-e hiba (várttal nem egyező TDO érték)
A TDI/TDO/TMS értékek megadása a 0x01/0x82 endpoint-párra küldött Bulk transzferekkel történik, egy speciális csomagformátumban:
% TODO jtag_packet
\noindent\textbf{FPGA konfigurációs fájlok}
A libxsvf-nek köszönhetően SVF és XSVF formátumú fájlokat képes a program natívan kezelni. Azonban a BIT (és JED) formátumok nem nyíltak, így azok kezeléséhez a Xilinx egyik segédprogramjával (iMPACT) át kell konvertálnom SVF-re. (ugyanezt teszi egyébként a Logsys GUI is). A segédprogrammal való kommunikációhoz a libc \texttt{popen} metódusát használom, ami a Unix pipe-okat használja (a Logsys GUI pedig temporális fájlokat hoz létre ugyanerre a célra). Azonban az iMPACT-nak nem lehet megmondani, hogy ne hozzon létre logfájlt, így hogy ne szemetelje tele a munkakönyvtárat, a szubprocessz elindítása előtt átlépek a \texttt{/tmp} könyvtárba, ami Unix-szerű rendszereken általában bárki által írható és nem perzisztens tároló. Ennek következtében azonban elveszítjük a relatív útvonalak használatának lehetőségét (hiszen mappát váltunk, és az így a \texttt{/tmp}-hez képest értelmeződne). Valamint mivel a terminálból olvasáskor a parancsok paramétereit szóközzel választom el, problémás a szóközt tartalmazó útvonalak használata. Speciális esetként beletettem, hogy az aposztrófok vagy idézőjelek közötti szóköz ne törje az argumentumlistát, de pl. nem támogatom a "\texttt{\textbackslash~}" formátumú escape-lést. Valamint ha egy útvonal tartalmaz aposztrófot ÉS idézőjelet IS, akkor nem reprezentálható.