MC404 - Atualizado em: 19-Mar-2015 http://www.ic.unicamp.br/~celio/mc404-2014/docs/install-tools.txt Instalacao/testes do emulador qemu-user e da toolchain gcc-arm-none-eabi (launchpad) 1. Instalacao via apt-get (debian, Ubuntu): sudo apt-get update sudo apt-get install qemu-user sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded sudo apt-get install gcc-arm-none-eabi O arquivo .deb do qemu-user também pode ser obtido em: https://packages.debian.org/sid/amd64/qemu-user/download 2. instalacao via arquivo compactado (.bz2): A ultima versao (4.9) da toolchain "gcc-arm-none-eabi" pode ser baixada de: https://launchpad.net/gcc-arm-embedded/+download Ha versoes para windows, linux e mac. Para linux baixe: https://launchpad.net/gcc-arm-embedded/4.9/4.9-2014-q4-major/+download/gcc-arm-none-eabi-4_9-2014q4-20141203-linux.tar.bz2 e siga as regras de instalacao em: https://launchpad.net/gcc-arm-embedded/4.9/4.9-2014-q4-major/+download/readme.txt (*) Unpack the tarball to the install directory, like this: $ cd $install_dir $ tar xjf gcc-arm-none-eabi-*-yyyymmdd-linux.tar.bz2 For 64 bit system, 32 bit libc and libncurses are required to run the tools. Para este fim veja o item 4 no final. Você deve também inserir em $PATH o caminho para o diretorio bin. É conveniente fazer isto de forma permanente: renomeie (por conveniencia) o nome muito extenso do diretorio apos descompactacao, para, digamos, gcc-arm; se a toolchain foi colocada no diretório /home/seu-nome/gcc-arm insira esta linha no arquivo .bashrc: export PATH=/home/seu-nome/gcc-arm/bin:$PATH e reinicie o linux. ________________________________________________________________________ 3. Utilizacao das ferramentas de compilacao e depuracao Voce devera usar os scripts a seguir para compilar, executar e/ou depurar os seus programas. Para isto eh conveniente criar um diretorio para cada programa e nele editar o programa fonte e executar os scripts a serem descritos (e que criarao nesse diretorio o executavel a ser depurado). Os scripts deverao ser inseridos no "diretorio anterior" de forma que apenas uma copia sera usada em todos os testes: 3.1 Para compilar um programa em C (.c) ou em assembler (.s): ../gcc.sh nome-do-programa.x (x=c ou s veja o script gcc.sh a seguir) Script gcc.sh - use-o para compilar programas em C (.c) ou em assembler (.s) com as opcoes "semihosting", requeridas para o executavel poder ser emulado pelo qemu-user; o script retira a extensao (.c ou .s) e gera o executavel com o nome do programa sem a extensao; Importante: torne o script executavel via comando: chmod a+x nome-do-script #!/bin/sh file=$1 extension="${file##*.}" # nao usado file="${file%.*}" arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb --specs=rdimon.specs -lc -lrdimon -g $1 -o $file file $file # exibe o tipo do executavel ($file) gerado arm-none-eabi-objdump -d $file > $file.txt # "disassembla" o executavel no arquivo $file.txt a partir do rotulo "
:" _______________________________________________________________________ 3.2 Para executar um programa sob qemu: qemu-arm nome-do-executavel _______________________________________________________________________ 3.3 Para depurar um programa com qemu acoplado a gdb: qemu-arm -g 3333 nome-do-executavel ou invoque este script para o mesmo fim: ../qemu.sh nome-do-excutavel script qemu.sh: #/bin/sh qemu-arm -g 3333 $1 (a fim de evitar conflitos na xaveco.lab substitua a porta 3333 por 4 ou 5 digitos do seu RA)) e noutra janela "terminal" execute: ../gdb.sh nome-do-executavel script gdb.sh: #!/bin/sh arm-none-eabi-gdb -ex "target ext localhost:3333" $1 __________________________________________________________________________ No diretorio arm-exemplos o arquivo all.tgz tem todos os exemplos; baixe-o num diretorio do seu homedir e extraia todos os arquivos executando: tar xzvf all.tgz _________________________________________________________________________ 4. FIX TOOLCHAIN Dependendo do sistema pode ocorrer um erro misterioso com uma mensagem do tipo: "executavel nao encontrado" quando na verdade o executavel pode ser visto via comando "ls" (razao: se o sistema nao tem instalada a biblioteca de 32 bits ele nao executa os executaveis de 32 bis, mesmo quando corretamente instalados. Este eh o caso das tollchains Launchpad e "Sorcery Codebench" e do simulador do Prof Anido) Correcao: sudo apt-get install --reinstall libc6-i386 Voce deve instalar tambem a biblioteca de 32 bits do ncurses: sudo apt-get install lib32ncurses5 Para usar o simulador jarm do Prof Anido eh preciso tambem ter instalado o pacote JRE do Java: sudo apt-get install default-jre ___________________________________________________________________________________ 5. Acesso remoto à xaveco.lab.ic.unicamp.br Você pode fazê-lo via ssh no Linux ou PUTTY no Windows. A conexão via Windows é relativamente estável ao contrário da conexão via Linux. Observe tambem que você náo terá acesso a um editor gráfico come gedit. Use vim ou nano.