Line 217... |
Line 217... |
...
|
...
|
\end{lstlisting}
|
\end{lstlisting}
|
|
|
Es decir, se agrega los TAPs recorriendo la cadena JTAG desde el pin TDO al pin TDI desde el interface, aquí sería desde la placa OOCDLink.
|
Es decir, se agrega los TAPs recorriendo la cadena JTAG desde el pin TDO al pin TDI desde el interface, aquí sería desde la placa OOCDLink.
|
|
|
\subsection{Programación \ac{CPLD}}
|
\subsection{Programación del \ac{CPLD}}
|
Para los \ac{CPLD}, primero se debe tener el archivo \ac{SVF}, que es generado por la herramienta con la que se diseña y sintetiza el código VHDL o Verilog. En éste caso se utiliza el \textsl{software} ISE Xilinx. Una vez que se tiene el archivo \ac{SVF}, desde \ac{openocd}, se corre el siguiente comando;
|
Para los \ac{CPLD}, primero se debe tener el archivo \ac{SVF}, que es generado por la herramienta con la que se diseña y sintetiza el código VHDL o Verilog. En éste caso se utiliza el \textsl{software} ISE Xilinx. Una vez que se tiene el archivo \ac{SVF}, desde \ac{openocd}, se corre el siguiente comando;
|
\begin{lstlisting}
|
\begin{lstlisting}
|
svf -tap tap_name file.svf quiet
|
svf -tap tap_name file.svf quiet
|
\end{lstlisting}
|
\end{lstlisting}
|
Lo que generaría una salida como la que sigue,
|
Lo que generaría una salida como la que sigue,
|
Line 310... |
Line 310... |
Al igual que el \textsl{software} \ac{openocd}, xc3sprog recibe varios argumentos en función de como se quiera interactuar con los dispositivos a programar. Para listar las opciones que se tienen, se debe correo el programa desde el directorio donde se construyó el proyecto, llamado \texttt{build},
|
Al igual que el \textsl{software} \ac{openocd}, xc3sprog recibe varios argumentos en función de como se quiera interactuar con los dispositivos a programar. Para listar las opciones que se tienen, se debe correo el programa desde el directorio donde se construyó el proyecto, llamado \texttt{build},
|
|
|
\begin{lstlisting}
|
\begin{lstlisting}
|
luis@luis-laptop:~$ cd ~/sourceforge/xc3sprog/build
|
luis@luis-laptop:~$ cd ~/sourceforge/xc3sprog/build
|
luis@luis-laptop:~$ ./xc3sprog
|
luis@luis-laptop:~$ ./xc3sprog
|
XC3SPROG (c) 2004-2011 xc3sprog project $Rev: 160 $ OS: Linux
|
XC3SPROG (c) 2004-2011 xc3sprog project $Rev: 161 $ OS: Linux
|
Free software: If you contribute nothing, expect nothing!
|
Free software: If you contribute nothing, expect nothing!
|
Feedback on success/failure/enhancement requests:
|
Feedback on success/failure/enhancement requests:
|
http://sourceforge.net/mail/?group_id=170565
|
http://sourceforge.net/mail/?group_id=170565
|
Check Sourceforge for updates:
|
Check Sourceforge for updates:
|
http://sourceforge.net/projects/xc3sprog/develop
|
http://sourceforge.net/projects/xc3sprog/develop
|
Line 460... |
Line 460... |
\begin{lstlisting}
|
\begin{lstlisting}
|
xc3sprog -c cable [options] <file0spec> <file1spec> ...
|
xc3sprog -c cable [options] <file0spec> <file1spec> ...
|
\end{lstlisting}
|
\end{lstlisting}
|
En este comando, lo principal es definir que \emph{cable} se utilizará de la lista que tenemos en el archivo \texttt{cablelist.txt}. Para esto, se debe indicar luego del \texttt{-c} el nombre de la lista de \textsl{interfaces}. Una vez definido el cable, se concatenan demás tareas que debe procesar el xc3sprog, pero ya teniendo referencia a que tipo de \textsl{interface} está conectado. Los tareas son,
|
En este comando, lo principal es definir que \emph{cable} se utilizará de la lista que tenemos en el archivo \texttt{cablelist.txt}. Para esto, se debe indicar luego del \texttt{-c} el nombre de la lista de \textsl{interfaces}. Una vez definido el cable, se concatenan demás tareas que debe procesar el xc3sprog, pero ya teniendo referencia a que tipo de \textsl{interface} está conectado. Los tareas son,
|
\begin{description}
|
\begin{description}
|
\item[\textbf{\texttt{-j}}] Detecta la cadena JTAG e imprime una lista de dispositivos encontrados. La numeración de la posición del dispositivo en la cadena se cuenta desde el dispositivo conectado al pin TDO del \textsl{interface}.
|
\item[\texttt{-j}] Detecta la cadena JTAG e imprime una lista de dispositivos encontrados. La numeración de la posición del dispositivo en la cadena se cuenta desde el dispositivo conectado al pin TDO del \textsl{interface}.
|
\item[\textbf{\texttt{-p val}}] Define a que dispositivo de la cadena JTAG se está por acceder, donde \texttt{val} es el número que ocupa en la cadena y es visualizado por el comando \texttt{-j}. El valor por defecto de \texttt{val} es 0.
|
\item[\texttt{-p val}] Define a que dispositivo de la cadena JTAG se está por acceder, donde \texttt{val} es el número que ocupa en la cadena y es visualizado por el comando \texttt{-j}. El valor por defecto de \texttt{val} es 0.
|
\item[\textbf{\texttt{-T n}}] Testea la cadena JTAG \texttt{n} veces. Cuando se corre en modo ISF, se testea la conexión SPI.
|
\item[\texttt{-T n}] Testea la cadena JTAG \texttt{n} veces. Cuando se corre en modo ISF, se testea la conexión SPI.
|
\begin{itemize}
|
\begin{itemize}
|
\item Si \texttt{n} no se específica, el valor por defecto es de 10,000 veces.
|
\item Si \texttt{n} no se específica, el valor por defecto es de 10,000 veces.
|
\item Si \texttt{n = 0} se mantendrá en un testeo para siempre.
|
\item Si \texttt{n = 0} se mantendrá en un testeo para siempre.
|
\end{itemize}
|
\end{itemize}
|
\item[\textbf{\texttt{-J freq}}] Ejecuta a una frecuencia específica el clock del JTAG (\texttt{freq} se encuentra en Hz). Si no se proporciona este dato, o \texttt{freq = 0}, el \textsl{interface} trabajará a la máxima frecuencia que soporte y se encuentre definido en el archivo \texttt{cablelist.txt} (véase \ref{sec:xc3sprog-cablelist}).
|
\item[\texttt{-J freq}] Ejecuta a una frecuencia específica el clock del JTAG (\texttt{freq} se encuentra en Hz). Si no se proporciona este dato, o \texttt{freq = 0}, el \textsl{interface} trabajará a la máxima frecuencia que soporte y se encuentre definido en el archivo \texttt{cablelist.txt} (véase \ref{sec:xc3sprog-cablelist}).
|
\item[\textbf{\texttt{-e}}] Borra el dispositivo seleccionado por el parámetro \texttt{-p}.
|
\item[\texttt{-e}] Borra el dispositivo seleccionado por el parámetro \texttt{-p}.
|
\item[\textbf{\texttt{-I file}}] Define si se trabaja en modo ISF para programar una memoria serial \textsl{flash} interna. La memoria \textsl{flash} está junta al dispositivo JTAG primario, pero no es accesible directamente mediante la cadena JTAG. El \textsl{interface} JTAG primario es usado como un \emph{proxy} para enviar datos sobre SPI a la memoria \textsl{flash}. Si se especifica el argumento \texttt{file}, se comenzará por programar el bitfile especificado en el \textsl{interface} JTAG primario (típicamente una FPGA).
|
\item[\texttt{-I file}] Define si se trabaja en modo ISF para programar una memoria serial \textsl{flash} interna. La memoria \textsl{flash} está junta al dispositivo JTAG primario, pero no es accesible directamente mediante la cadena JTAG. El \textsl{interface} JTAG primario es usado como un \emph{proxy} para enviar datos sobre SPI a la memoria \textsl{flash}. Si se especifica el argumento \texttt{file}, se comenzará por programar el bitfile especificado en el \textsl{interface} JTAG primario (típicamente una FPGA).
|
\item[\textbf{\texttt{-R}}] Envía un comando de reconfiguración al dispositivo de memoria del \textsl{hardware} utilizado (por ejemplo: XVC, XCF, XCFP para las FPGA o directamente a los dispositivos XC3S, XC6S, XC2V).
|
\item[\texttt{-R}] Envía un comando de reconfiguración al dispositivo de memoria del \textsl{hardware} utilizado (por ejemplo: XVC, XCF, XCFP para las FPGA o directamente a los dispositivos XC3S, XC6S, XC2V).
|
\item[\textbf{\texttt{-m mapdir}}] Búsqueda de archivos de mapeo (XC2C) en el directorio especificado por \texttt{mapdir}. Los archivos de mapeo (\textsl{map files}) son requeridos para manejar archivos JEDEC durante la programación de los CPLDs. Si se especifica el directorio, por defecto el valor que se toma es \texttt{\$XC\_MAPDIR}.
|
\item[\texttt{-m mapdir}] Búsqueda de archivos de mapeo (XC2C) en el directorio especificado por \texttt{mapdir}. Los archivos de mapeo (\textsl{map files}) son requeridos para manejar archivos JEDEC durante la programación de los CPLDs. Si se especifica el directorio, por defecto el valor que se toma es \texttt{\$XC\_MAPDIR}.
|
\item[\textbf{\texttt{-d /dev/parportN}}] Especifica el puerto paralelo a utilizar. Si no es especificado, por defecto se utiliza el valor \texttt{\$XCPORT} o \texttt{/dev/parport0}.
|
\item[\texttt{-d /dev/parportN}] Especifica el puerto paralelo a utilizar. Si no es especificado, por defecto se utiliza el valor \texttt{\$XCPORT} o \texttt{/dev/parport0}.
|
\item[\textbf{\texttt{-s serialnum}}] Utiliza el puerto USB con \textsl{string} de número de serie específico.
|
\item[\texttt{-s serialnum}] Utiliza el puerto USB con \textsl{string} de número de serie específico.
|
\item[\textbf{\texttt{-L}}] Usa el controlador \emph{libFTD2XX} en luag de \emph{libftdi} para acceder a un \textsl{interface} basados en los dispositivos FTDI.
|
\item[\texttt{-L}] Usa el controlador \emph{libFTD2XX} en luag de \emph{libftdi} para acceder a un \textsl{interface} basados en los dispositivos FTDI.
|
\item[\textbf{\texttt{-D}}] Genera los archivos \texttt{cablelist.txt} y \texttt{devlist.txt} en el directorio actual. Si ya existiesen, xc3sprog intentará generar los mismos archivos pero agregando al nombre de los archivos un número que incrementará.
|
\item[\texttt{-D}] Genera los archivos \texttt{cablelist.txt} y \texttt{devlist.txt} en el directorio actual. Si ya existiesen, xc3sprog intentará generar los mismos archivos pero agregando al nombre de los archivos un número que incrementará.
|
\item[\textbf{\texttt{-v}}] Habilita la salida formal detallada (\textsl{verbose}).
|
\item[\texttt{-v}] Habilita la salida formal detallada (\textsl{verbose}).
|
\item[\textbf{\texttt{-h}}] Imprime un texto de ayuda para el programa.
|
\item[\texttt{-h}] Imprime un texto de ayuda para el programa.
|
\end{description}
|
\end{description}
|
|
|
|
Luego de reconocer los diferentes comandos que permiten ejecutarse con xc3sprog, se presenta a continuación algunas acciones posibles que se pueden correr. Cada una de estas acciones está compuesta de un archivo \texttt{filename} seguido opcionalmente por atributos de la forma:
|
|
\begin{lstlisting}
|
|
<filename:action:offset:style:length>.
|
|
\end{lstlisting}
|
|
\begin{description}
|
|
\item[\texttt{filename}] Corresponde al archivo que será escrito por el dispositivo seleccionado, o también puede ser el archivo que almacena el dato para luego ser leído por el dispositivo que se encuentra en la cadena JTAG.
|
|
\item[\texttt{action}] Es una letra que indica si se escribe, lee, o verifica el dispositivo. Si es especificado, la acción de escritura es indicado por defecto.
|
|
\begin{description}
|
|
\item[\texttt{w}] Borra, luego escribe los datos desde el archivo al dispositivo y por último verifica.
|
|
\item[\texttt{W}] Escribe con un tipo de borrado \textsl{auto-sector}, luego verifica. Este modo permite borrar solo el espacio necesario.\\
|
|
\item[\texttt{v}] Verifica el dato del dispositivo comparando el un archivo especificado.
|
|
\item[\texttt{r}] Lee los datos desde el dispositivo y los escribe al archivo (sin sobre-escritura).
|
|
\item[\texttt{R}] Lee los datos desde el dispositivo y los escribe al archivo, si ya existe el archivo lo sobreescribe.
|
|
\end{description}
|
|
\item[\texttt{offset}] El desplazamiento interno en \textsl{byte} del dispositivo donde la escritura/lectura deberá comenzar. Solo soportado para dispositivos SPI, XCFxxS y XMEGA.
|
|
\item[\texttt{style}] Define el formato del archivo especificado.
|
|
\begin{description}
|
|
\item[\texttt{BIT}] Formato de archivo de Xilinx \texttt{.BIT}. Por defecto para los dispositivos FPGA, XCF y memorias SPI.
|
|
\item[\texttt{BIN}] Archivo binario.
|
|
\item[\texttt{MCS}] Formato de archivo de Xilinx \texttt{.MCS}.
|
|
\item[\texttt{IHEX}] Formato de Intel \texttt{HEX}. También usado por los formatos PROMGEN de Xilinx cuando escribe archivos MCS. Por defecto para los archivos XMEGA.
|
|
\item[\texttt{HEXRAW}] Secuencia en bruto de dígitos hexadecimales.
|
|
\item[\texttt{JEDEC}] Por defecto para los dispositivos CPLDs.
|
|
\end{description}
|
|
\item[\texttt{length}] El número de \textsl{bytes} a programar/leer. Solo soportado para SPI, XCFxxS y XMEGA.
|
|
\end{description}
|
|
|
\subsection{Programación \ac{CPLD}}
|
\subsection{Programación de la \ac{FPGA}}
|
|
|
|
|
\subsection{\textsl{Debugging}}
|
\subsection{Programación del \ac{CPLD}}
|
|
|
\section{Documentación}
|
\section{Documentación}
|
La documentación resulta fundamental en ésta etapa del desarrollo. Si bien se quiere lograr el correcto funcionamiento de las placas, la documentación sirve para realizar correciones a las versiones futuras de cada placa. Otro objetivo es documentar el funcionamiento de cada dispositivo que sirvan al reporte final como así también a los usuarios de la \emph{Plataforma de Hardware Reconfigurable}.
|
La documentación resulta fundamental en ésta etapa del desarrollo. Si bien se quiere lograr el correcto funcionamiento de las placas, la documentación sirve para realizar correciones a las versiones futuras de cada placa. Otro objetivo es documentar el funcionamiento de cada dispositivo que sirvan al reporte final como así también a los usuarios de la \emph{Plataforma de Hardware Reconfigurable}.
|
|
|
\begin{thebibliography}{}
|
\begin{thebibliography}{}
|