\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[portuges]{babel}
\usepackage{graphicx}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{ifpdf}

\title{JTAG Debugging}
\author{João Paulo Pizani Flor \\ Rodrigo Linhares}
\date{\today}

\ifpdf
	\pdfinfo {
		/Author (João Paulo Pizani Flor, Rodrigo Linhares)
		/Title (JTAG Debugging)
		/Subject (SUBJECT)
		/Keywords (KEYWORDS)
		/CreationDate (D:20100412222411)
	}
\fi


\begin{document}
	\maketitle
	
	\section{Introdução}
	    A depuração de código no contexto de sistemas embarcados é um grande desafio, e boa parte desse desafio decorre
	    da falta de uniformidade entre as plataformas de vários fabricantes. Felizmente, há um padrão de interface
	    para depuração, chamado JTAG e suportado por várias famílias de microcontroladores, dentre elas a Atmel AVR.
	    
	    O objetivo do presente trabalho é de familiarizar-se com o uso da interface JTAG e da \emph{cadeia de ferramentas}
	    AVRStudio para o fim de depuração de código para microcontroladores AVR. Foi dado aos alunos um código que
	    deveria funcionar de maneira semelhante ao exercício \emph{Light Keyboard}, ou seja, deveria acender o LED correspondente
	    a cada botão pressionado. Porém, esse código contém um erro, e esse erro deve ser encontrado e resolvido com o apoio
	    da ferramenta AVRStudio e do JTAG.
	    
	\section{Erro encontrado}
	    No arquivo main.cc, a linha: ``atmega->portb = atmega->portd'' está errada, isso pois
	    o estado de ativação dos pinos da porta D ficam armazenados no registrador PIND, e não no PORTD. Notou-se que quando
	    o valor de PORTD é setado POR SOFTWARE, o conteúdo de PIND acompanha tal mudança, porém o estado dos PINOS da porta D
	    é amostrado apenas no registrador PIND.
	    
	    Abaixo estão, respectivamente, as capturas de tela que mostram o bug antes de ser corrigido e após sua correção:
	    
	    \begin{figure}[h]
			\begin{center}
			\includegraphics[scale=0.5]{jtag_ss_bugged.png}
			\end{center}
		\caption{Programa com o bug detectado na linha que contém o breakpoint}
		\label{fig:ss_bugged}
	    \end{figure}
	    
        \begin{figure}[h]
            \begin{center}
            \includegraphics[scale=0.5]{jtag_ss_debugged.png}
            \end{center}
            \caption{Programa com o bug corrigido}
            \label{fig:ss_debugged}
        \end{figure}
	
\end{document}
