O processo de resolução de bugs ou defeitos que interferem no bom funcionamento de um software de computador ou sistema operacional é conhecido como Depuração. Este artigo trata da configuração e uso de um depurador JTAG com microcontrolador ARM Cortex M3. Para configurar o Ambiente para o desenvolvimento do ARM córtex M3 consulte este artigo.
O LPC 1768 é um microcontrolador baseado em ARM Cortex-M3 para recursos de aplicação embarcados com baixo consumo de energia e alto nível de integração. O ARM Cortex M3 foi projetado de forma a aprimorar os recursos de depuração e um nível mais alto de integração do sistema. Ele funciona a uma frequência de CPU de 100 MHz e incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard com instruções locais separadas e barramentos de dados para periféricos de terceiro barramento. A CPU ARM Cortex-M3 possui uma unidade interna de pré-busca para suportar ramificações especulativas. Os componentes periféricos incluem 512 KB de memória flash, 64 KB de memória de dados, Ethernet MAC, USB OTG, 4 UARTs, controlador DMA de uso geral de 8 canais, 2 controladores SSP, DAC de 10 bits, interface de codificador de quadratura, interface SPI, 3 barramentos I2C interface, interface de barramento I2S de 2 entradas mais 2 saídas, 4 temporizadores de uso geral, relógio em tempo real (RTC) de consumo ultrabaixo com fonte de bateria separada e até 70 pinos de E/S de uso geral, PWM de uso geral de 6 saídas. Os LPC1768/66/65/64 são compatíveis com os pinos da série de microcontroladores baseados em LPC236x ARM7 de 100 pinos.
Os seguintes componentes são usados neste tutorial:
-
Depurador – Sua escolha
-
Controlador/placa – LPC1768/Explore Cortex M3
-
IDE/Compilador – Keil
Como é sabido, o JTAG pode ser usado para programar e depurar o controlador. O principal uso do JTAG é quando você precisa trabalhar em uma lista enorme de códigos. Ele pode ser usado para adicionar pontos de etapa e de interrupção em todo o código. A imagem abaixo mostra o diagrama de pinos do Explore ARM Cortex M3 (LPC1768). Possui um conector JTAG ARM de 20 pinos.
Conectando o hardware:
Fig. 1: Diagrama de pinos do Explore ARM Cortex M3 LPC1768
Deve-se observar que conectar o depurador à placa não irá ligá-lo. Um adaptador de energia externo precisa ser conectado à placa. Depois que o hardware estiver configurado, podemos passar para a parte do software.
Selecionando o depurador
-
Clique na aba Projetos e depois em “Opções para Target” (ATL + F7)
-
Clique na aba “Depurar”
-
A seleção padrão é “Simulador”. Altere a seleção para “Nome do seu depurador”.
-
Clique em “OK” para prosseguir
Fig. 2: Selecionando o depurador
Opções de depuração para NXP LPC1768:
Agora, selecione a guia Depurar. No painel direito da janela atual, você encontrará um botão de opção chamado “Usar”. Na lista suspensa, selecione o nome do depurador que você está usando.
Fig. 3: Opções de depuração para NXP LPC1768
Opção de utilitários para o NXP LPC1768:
Clique na guia “Utilitários” e você verá uma janela conforme mostrado abaixo.
Fig. 4: Opção de utilitários para o NXP LPC1768
Selecione o mesmo depurador escolhido na janela anterior. O botão “Configurações” nesta janela mostrará as mesmas opções da janela Debug. É altamente recomendável que as opções Debug e Utilities sejam configuradas antes de prosseguir para “Configurações”.
Configurações de depuração/utilitários usando o NXP LPC1768:
Clique na tecla “Configurações” e confirme a aba Debug para obter a janela conforme mostrado abaixo.
Fig. 5: Configurações de depuração/utilitários usando o NXP LPC1768
Notas:
-
As configurações nas guias “Depuração” e “Utilitários” precisam ser definidas antes de confirmar as configurações.
-
O link e o destino devem estar presentes para ver essas opções.
-
A opção “Stop after Bootloader” deve ser escolhida.
Opções de download de Flash para o NXP LPC1768:
Na guia “Flash Download”, confirme as opções conforme mostrado abaixo. Se desejar, marque a caixa de seleção “Redefinir e executar”.
Fig. 6: Opções de download de Flash para o NXP LPC1768
Se o espaço em “Algoritmo de Programação” estiver em branco, selecione “ADD” e selecione um nome na lista exibida abaixo.
Programas de depuração:
Invocar o depurador
-
Clique na Lupa na barra de ferramentas.
Ícone de ativação/desativação de depuração
-
Caso o modo “EVALUATION” do MDK esteja sendo utilizado, a mensagem mostrada abaixo aparecerá. Clique em “OK”.
Fig. 7: Caixa de diálogo do modo de avaliação
Mensagem com avaliação MDK
3.O Depurador executará as seguintes etapas:
.Apague o flash
.Baixe o código
.Reinicialize o microcontrolador e execute para o endereço Reset_Handler ou “main” dependendo das opções que foram definidas na configuração. Um possível log da janela será mostrado abaixo:
Fig. 8: Log de comando ao invocar o depurador
Log de comando ao invocar o depurador
4.Em seguida, a tela de depuração aparecerá.
Opções de execução do depurador
Fig. 10: Opções de execução do depurador
Opções de execução do depurador
Existem 7 opções de execução:
-
Redefinir microcontrolador
-
Execute o microcontrolador normalmente
-
Pare de depurar
-
Passo único, uma instrução de cada vez
-
Pular funções
-
Sair das funções
-
Corra para o cursor
Uma sessão de depuração típica pode consistir nas seguintes etapas:
-
Entre no modo Debug – o depurador será executado no endereço Reset_Handler (ou “main” se selecionado na configuração)
-
Clique no cursor em uma linha do código-fonte para iniciar a investigação
-
Clique no 7º opção para executar o programa no cursor. Todas as alterações de registro serão destacadas.
-
Clique no ícone Central para executar o código em uma única etapa, conforme necessário.
-
Se a etapa única entrar em um loop, use o 6º chave para sair dessa função.
-
Se não for necessária uma investigação mais aprofundada, use a segunda chave para correr a toda velocidade.
-
Para parar, use o 3terceiro chave.
-
Para reiniciar toda a sequência, use a primeira tecla
-
Para sair da sessão de depuração, selecione a lupa que está presente na barra de ferramentas principal.
Pontos de interrupção
Fig. 11: Ícones de ponto de interrupção
Existem 4 ícones de pontos de interrupção:
-
Coloque um ponto de interrupção na posição atual do cursor. Isso será mostrado como um ponto vermelho.
-
Um programa em execução irá parar no ponto de interrupção
-
Se o ponto de interrupção estiver em loop reiniciando o programa, ele irá parar no ponto de interrupção na próxima passagem.
-
Alternar: desabilitar/reativar um ponto de interrupção no cursor. Os pontos de interrupção desativados serão representados como um círculo aberto.
-
Desative todos os pontos de interrupção: eles serão representados como círculos abertos. Eles podem ser reativados individualmente.
-
Elimine todos os pontos de interrupção: todas as posições dos pontos de interrupção serão removidas.
Janela de observação
Várias janelas podem ser ativadas ou desativadas usando os ícones da barra de ferramentas.
Fig. 12: Opções para depurador no Windows
Opções de exibição do Windows para o depurador
As janelas que podem ser habilitadas ou desabilitadas são:
-
Janela de comando. (Mostrado por padrão)
-
Janela de desmontagem. (Mostrado por padrão)
-
Janela de símbolos (oculta por padrão)
-
Janela de registro (exibida por padrão)
-
Janela de pilha de chamadas (exibida por padrão)
-
Janelas de observação (ocultas por padrão)
-
Janelas de memória (mostradas por padrão)
Notas:
-
Quando Pilha de chamadas, Memória e Observação estão ativados, eles aparecerão no painel inferior direito.
-
Quando selecionado, a janela de símbolos aparecerá conforme mostrado abaixo:
Fig. 13: Janela de Símbolos
Diagramas de circuito
JTAG-Depuração-Com-LPC1768 |