Tutorial Executando o Sistema Operacional ORCOS/DREAMS em placa de desenvolvimento Virtex II Pro Introdução Este documento tem por finalidade apresentar os procedimentos para a instalação do toolset necessário para a execução do sistema operacional ORCOS/DREAMS em uma placa de prototipação Xilinx Virtex II Pro utilizando o processador PowerPC. Os passos que devem ser executados são os seguintes: 1. Instalação completa do toolset; 2. Criação de um projeto para geração da infra-estrutura que permitirá o uso dos processadores PowerPC da placa; 3. Configuração do sistema operacional ORCOS/DREAMS; 4. Compilação do código fonte; 5. Upload dos arquivos binários na placa Virtex II Pro. Para seguir este tutorial, você vai precisar de: – Placa Xilinx Virtex II Pro Development System com memória externa instalada; – Cabos para comunicação com a Placa (Paralelo e PS2/USB); – Fonte de alimentação de 5V corrente contínua; – Cabo de conexão serial RS232; – Xilinx Platform Studio (XPS) 9.1i; – Conexão com a Internet para o download dos demais softwares. Etapa Inicial: Instalação e Configuração da Placa 1. É preciso conectar todos os cabos de comunicação na placa. O usuário tem a opção de escolher entre os JTAG (figura 2) ou USB (figura 1) para fazer o upload do bitstream (arquivos *.bit), dos arquivos binários gerados pelo compilador e também para fazer o debug da aplicação e do sistema operacional. IMPORTANTE: para a conexão paralela, é preciso conectar o cabo PS2 em uma das duas entradas Mini Din. Sem essa conexão, os programas não reconhecem a placa por completo. Figura 1: cabo USB Figura 2: Cabo JTAG paralelo e PS2 2. Conecte o cabo de comunicação RS232 na porta serial do computador e da placa (figura 3). IMPORTANTE: o cabo RS232 não deve ser invertido. Caso contrário, a comunicação entre a placa e o computador não irá funciona. 3. Ligue a fonte de 5V na conexão que se situa na parte superior esquerda da placa, próximo à chave Liga-Desliga (figura 4). Figura 3: porta de conexão serial Figura 4: cabo de alimentação A partir de agora, é possível configurar o sistema e determinar as características que a placa irá assumir para executar alguma aplicação, por exemplo, o endereçamento da porta RS232, memória, etc. Os passos seguintes consistem em escolher o processador, selecionar os dispositivos que serão utilizados, determinar o tamanho das memórias internas, externas, cache e os recursos da placa. IMPORTANTE: os tamanhos das memórias e a quantidade de dispositivos periféricos dependem da área disponível na FPGA. Deste ponto em diante, assume-se que o Xilinx Platform Studio (XPS) já está instalado no computador. O programa vem no pacote Embedded Development Kit (EDK) do ISE. As próximas telas demonstram uso do Wizard para geração da configuração da placa Virtex II Pro no Platform Studio. As telas ensinam como proceder passo-a-passo para configurar corretamente o projeto. Selecione a opção Base System Builder wizard: Figura 5: iniciando o wizard para a criação do projeto Em “Project file”, selecione uma pasta para salvar o projeto. Selecione a opção ”Set Project Peripheral Repositories” e selecione a pasta que contém as definições da placa. Figura 6: destino do projeto O pacote dos arquivos de definição da placa pode ser obtido no link http://www.digilentinc.com/Data/Products/XUPV2P/EDK-XUP-V2ProPack.zip Seguir com a seleção “create a new design”, e após, selecionar a placa que será utilizada. No nosso caso, selecionar a placa “XUP Virtex II Pro Development System”. Figura 7: criando o projeto Figura 8: escolha da placa Escolher o processador PowerPC. Em seguida, definimos o tamanho da memória interna para dados e instrução. Selecionar 16 KB e 32 KB respectivamente como mostra a figura 10. Figura 9: seleção do processador Figura 10: seleção de memória interna Na etapa seguinte, devemos selecionar quais dispositivos o sistema pretende utilizar na placa. Note que a opção de memória está selecionada por haver um módulo de 512 MB instalado. Desmarque a opção Ethernet_MAC, exige licença para funcionar. Figuras 11 e 12: seleção de periféricos Mais periféricos para serem escolhidos. Figuras 13 e 14: seleção de periféricos Determinamos a memória do controlador BRAM que interage com outros periféricos externos para 64 KB. A seguir, o programa oferece aplicações para teste de memória e periféricos. Desmarcar estas opções e deixar as opções de input, output e memória de boot padrão como mostra a figura 16. Figura 15: seleção de memória para controlador BRAM Figura 16: seleção para teste de memória e periféricos Confirmar todos os periféricos que serão instanciados. Note que nas descrições da placa (figura 17), a “On Chip Memory” está definida com 112 KB. Isto se deve aos 16 KB definidos para dados, 32 KB para instrução (figura 10) e 64 KB para o controlador BRAM (figura 15). A memória interna da placa possui apenas 128 KB. Após, clique em “Generate” e “Finish” na tela que confirma a criação do projeto. Figura 17: resumo do projeto criado Figura 18: confirmação da criação do projeto Ligue a placa e veja se os leds irão acender. Figuras 19 e 20: leds acesos ao ligar a placa Após, clicar em “download bitstream” o programa vai operar por alguns minutos criando e sintetizando os arquivos de identificação e endereçamento dos periféricos. Figura 21: enviando bitstream para a placa Se o procedimento for feito sem mensagens de erro na aba “Error”, o programa concluiu o upload do bitstream (figura 22). Aparece a tela seguinte, e o led “done” se acende na placa como mostra a figura 23. Figura 22: upload do bitstream concluído Figura 23: led indicando o upload bem sucedido Clique em “Addresses”. Perceba que nesta janela estão listados todos os periféricos e os seus respectivos endereços. Você vai precisar destes valores para a correta configuração do ORCOS posteriormente. Figura 24: endereços dos periféricos Segunda etapa: Instalando e Configurado o Toolset A partir de agora, a placa esta configurada e pronta para trabalhar executando um sistema operacional embarcado. Os passos seguintes irão guiar o usuário a preparar o ambiente de trabalho, ou seja, compilador e IDE para desenvolvimento e debug. O processo de instalação e configuração do toolset foi inicialmente publicado em https://orcos.cs.uni-paderborn.de/orcos/wiki/gettingstarted Você vai precisar fazer o download dos seguintes programas: – Java Virtual Machine (http://javadl.sun.com/webapps/download/AutoDL?BundleId=23111) – Eclipse IDE for C/C++ Developers (http://download.eclipse.org/technology/epp/downloads/release/ganymede/SR1/eclipsecpp-ganymede-SR1-win32.zip) – Cygwin 1.5.25xxx (http://www.cygwin.org/cygwin/setup.exe) É necessário também baixar o pacote “PowerPC EABI cross compiler” (https://orcos.cs.uni-paderborn.de/files/powerpc-eabi.zip) Após instalar o Java VM e o Cygwin com as bibliotecas para C++, o computador está pronto para executar a IDE Eclipse. O arquivo powerpc-eabi.zip deve ser extraído para a pasta “\usr\local” localizada dentro do diretório do Cygwin instalado. Extraia o pacote do Eclipse para o computador e execute o aplicativo. Escolha uma pasta para manter os projetos que serão criados. IMPORTANTE: Dê preferência a um nome que não contenha espaços. Como exemplo, estamos usando o destino “C:\workspace”. Figura 25: destino do sistema operacional Primeiramente, é preciso fazer uma atualização no programa, instalando o plugin SVN para o Eclipse. Clique em “Help” e em “Software Updates...”. Em seguida, selecione a aba “Available Software” e clique no botão “Add Site...”. Preencha a caixa de diálogo com o endereço http://subclipse.tigris.org/update_1.4.x como mostra a figura 27. Figuras 26 e 27: instalando atualizações no eclipse Ao clicar em OK, o endereço irá aparecer na lista de atualizações. Selecione a opção. As outras opções relacionadas abaixo serão automaticamente selecionadas como mostra a figura 28. Clique em “Install...”. Figura 28: seleção das atualizações Os itens de atualização aparecerão em uma nova tela para confirmação. Clique em “Next”. Na próxima janela, aceite os termos do acordo de licença e clique em “Finish”. Clique em “Yes” para reiniciar o programa para que as atualizações tenham efeito. Figuras 29, 30 e 31: instalação e confirmação das alterações do programa Vá em File, New, Project... . Clique na pasta SVN, clique na opção “Checkout Projects from SVN” (figura 33) e clique em “Next”. Figuras 32 e 33: criando um projeto Clique em “Next” na próxima tela (figura 34), e a seguir preencha a caixa de diálogo com o seguinte endereço https://orcos.cs.uni-paderborn.de/svn/unstable/trunk (figura 35). Clique em “Next”. Figura 34 Figura 35 Abrirá uma tela de validação de certificado. Clique em “Accept Permanently” (figura 36). Na próxima tela (figura 37), selecione a pasta ORCOS e clique em “Finish”. Aguarde a conclusão do download do sistema operacional e feche a tela de boas vindas do Eclipse. Figuras 36, 37 e 38: download do sistema operacional Aparecerá a área de trabalho do Eclipse com o ORCOS já disponível. Note que a pasta “configurations” foi aberta. É nela que contém os arquivos de configuração do sistema para rodar na placa. Figura 39: ambiente de trabalho no Eclipse Precisamos adicionar as definições do sistema para a execução na placa Virtex II Pro, que estão ausentes. Baixe o arquivo deste link “http://www.inf.ufrgs.br/ ~mawehrmeister/ORCOS/virtex2.rar”. Extraia a pasta “VIRTEX2” para o destino do projeto. No nosso caso, C:\workspace\ORCOS\configurations, e aperte F5. Figura 40: pasta com configurações para Virtex II Pro adicionada Terceira etapa: Configurando e Compilado o ORCOS/DREAMS O trabalho agora é estritamente relacionado às configurações que o sistema deve receber para rodar na placa. Iremos fazer algumas alterações nas linhas de alguns arquivos com a finalidade de manter a funcionalidade completa do sistema e da compilação. Na janela “Project Explorer”, acesse a pasta ORCOS\Configurations\VIRTEX2\ realtime01 e dê um duplo clique no arquivo Makefile. Neste arquivo contém todas as configurações dos caminhos das ferramentas que o compilador utilizará para construir o sistema operacional. Cheque a versão do GCC que vem na pasta “powerpc-eabi” que você extraiu no diretório /usr/local do Cygwin. No diretório bin contém um arquivo com nome “powerpceabi-gcc-‘x.x.x’.exe” os ‘X’ são os números da versão do arquivo. Este número deve ser o mesmo no arquivo Makefile, conforme mostrado na figura 41. Figura 41: Makefile aberto e versão do GCC O arquivo SCLconfig.xml, no mesmo diretório do Makefile, é o arquivo que identifica os periféricos de que o sistema dispõe. É nele que você vai associar os endereços dos periféricos que foram instalados com o bitstream criado no XPS (figura 24). O arquivo SCLdependencies.xml no diretório source mostra todas as configurações válidas. Figura 42: SCLconfig.xml aberto Na janela à direita do Makefile, clique na aba “Make Targets”, abra a pasta ORCOS\configurations\VIRTEX2\realtime01. clique com o botão direito encima da pasta realtime01 e clique em “Add Make Target” e crie a target “all”. Você deve fazer o mesmo para as targets “clean” e “xmdlocal” mudando as duas caixas de diálogo com os respectivos nomes. Estas targets chamam comandos contidos no Makefile. Figura 43: criação de uma make target Na mesma pasta do arquivo Makefile, abra o arquivo xmd.ini. Nele você encontra a configuração do dispositivo de comunicação e quais arquivos devem ser baixados para a placa. O arquivo deve ser configurado de acordo com o cabo que você estiver comunicando com a placa. Detalhes da configuração se encontram no capítulo 12 do documento disponível em http://www.xilinx.com/support/documentation/sw_manuals/ edk91i_est_rm.pdf. Figura 44: arquivo xmd.ini aberto Agora estamos prontos para compilar o sistema operacional. Vá na aba “make targets” novamente e de um duplo clique na target “all”. O programa começa a compilar o sistema operacional. Ao finalizar, aparece uma mensagem na aba console como apresentado abaixo na figura 45. Se tudo ocorrer sem problemas, os dados relativos ao arquivo kernel.elf gerado são mostrados. Figura 45: compilação do sistema operacional concluída Abra o arquivo task_main.cc no diretório tasks/FFTTasks. Nele está contido o código fonte da tarefa que será executada no sistema operacional na placa. O arquivo Makefile do mesmo diretório contém os parâmetros de compilação para o Eclipse. Confira a versão do GCC neste arquivo também. Figura 46: arquivo que contém o código fonte da tarefa a ser executada Para compilar a tarefa, dê um duplo clique em “xmdlocal” na aba “make target”. Note que os arquivos gerados, inclusive os já compilados do sistema operacional, são gravados no destino /cygdrive/c/xmd que corresponde a C:\xmd. Figura 47: compilação de tarefa e geração de arquivos concluída Quarta etapa: Depurando o Software Os próximos passos demonstram como preparar o ambiente de trabalho para o debug do sistema. Também vamos verificar a execução da tarefa e o funcionamento de alguns periféricos da placa. É necessário configurar na IDE do Eclipse o programa que irá executar o debug do sistema. Vá em Run, External Tools, External Tools Configurations. Clique em “New launch configuration”. Figuras 48 e 49: configurando o xmd para ser executado Na aba Main, você deve preencher as caixas de diálogo localizando o arquivo xmd.exe contido na pasta instalada do EDK no computador (ex. C:\Xlx\9.1i\EDK\Bin), e a pasta para a qual os arquivos compilados são copiados. Alterar a caixa de diálogo Name é opcional. Clique em “Apply” e “Run”. IMPORTANTE: Não esqueça de já ter baixado o bitstream do XPS para a placa (figura 22). Figura 50: localizando a ferramenta e os arquivos gerados O console deve mostrar uma mensagem de programa carregado, conforme figura 51. Figura 51: upload dos arquivos para a placa concluído A seguir, configuramos o debugger. Vá em Run, Debug Configurations. Em “C/C++ Local Aplication” clique em “New launch configuration” Figura 52: acessando as configurações do depurador Na aba Main, preencha as caixas de diálogo “Project” e “C/C++ aplication” localizando o sistema operacional e o arquivo compilado do sistema. O nome é opcional. Figura 53: localizando a aplicação a ser depurada A seguir, na aba “Debugger” selecione nas opções de debugger “gdbserver Debugger”. Na caixa de diálogo “Stop Startup at” preencha com "kernelmain". Abaixo, na caixa de diálogo GDB debugger na aba Main de “Debugger options”, localize o arquivo “powerpceabi.gdb.exe” que se encontra na pasta do pacote PowerPC EABI Cross Compiler extraído para a pasta do Cygwin (ex. /usr/local). Figura 54: configurando as opções de depuração Na aba Connection, Selecione o tipo TCP em Type e o número da porta 1234 como mostra a figura abaixo. clique em “Apply” e “Debug”. Figura 55: configurando a conexão para depuração Ao iniciar o debug, o eclipse muda de tela. Se for solicitado, localize o arquivo kernelmain.cc localizado no diretório source/kernel do ORCOS. O Eclipse irá pausar a execução do sistema operacional nos breakpoints. Breakpoints podem ser criados clicando duas vezes na barra azul do lado do código fonte, indicando a linha que se quer pausar a execução do sistema. Figura 56: depuração do sistema operacional sendo executada Após a inicialização do sistema operacional na placa, se os leds foram habilitados no arquivo SCLconfig.xml (figura 42), os leds 4 bits devem se acender indicando que o periférico foi iniciado. Figura 57: leds 4 bits inicializados pelo sistema Para testar a comunicação serial da placa, abra o Hyperterminal e crie uma nova conexão. IMPORTANTE: As opções da conexão devem seguir de acordo como o bitstream foi configurado (figura 11): 9600, 8, Nenhum, 1, Nenhum. Figuras 58, 59 e 60: criando uma nova conexão para comunicação serial Vamos compilar uma tarefa que envie um texto pela porta serial. Para isto, abra o arquivo task_main.cc. Adicione um comando que imprime uma mensagem na porta serial conforme apresentado na figura 61. Salve e compile o código. Figura 61: código adicionado à tarefa Vá em Run, External Tools, 1 XMD para baixar os novos arquivos para a placa. Você pode digitar o comando “run” no console para iniciar o sistema operacional sem a opção de debug (ver figura 62). Figura 62: comando para execução do sistema sem a depuração O Hyperterminal deve exibir a seguinte mensagem: Figura 63: mensagem enviada pela placa A documentação completa de como configurar o sistema operacional ORCOS encontra-se no link https://orcos.cs.uni-paderborn.de/doxygen/html/. Autor: William Menezes Junqueira da Silva ([email protected]) Revisão: Marco Aurélio Wehrmeister ([email protected]) LSE (Laboratório de Sistemas Embarcados) Instituto de Informática – UFRGS Última Atualização: 10/07/2009