welcome: please sign in
location: Compiling_eLua

Compilando eLua & ARM Toolchain

Como parte dos estudos, decidi compilar eLua para caso um dia fosse necessário alterar seus fontes e subir minhas próprias modificações para a placa. O processo é simples, mas pode tomar alguns minutos de compilação.

Os passos envolvidos são:

1 - Compilação do toolchain para ARM (gcc, gdb, as, etc...).

2 - Compilação de eLua para uma das plataformas suportadas (target).

Neste exemplo, compilarei todo o toolchain e depois eLua para MBed. Todo o processo foi feito no Ubuntu 12.10. Há também formas de compilar para Mac OS/X, mas não serão descritas aqui, já que estes podem ser encontrados na documentação do toolchain, caso for preciso.

Compilando ARM Toolchain

Para começar, precisamos instalar as dependencias. No terminal, digite:

$ sudo apt-get install curl flex bison libgmp3-dev libmpfr-dev texinfo libelf-dev autoconf build-essential libncurses5-dev libmpc-dev -y

Isto instalará todas a dependências para que possamos compilar o toolchain. Após este passo, é necessários baixar os fontes do toolchain. Ter o git instalado é um pré-requisito. No terminal, digite:

$ git clone git://github.com/jsnyder/arm-eabi-toolchain.git

Isto criará um diretório chamado arm-eabi-toolchain/ . Entre neste diretório e digite:

$ make install-cross

Voilà! Levara algum tempo até o toolchain ser compilado e instalado. Aqui, usando Intel® Core™2 Duo CPU P7350 @ 2.00GHz × 2 demorou por volta de 17 minutos.

Se a compilação ocorreu com sucesso, no seu diretorio $HOME, foi criado o diretorio arm-cs-tools. Dentro deste diretório estão contidas as ferramentas para compilação de eLua. Aqui no meu caso, o diretorio é o /home/gduarte/arm-eabi-toolchain/

Agora é hora de colocar as ferramentas que acabamos de compilar no nosso PATH, que é a variável que determina onde os binários do sistema devem ser procurados. Como nosso toolchain foi compilado e instalado localmente (no diretorio de usuario, não acessível ao resto do sistema), devemos incrementar a variável PATH para que possamos chamar nossos binários sem ter que passar o path absoluto.

Se você usa bash, pode usar esse pequeno comando para incrementar a variável PATH dentro do seu ambiente:

$ echo PATH=$HOME/arm-cs-tools/bin:$PATH >> ~/.bashrc

Abra outro terminal e digite, por exemplo, arm-none-eabi-gcc. A saída deve ser exatamente assim:

arm-none-eabi-gcc: fatal error: no input files

compilation terminated.

Não se assuste, esta mensagem de erro é boa, quer dizer que nosso toolchain foi instalado com sucesso e já esta no no nosso PATH :-)

Agora passemos para o próximo passo, finalmente compilar eLua!

Compilando eLua

Assim como o toolchain, para compilar eLua, devemos satisfazer algumas dependências para que o script de compilação funcione. Para começar, precisamos instalar o luarocks, que é um pequeno sistema de pacotes para Lua (Lua mesmo, pois o sistema de compilação que usaremos para compilar o eLua é feito em Lua). Para tal, digite no terminal:

$ sudo aptitude install luarocks -y

Logo que o luarocks for instalado, vamos usa-lo para instalar outras dependências, o luafilesystem, lpack e md5, que são módulos de Lua usados pelo script de compilação. No terminal, digite:

$ sudo luarocks install lpack
$ sudo luarocks install luafilesystem
$ sudo luarocks install md5

Agora é hora de baixar e compilar os fontes de eLua para MBed :) Novamente, pegaremos os fontes à partir de um repositório git:

$ git clone git://github.com/elua/elua.git

Já com os fontes de eLua, entre no diretório 'elua' que foi criado. Este é o diretório onde estão contidos todos os fontes e scripts que precisamos para compilar eLua. Você pode dar um ls para olhar o que tem por dentro, olhar os fontes caso esteja curioso(a), enfim, faça o que desejar :)

Com tudo em mãos, podemos começar o processo de compilação. Existe um script chamado build_elua.lua, que é o script em Lua que usaremos para para criar nossa "imagem binária" que depois usaremos na MBed. Chamaremos esse script da seguinte forma:

$ ./build_elua.lua board=MBED prog

Você verá algumas mensagens de compilação. Caso nenhuma mensagem de erro seja emitida, uma imagem binária chamada elua_lua_mbed.bin deve ter sido criada. Coloque sua MBed na USB, monte o dispositivo, copie o arquivo elua_lua_mbed.bin para dentro da placa e aperte o botão acima pra reinicia-la. Agora é so acessar com seu emulador de terminal preferido. Eu particularmente uso screen:

$ sudo screen /dev/ttyACM0 115200 8n1

Seguem algumas capturas de tela:

Referencias

Enjoy! :D

Comentários

Dado: - Testei em 27/Dez/2012 e funcionou perfeitamente. Achei muito claro e bem explicado, super thanks!!! Sobre a última etapa, a geração do .bin convertendo o .elf, acredito que haja um parâmetro na chamada do script de build que adicione esta operação. Tinhamos isto na versão em SCONS (parâmetro prog) e se não temos ainda vou adicionar. Neste caso, ao final do build os dois arquivos serão gerados, o .elf e o .bin . Vou checar.

Dado: - Confirmando, a opção existe e o parâmetro é o mesmo do sistema anterior de build. Basta adicionar ao final da linha do comando lua build_elua.lua .......... o parâmetro prog que o .bin será gerado automaticamente ao final do build. Talvez valha a pena atualizar na receita no futuro mas tá tão boa que não chega a ser uma falha :)

Compiling_eLua (last edited 2015-05-18 16:47:28 by gabrielduarte)