• Nenhum resultado encontrado

Simulação de programas assembly para o HCS12 no CodeWarrior

N/A
N/A
Protected

Academic year: 2021

Share "Simulação de programas assembly para o HCS12 no CodeWarrior"

Copied!
7
0
0

Texto

(1)

UNIFEI – Universidade Federal de Itajubá

IESTI - Instituto de Engenharia de Sistemas e Tecnologia da Informação

ELT044 – Laboratório de Microcontroladores

Simulação de programas assembly

para o HCS12 no CodeWarrior

A simulação de programas em linguagem assembly para a família de microprocessadores HCS12 no ambiente de desenvolvimento CodeWarrior 5.1 deve seguir os seguintes passos:

Criação do projeto

Com o ambiente iniciado, acesse a opção de menu “Arquivo > Novo projeto...” ou o botão de acesso rápido “Novo projeto...”.

Na próxima janela que se abrir, selecione a linha de microprocessadores HCS12, família HCS12D e, por fim, a modelo com o qual trabalhar. Em nosso caso, trabalharemos com o modelo MC9S12DG256B.

Criação do projeto

Entrada de

(2)

Se o desenvolvimento for ser apenas simulado, escolha a opção de conexão de simulação completa do circuito integrado, mas caso o programa seja diretamente descarregado na placa Dragon123-Plus-USB, escolha a opção “monitor serial para o HCS12”. Com a escolha realizada, prossiga para o próximo passo.

Simulação Trabalho com a placa Dragon12-PLUS-USB

Como passo seguinte, escolha a opção de “assembly absoluto”, selecione um nome e também um diretório para o projeto e, então, prossiga para o próximo passo.

Neste passo, não adicione arquivos ao projeto e prossiga para a próxima etapa. Já no passo subsequente, selecione a opção de inicialização “nenhuma” e, então, acione o botão “Concluir”.

(3)

Com o projeto criado, acesse a opção de edição do arquivo “main.asm”. Esse arquivo foi criado pelo próprio ambiente e contém uma estrutura base de programação para o dispositivo selecionado.

A estrutura base sugerida pelo próprio ambiente não será utilizada e deverá ser substituída pela estrutura base apresentada na tabela abaixo.

Estrutura base de programas para o MC9S12DG256B

01: XDEFInicio

02: ABSENTRYInicio

03:

04: ORG $1000 ; Origem da memória de dados

05: VA: DC.B 02 ; variável A

06:

07: ORG $4000 ; Origem da memória de programa

08: Inicio: NOP 09:

10: ORG $FFFE

11: DC.W Inicio ; ponteiro para o vetor de RESET

12:

13: END

Neste ponto, a estrutura base pode ser editada de forma que o programa a ser desenvolvido seja implementado.

Simulação

Para iniciar a simulação do código-fonte implementado, deve ser acessada a opção de menu “Projeto > Depuração”. Este procedimento também pode ser iniciado por meio da tecla de atalho F5 ou ainda por meio do botão de acesso rápido “Debug”.

(4)

Ao início do processo de simulação, o código-fonte implementado é compilado e depois montado, de forma a se obter o arquivo com o código de máquina a ser simulado pelo ambiente. Caso haja qualquer erro de compilação ou montagem, o ambiente notificará tanto sobre a ocorrência de erros quanto com relação às linhas de ocorrência dos mesmos. A figura seguinte exemplifica a detecção de um erro na linha “LDaX Counter”. Uma vez corrigido o erro, o processo de simulação pode ser novamente requisitado.

Quando o código-fonte for corretamente compilado e montado, a interface de simulação será carregada e novas opções estarão disponíveis. Nesta nova janela, existem sete áreas distintas, as quais são: os botões de acesso rápido, a tela de exibição do código assembly com o qual se está trabalhando (A), a interface de acompanhamento das variáveis declaradas no código-fonte (B), a interface de entrada de comandos para o simulador (C), a interface de exibição da memória de programa (D), a interface de acompanhamento do contexto dos registros internos do microprocessador (E), a tela de acompanhamento de níveis de chamada (F) e a janela de acompanhamento de valores em memória (G).

(5)

Comandos de simulação

Para controlar a execução das instruções por parte do simulador devem ser utilizadas as opções de Iniciar/Continuar (A), Passo simples (B), Passo sobre (C), Passo de saída (D), Passo de montagem (E), Parada (F) e Reinício (G).

Uma vez iniciada a interface de simulação, o programa pode ser simulado de forma contínua por meio da opção de Iniciar/Continuar (A) a simulação. Tal opção faz com que o programa seja continuamente executado, instrução por instrução, até que um ponto de parada, que pode ser uma instrução de espera ou mesmo um ponto de para depuração, seja encontrado. Uma forma de parar a execução contínua do simulador é por meio da opção de parada (F).

Caso seja necessário aplicar um sinal de reinício ao processador, tal sinal pode ser requisitado por meio da opção de reinício (G). Essa opção força o carregamento do vetor de reinício (reset) no contador de programas e coloca a simulação em modo de espera de comandos.

(6)

