2009-09-26 17:00:44 +00:00
$$HEADER$$
< a name = "whatis" / > < h3 > O que é eLua ?< / h3 >
< p > < strong > eLua< / strong >
significa < strong > Embedded Lua< / strong > e o projeto projeto visa trazer a
funcionalidade completa da linguagem de programação < a href = "http://www.lua.org" > Lua< / a > para o mundo
do desenvolvimento de software embedded.< / p >
< p > A implementação busca oferecer isto de uma forma
2009-10-25 23:51:06 +00:00
simples, para que não só desenvolvedores experientes mas também iniciantes no mundo embarcado e até
mesmo usuários finais dos sistemas, possam desenvolver e alterar os
programas dos seus produtos.< / p >
2009-02-21 23:02:39 +00:00
2009-09-26 17:00:44 +00:00
< p > < strong > eLua< / strong > não é uma versão reduzida de Lua, muito pelo contrário, ela
oferece os recursos completos da versão desktop de Lua, complementando-a
ainda com características específicas para o uso embedded.
Oferece também a mesma possibilidade de escolha no uso de implementações diferentes
2009-10-25 23:51:06 +00:00
de Lua (ex: Lua Inteiro x Lua Ponto-Flutuante). Muito trabalho foi e ainda será feito no sentido de tornar Lua mais "amigável" no mundo embedded,
2009-09-26 17:00:44 +00:00
como as características já adicionadas que permitem a redução dos requisitos de memória.< / p >
< p > Lua é o exemplo perfeito de uma linguagem mínima e, ainda assim, totalmente funcional. Embora geralmente anunciada como uma linguagem de "scripting" (e utilizada
2009-10-25 23:51:06 +00:00
fortemente como tal na indústria de jogos e em tantas outras áreas), Lua é capaz de executar programas como qualquer outra linguagem
tradicional.
Grandes sistemas e aplicações (desktop ou web) hoje, são desenvolvidos utilizando
2009-10-13 02:14:27 +00:00
seu poder e sua performance (ex: Adobe Lightroom, World of Warcraft, ...).
2009-10-25 23:51:06 +00:00
Suas reduzidas necessidades de recursos de hardware, a tornam especialmente adequada para um grande número de famílias de microcontroladores.
2009-09-26 17:00:44 +00:00
A alta portabilidade intrínseca do código Lua original (que é ANSI C e funciona praticamente em todas as plataformas
que se conhece hoje), combinada com a arquitetura do software de < b > eLua< / b > , altamente portátil,
permite a migração fácil para uma grande variedade e arquiteturas de
microcontroladores.
2009-10-25 23:51:06 +00:00
As bibliotecas de acesso a periféricos disponibilizadas por < b > eLua< / b > também são portáteis por
2009-09-26 17:00:44 +00:00
definição, podendo-se assim executar um mesmo programa em Lua, sem ou com poucas
2009-10-25 23:51:06 +00:00
modificações, em qualquer hardware que "rode" < span style = "font-weight: bold;" > eLua< / span > (o < a href = "status.html" > status do projeto & roadmap< / a >
mostram uma lista sempre crescente de plataformas com suporte à < b > eLua< / b > ).
2009-09-26 17:00:44 +00:00
< b > eLua< / b > herdou o design minimalista e funcional de Lua, mantendo a filosofia bem conhecida do "< b > KISS< / b > " - "< i > Keep It Small and Simple< / i > ", que significa "Mantenha seu código
2009-10-25 23:51:06 +00:00
e sua arquitetura simples e sua complexidade reduzida".< / p >
2009-02-21 23:02:39 +00:00
2009-09-26 17:00:44 +00:00
< a name = "features" > < / a > < h3 > Recursos< / h3 >
2009-10-13 02:14:27 +00:00
< p > < b > eLua< / b > permite que você execute Lua diretamente no seu microcontrolador.
2009-09-26 17:00:44 +00:00
Um grande conjunto de módulos complementares já existe para a programação de periféricos < strong > eLua< / strong >
e o desenvolvimento de novos tem um crescimento cada vez mais rápido.< / p >
2009-10-25 23:51:06 +00:00
< p > Relacionamos a seguir algumas funções que estão prontas ou sendo implementadas:< / p >
2009-09-26 17:00:44 +00:00
< ul >
2009-10-25 23:51:06 +00:00
< li > um sistema de configuração do build flexível e um serviço de build
remoto via web< / li >
< li > acesso ao interpretador Lua diretamente na sua MCU, através de uma variedade de
protocolos de transportes físicos (RS-232, ethernet, ...)< / li >
2009-09-26 17:00:44 +00:00
< li > uma biblioteca de periféricos independentes de plataforma (PIO, UART, PWM, SPI, TMR, ADC, NET,
I2C, CAN ...)< / li >
2009-10-25 23:51:06 +00:00
< li > um File System (por enquanto apenas em ROM), fácil de ser portado para diferentes tipos de chips de memória e outros dispositivos de armazenamento< / li >
2009-09-26 17:00:44 +00:00
< li > um pequeno Fyle System FAT R/W, para cartões MMC e SD< / li >
< li > um shell próprio mínimo (para operações com arquivos, configuração do ambiente e outros recursos)< / li >
< li > suporte a redes TCP/IP< / li >
2009-10-25 23:51:06 +00:00
< li > um servidor http embedded escrito em Lua< / li >
< li > terminal/console via serial ou Ethernet< / li >
2009-09-26 17:00:44 +00:00
< li > depuração (diretamente no MCU ou remotamente com o PC)< / li >
< li > execução distribuida de código (LuaRPC)< / li >
< / ul >
< p > Para obter mais informações sobre as funcionalidades (implementadas e previstas) em < strong > eLua< / strong > veja a < a href = "status.html" > página de status< / a > .< / p >
2009-10-25 23:51:06 +00:00
< p > O projeto foi concebido de forma que migrar < strong > eLua< / strong > para uma outra plataforma
2009-09-26 17:00:44 +00:00
ou mesmo arquitetura, seja algo fácil de ser realizado.
2009-10-25 23:51:06 +00:00
Atualmente, esta migração está restrita às plataformas para as quais gcc + newlib
ou toolchains completos (ex:CodeSourcery) estejam disponíveis.
Esta restrição irá desaparecer em um futuro próximo, já que < b > eLua< / b > terá sua própria libc e portanto
2009-09-26 17:00:44 +00:00
estará disponível em um leque mais amplo de MCUs.< / p >
2009-10-25 23:51:06 +00:00
< p > Assim como para os ambientes Desktop, Lua em < strong > eLua< / strong > está disponível em duas implementações: "Lua padrão" (usando ponto flutuante) e "Lua inteiro" (usando inteiro).
2009-09-26 17:00:44 +00:00
"Lua padrão" realiza operações de ponto flutuante (mais lentas devido a emulação via software no MCU),
enquanto "Lua inteiro" realiza operações com números inteiros
(suporte para ponto fixo e ponto flutuante podem ser adicionados em módulos separados) e assim será mais rápido.< / p >
< a name = "audience" > < / a > < h3 > Público Alvo< / h3 >
< p > < span style = "font-weight: bold;" > eLua< / span > tem uma audiência ampla e
variada, desde recém-chegados ao mundo embedded que desejam um fácil e poderoso ambiente para prototipação,
desenvolvimento e produção rápida de aplicações, como desenvolvedores altamente
qualificados, que precisam expandir seus programas com recursos de
bibliotecas de alto nível com muita portabilidade.< / p >
2009-10-25 23:51:06 +00:00
< p > < span style = "font-weight: bold;" > eLua< / span > permite que programadores
com pouca experiência no mundo embedded utilizem a simplicidade
e o poder da linguagem de programação Lua, sem precisarem se preocupar com as complexidades e
da arquitetura do hardware em uso.
Utilizando < b > eLua< / b > , o programador pode concentrar-se na implementação do seu programa,
sem ter que se preocupar com detalhes de acessos à registros, configuração de periféricos e mesmo gerenciamento de memória.
2009-09-26 17:00:44 +00:00
Com isso, aumentamos a produtividade e eliminamos tarefas muitas vezes frustrantes de lidar com drivers
2009-10-25 23:51:06 +00:00
complexos de plataformas específicas. < stront > eLua< / strong > absorve a
complexidade das diversas arquiteturas, sem afastar demais o usuário do hardware.< / p >
2009-09-26 17:00:44 +00:00
< p > A lista abaixo resume o público-alvo de < b > eLua< / b > :< / p >
< ul >
< li > Desenvolvedores de sistemas embarcados que estão procurando uma maneira rápida, fácil de usar e uma poderosa forma de codificação.< / li >
< li > Novos programadores de sistemas embarcados (ou simplesmente programadores) que estão procurando uma maneira fácil de "mergulhar" no mundo da programação
embedded. < b > eLua< / b > é uma grande ferramenta de aprendizagem.< / li >
2009-10-25 23:51:06 +00:00
< li > Pessoas que não são realmente os desenvolvedores, mas ainda assim querem ser capazes de projetar
e prototipar sistemas embarcados de forma rápida e sem muita dor-de-cabeça, sem ter para isso que aprenderem a linguagem C.
2009-09-26 17:00:44 +00:00
(Designers, artistas, ...)< / li >
2009-10-25 23:51:06 +00:00
< li > Desenvolvedores de sistemas embarcados que necessitam de mecanismos poderosos de meta-linguagem, para codificar algoritmos complexos e descrição de dados.< / li >
< li > Engenheiros de campo que podem ir aos seus clientes realizar depuração de módulos de < b > eLua< / b > no local
ou mesmo remotamente, sem para isso necessitar de preparação, já que todo o ambiente de desenvolvimento reside em um chip.< / li >
2009-09-26 17:00:44 +00:00
< / ul >
< a name = "authors" / > < h3 > Autores< / h3 >
< p > < strong > eLua< / strong > é um projeto conjunto de < strong > < a href = "#contacts" > Bogdan Marinescu< / a > < / strong > , um desenvolvedor de software de Bucarest,
na Romênia e < strong > < a href = "#contacts" > Dado Sutter< / a > < / strong > , que
dirige o Laboratório LED Lab na < a href = "http://www.puc-rio.br/" > Pontifícia Universidade Católica, PUC-Rio< / a > , no Rio de
Janeiro, Brasil.< / p >
< p > Suas origens vêm dos projetos < a
href="http://www.circuitcellar.com/renesas2005m16c/winners/1685.htm">ReVaLuaTe< / a > ,
também desenvolvido pelo Bogdan Marinescu (como participante do concurso Renesas M16C Design de 2005) e do Projeto Volta,
desenvolvido por Dado Sutter na PUC-Rio entre 2005 e 2007.< / p >
< p > < strong > eLua< / strong > é um projeto Open Source e uma lista crescente de colaboradores pode ser encontrada na nossa < a
href="en_comunity.html#credits">página de créditos< / a > < / p >
< br / >
< table style = "width: 578px; height: 256px; text-align: left; margin-left: auto; margin-right: auto;" border = "1" cellpadding = "2" cellspacing = "2" >
< tbody >
< tr >
< td style = "text-align: center; font-family: Verdana; font-weight: bold;" > < big > Projeto ReVaLuaTe< / big > < / td >
< td style = "text-align: center; font-family: Verdana; font-weight: bold;" > < big > Projeto Volta< / big > < / td >
< / tr >
< tr >
< td style = "text-align: center;" > < img style = "width: 278px; height: 188px;" alt = "ReVaLuaTe project picture" src = "images/terminalreneseas.jpg" / > < / td >
< td style = "text-align: center;" > < img style = "width: 278px; height: 209px;" alt = "Volta project picture" src = "images/volta-small.jpg" / > < / td >
< / tr >
< / tbody >
< / table >
< br / >
< br / >
< br / >
< a name = "contacts" / > < h3 > Contatos< / h3 >
< p > Os autores de < strong > eLua< / strong > podem ser contactados em:< / p > < p > < strong > Bogdan Marinescu:< / strong > bogdan.marinescu -at- gmail.com< / p >
< p > < strong > Dado Sutter:< / strong > dadosutter -at- gmail.com< / p >
< p > Sejam bem-vindos e compartilhem suas dúvidas e sugestões em nossa < a href = "comunity.html#lists" > Lista de Discussão< / a > < / p >
< br / >
< br / >
< a name = "license" / > < h3 > Licença< / h3 >
< p > < strong > eLua< / strong > é Open Source e é distribuída gratuitamente sob a licença MIT.< / p >
< p > A licença MIT, diferentemente de outras licenças de código aberto (ex:
GPL), permite que produtos de código proprietário sejam desenvolvidos
utilizando < b > eLua< / b > .< / p >
< p > O código Lua (com todas as mudanças específicas de < strong > eLua< / strong > ) está incluído na árvore de origem e
é, naturalmente, licenciado sob a mesma < a href = "http://en.wikipedia.org/wiki/MIT_License" > licença MIT de Lua.< / a > < / p >
< p > Há ainda outros (poucos) componentes com diferentes licenças hoje, em uso no código de < strong > eLua< / strong > .
Consulte o arquivo < strong > COPYING< / strong > na distribuição fonte para maiores detalhes.< / p >
$$FOOTER$$