1. 26 e 27 de Agosto, 2014
Transamérica Expo Center, São Paulo/SP
Lua em Sistemas
Embarcados
Linux
Vinicius Zein – Fundação CERTI
2. Fundação CERTI - Direitos Reservados
Quem somos
• Vinicius Zein
• Coordenador da Área de Sistemas
Embarcados, Centro de Convergência
Digital da Fundação CERTI
3. Fundação CERTI - Direitos Reservados
Quem somos
• Instituição de Pesquisa, Tecnologia e Inovação
• Criada em 1984 com a missão de desenvolver soluções
tecnológicas para produtos e processos
• Possui cerca de 500 colaboradores no grupo
• Privada, que reinveste o resultado em P&D
• Credenciada no MCTI e SUFRAMA, estando apta a
captar projetos de Lei de Informática, Lei do Bem e
Cooperação Internacional
• Mais de 500 empresas clientes no Brasil e exterior
• Crescimento de mais de 20% ao ano nos últimos 5 anos
• Reconhecimento e conquista de diversos prêmios,
como o Prêmio FINEP Nacional
4. Fundação CERTI - Direitos Reservados
Agenda
• O quê é Lua?
• Lógica de negócios em Lua
• Integração Lua e C++
• Lua em sistemas embarcados:
vantagens e desvantagens
• Testes em Lua
11. Fundação CERTI - Direitos Reservados
Business Logic with script
• Motivação:
• Processo de desenvolvimento e.g.
em C++:
1. Alterar código
2. Compilar
3. Deploy
12. Fundação CERTI - Direitos Reservados
Business Logic with script
• Processo de desenvolvimento com
script:
1. Alterar código
2. Compilar
3. Deploy
13. Fundação CERTI - Direitos Reservados
Business Logic with script
• Linguagens de script são simples de
se apreender
• Menor complexidade
• Importante
• Precisa ser integrável à linguagem
compilada (C, C++)
14. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
Por que Lua?
18. Fundação CERTI - Direitos Reservados
e também poderosa
• permite orientação a objetos
• permite estender aplicações em
outras linguagens
• pode ser estendida por bibliotecas
escritas em outras linguagens
19. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
• Exemplo 1
– User interface do Set-Top Box CERTI
20. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
21. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
• Exemplo 2
– Modificação do menu do STB Certi
22. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
• Exemplo 1
– Modificação do menu do STB Certi
23. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
24. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
25. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
26. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
27. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
• Exemplo 3
– Modificação da interface do IP Phone
28. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
• Exemplo 2
– Modificação da interface do IP Phone
29. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
30. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
31. Fundação CERTI - Direitos Reservados
Business Logic with script Lua
32. Fundação CERTI - Direitos Reservados
Integração Lua e C++
Linux
Módulo C++ Módulo C++ Módulo C++ Módulo C++
Lua
Bind
Bind
Bind
Bind
33. Fundação CERTI - Direitos Reservados
Integração Lua e C++
• 2 flavors
– Aplicação C++ inicializa scripts Lua
– Script Lua carrega biblioteca nativa
• É possível ter a combinação dos
dois
34. Fundação CERTI - Direitos Reservados
Integração Lua e C++
• Aplicação C++ inicializa máquina
Lua
• lua_State *lua_newstate (lua_Alloc f, void
*ud);
• void luaL_openlibs (lua_State *L);
• int luaL_dofile (lua_State *L, const char
*filename);
• int lua_pcall (lua_State *L, int nargs, int
nresults, int msgh);
• void lua_close (lua_State *L);
35. Fundação CERTI - Direitos Reservados
Integração Lua e C++
• Inicialização da máquina Lua
36. Fundação CERTI - Direitos Reservados
Integração Lua e C++
• Bind para ser usado em Lua
37. Fundação CERTI - Direitos Reservados
Integração Lua e C++
• Bind para ser usado em Lua
41. Fundação CERTI - Direitos Reservados
Integração Lua e C++
• Biblioteca C++ (?) em Lua
42. Fundação CERTI - Direitos Reservados
Lua e C++ - Vantagens
• Flexibilidade
• Separation of concerns
• Facilidade de reuso dos binds
• Facilidade de criar mocks e testes
• Facilidade de criar spikes
43. Fundação CERTI - Direitos Reservados
Lua e C++ - Atenção!
• GC Lua não vê recursos alocados
em objetos C++
• Conversão de tipos C++ em tipos
Lua e vice-versa
• Lua é single thread
44. Fundação CERTI - Direitos Reservados
Testes
• Testes unitários em Lua
• Uso de scripts para testar os binds
em C++
• Rodar testes em servidor de CI
46. Fundação CERTI - Direitos Reservados
Links úteis
www.lua.org
site principal para todas as coisas
Lua
lua-users.org/wiki/
wiki da comunidade Lua
www.lua.org/lua-l.html
Lua mailing list