Já uma forma de simular a execução de cada uma das instruções presentes no programa desenvolvido é por meio da opção de passo simples (B). Por meio dessa opção, apenas a instrução correntemente sinalizada pelo contador de programas (PC) é executada e então o simulador passa a esperar por um próximo comando. Essa opção opera de forma a executar um ciclo completo do ciclo de busca e execução de instruções do microprocessador, o que permite visualizar, por meio da janela de acompanhamento do contexto dos registros internos do microprocessador, qual foi o reflexo da execução da última instrução nos registradores de operação do microprocessador.

A opção de passo simples (B) permita com que o fluxo de execução seja direcionado a chamadas de sub-rotinas quando a instrução a ser executada corresponder a um desvio para sub-rotina. Uma forma similar de opção é a opção de passo sobre (C), por meio da qual um desvio para uma sub-rotina é simulado de forma transparente, de forma que a próxima instrução a ser simulada seria a próxima instrução presente no fluxo principal no qual ocorre a chamada à sub-rotina, mesmo embora todas as instruções da sub-rotina, inclusive a de retorno, sejam simuladas.

Por sua vez, a opção de passo de saída (D) permite com que sejam simuladas todas as instruções relacionadas a uma sub-rotina, até que uma chamada de retorno tenha sido encontrada pelo simulador. Em outras palavras, tal opção permite com que o fluxo de execução dentro de uma sub-rotina seja executado e o simulador entra em estado de espera tão logo a próxima instrução do fluxo que chamou a sub-rotina tenha sido encontrada.

A simulação por meio do ambiente em uso pode ser feita tanto para programas desenvolvidos em linguagem C quando em linguagem assembly. Quando um programa desenvolvido em linguagem de alto nível é simulado por meio do CodeWarrior, os comandos de execução de instruções são realizados tendo-se como parâmetro as instruções em alto nível, e não em baixo. Como cada linha de instrução em alto nível pode gerar uma ou mais linhas de instruções em linguagem assembly, a opção de passo de montagem (E) pode ser utilizada para, mesmo em alto nível, simular a execução de cada uma das instruções assembly associadas a instruções em alto nível. Para o caso da simulação de programas desenvolvidos em baixo nível, as opções de passo de montagem (E) e passo simples (B) são equivalentes.

Trabalho com pontos de parada para depuração

Uma forma bastante eficiente depurar programas é utilizar os chamados pontos de parada para depuração. Esta técnica, que pode ser utilizada tanto para simulações quando para a execução de programas em tempo real, é baseada na inclusão de pontos de parada forçados em localidades de interesse do programa a ser analisado. Uma vez incluídos os pontos de parada de interesse, pode-se pedir para a simulação ser iniciada ou continuada (opção A). Com a simulação em modo de execução, ao encontrar um ponto de parada forçada, a execução é automaticamente colocada em modo de espera justamente no ponto de inserção da parada.

A forma de inserir pontos de parada forçados é, estando no ambiente de simulação, acessar a opção de menu “Run > Control Points...”. Na janela que é carregada, deve se especificada a posição da memória na qual será inserido o ponto de parada e então adicionar tal ponto. Já para excluir um ponto de parada previamente inserido, basta selecioná-lo na relação de pontos existentes e, então, excluí-lo por meio do botão apropriado.

(7)

Uma outra forma de inserir ou remover pontos de parada é, estando-se no ambiente de simulação e com a janela de exibição do código assembly com o qual se está trabalhando ou com a interface de exibição da memória de programa, selecionar a linha/posição de memória na qual será inserido um ponto de parada e, então, escolher a opção de inserção ou de remoção de pontos de parada presentes no menu que pode ser acessado por meio do botão direito do mouse.

No exemplo seguinte, um ponto de parada forçado foi inserido na linha ABA, que corresponde ao endereço $4006 na memória de programa do processador. Para este caso, se for requisitado um comando de Iniciar / Continuar (A), o simulador executará as instruções LDAA VA e LDAB VB sequencialmente, parando a execução exatamente quando o contador de programa (PC) atingir a posição $4006.

Referências

Documentos relacionados

Como eles não são caracteres que possam ser impressos normalmente com a função print(), então utilizamos alguns comandos simples para utilizá-los em modo texto 2.. Outros

O empregador deverá realizar a avaliação ambiental de poeira de asbesto nos locais de trabalho em intervalos não superiores a seis meses.. Os registros das avaliações deverão

2. Identifica as personagens do texto.. Indica o tempo da história. Indica o espaço da história. Classifica as palavras quanto ao número de sílabas. Copia do texto três

Resultados: Os parâmetros LMS permitiram que se fizesse uma análise bastante detalhada a respeito da distribuição da gordura subcutânea e permitiu a construção de

Promovido pelo Sindifisco Nacio- nal em parceria com o Mosap (Mo- vimento Nacional de Aposentados e Pensionistas), o Encontro ocorreu no dia 20 de março, data em que também

Os maiores coeficientes da razão área/perímetro são das edificações Kanimbambo (12,75) e Barão do Rio Branco (10,22) ou seja possuem uma maior área por unidade de

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Se você vai para o mundo da fantasia e não está consciente de que está lá, você está se alienando da realidade (fugindo da realidade), você não está no aqui e