Universidade Federal De Campina Grande Centro De Engenharia Elétrica E Informática Coordenação De Pós-Graduação Em Informática
Total Page:16
File Type:pdf, Size:1020Kb
Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Coordenação de Pós-Graduação em Informática Desenvolvimento de Software para Dispositivos Móveis Baseados na Plataforma maemoTM Raul Fernandes Herbster Dissertação submetida à Coordenação do Curso de Pós-Graduação em Ciência da Computação da Universidade Federal de Campina Grande - Campus I como parte dos requisitos necessários para obtenção do grau de Mestre em Ciência da Computação. Área de Concentração: Engenharia de Software Linha de Pesquisa: Sistemas Embarcados Angelo Perkusich (Orientador) Hyggo Oliveira de Almeida (Orientador) Campina Grande, Paraíba, Brasil c Raul Fernandes Herbster, julho de 2008 FICHA CATALOGRÁFICA ELABORADA PELA BIBLIOTECA CENTRAL DA UFCG H417d 2008 Herbster, Raul Fernandes Desenvolvimento de software para dispositivos móveis baseados na plataforma maemo ™ / Raul Fernandes Herbster.─ Campina Grande, 2008. 185 f..: il. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal de Campina Grande, Centro de Engenharia Elétrica e Informática. Referências. Orientadores: Profº Dr. Angelo Perkusich, Profº Dr. Hyggo Oliveira de Almeida. 1. Engenharia de Software. 2. Dispositivos Móveis 3. Plataforma maemo I. Título. CDU – 004.41 (043) "DESENVOLVIMENTO DE SOFTWARE PARA DISPOSITIVOS MÓVEIS BASEADOS NA PLATAFORMA MAEMO(TM)" RAUL FERNANDES HERBSTER DISSERTAÇÃO APROVADA EM 23.07.2008 PROF. ANGELO PERKUSICH, D.Sc Orientador PROF. HYGGO OLIVEIRA DE ALMEÏDA, D.Sc Orientador PROF. ANTONIO MÁR NOGUEIRA DE LIMA, Dr. inador PROF. EVANDRO DE BARROS COSTA, D.Sc Examinador CAMPINA GRANDE - PB Resumo A crescente popularização de dispositivos móveis tem aumentado o interesse da indústria em produzir novos produtos que atendam aos requisitos dos usuários, cada vez mais exi- gentes. Aliado ao crescimento no consumo e à adoção de grandes empresas por produtos baseados em soluções open source, a Nokia lançou os produtos da linha Internet Tablet os quais utilizam a plataforma maemo, baseada no sistema operacional Linux. Documentação e ferramentas que facilitem o desenvolvimento são elementos fundamentais para a adesão de um grande número de desenvolvedores. Considerando tal fato, a comunidade maemo carece de i) um material didático com informações dispostas de maneira organizada e con- cisa para ajudar no aprendizado da plataforma maemo (arquitetura e desenvolvimento) e ii) ambientes de desenvolvimento com funcionalidades que facilitem a implementação, com- pilação, execução e testes (depuração e testes de unidade) de aplicações maemo. Neste trabalho, serão apresentados um documento que será utilizado para a publicação de um livro sobre a plataforma maemo, bem como duas ferramentas bastante importantes para o desen- volvimento de aplicações maemo: ESbox e PluThon. Além dessas contribuições, também é descrito um compilador JIT, desenvolvido também durante este trabalho, que utiliza o frame- work de compilação LLVM para processadores baseados na arquitetura ARM. i Abstract The large adoption of mobile devices has been taken into account by the industry to pro- duce new products that satisty requirements of the users. The users are becoming even more demanding. Considering the fact that the demanding of such devices is growing very fast and also the adoption of new open source based solutions by important mobile device com- panies, Nokia has released a new product line: the Internet Tablets. Such devices use the maemo platform, a Linux-based solution for embedded systems. Documentation and tools that make application development easier are essential elements for a massive adoption of the platform by the developers and, as a result, the success of a certain technology. Consider- ing this fact, the maemo community lacks of i) a teaching material arranged in an organized and concise way to help newbies on maemo platform (concepts related to architecture and development) and ii) development environments that help the implementation, compilation, execution and tests (debugging and unit tests) of maemo applications. In this work, it is pre- sented a document that is going to be used to publish a book on maemo platform, and also two very important tools to maemo application development: ESbox and PluThon. Besides these contributions, it is also described a JIT compiler, implemented during this work, for ARM-based processors that use LLVM compilation framework. ii Agradecimentos Agradeço a Deus pela força e coragem para ter chegado até este momento de minha vida. À minha familía, em especial meus adoráveis pais Pedro e Elvira, meus amados irmãos Adolfo e Yolanda, meus saudosos avós (Antônio, Zilda, Lauro e Iolanda), meus queridos tios e tias (em especial Albertina, por exercer o papel de minha mãe em Campina Grande) e todos os meus primos. Aos meus orientadores Angelo Perkusich e Hyggo Almeida, pelas tarefas, problemas, soluções, debates, revisões e sobretudo pela orientação, compreensão e força prestados du- rante a execução deste trabalho. A Marcos Morais, pelas conversas, idéias, dicas, ensinamentos, exemplos, soluções e por tudo mais que ele representa para os veteranos do Laboratório Embedded. A todos os meus colegas e amigos do Laboratório Embedded, em especial da sala 106: Kyller, Mateus, Gutemberg, Saulo, Paulo Sausen, Walter, Taciana, Zé Luís, Danilo, Olym- pio, Mário, Ádrian, Diêgo, Yuri, André, Glauber, Leandro Sales, Leandro Leal e Marcus Fábio. Quero também agradecer a amigos que me incentivaram bastante durante a realização deste trabalho e que, sem eles, o sucesso não seria completo: James, Makelli, Régis, Ma- rizilda, Elias, André, Camila, Ana Esther, Ianna, Mirela, Janine e Amanda. À Capes, pelo financiamento. A todos os servidores e funcionários da DSC e COPIN pelo apoio. Agradeço também a todos os meus ex-professores que serviram como bons ou maus exemplos de profissionais e cidadãos. iii Conteúdo 1 Introdução 1 1.1 Problemática . 3 1.2 Objetivo . 4 1.3 Relevância . 5 1.4 Organização . 5 2 Plataforma maemo 8 2.1 Histórico . 8 2.2 Visão Geral . 9 2.3 Sistema Operacional Linux . 10 2.3.1 Núcleo . 10 2.3.2 Processos . 11 2.3.3 Sistema de Arquivos . 13 2.4 Projeto da Plataforma . 16 2.4.1 Bibliotecas de Desenvolvimento . 17 2.4.2 Interface Gráfica . 18 2.4.3 Áudio e Vídeo . 20 2.4.4 Conectividade . 20 2.4.5 Outros Componentes . 21 2.5 Internet Tablets . 22 2.6 Conclusão . 22 3 Ambiente de Execução maemo 25 3.1 Introdução . 25 iv CONTEÚDO v 3.2 Componentes . 26 3.2.1 Navegador de Tarefas . 26 3.2.2 Barramento de Sessão D-Bus . 27 3.2.3 Carregador maemo . 29 3.2.4 Gerenciador de Janelas . 29 3.3 Gerenciamento do Estado da Plataforma . 29 3.4 Inicialização do Aplicativo . 30 3.4.1 Passagem de Variáveis de Ambiente . 32 3.5 Finalização do Aplicativo . 32 3.5.1 Armazenamento do Estado e Encerramento em Background . 33 3.5.2 Encerramento em Background . 33 3.5.3 Armazenamento do Estado da Interface Gráfica . 34 3.5.4 Armazenamento dos Dados do Usuário . 34 3.6 Gerenciamento de Janelas . 35 3.6.1 Empilhamento de Aplicativos . 36 3.6.2 Registro de Janelas no Navegador de Tarefas . 36 3.6.3 Encerramento das Janelas de Aplicações . 37 3.7 Problemas no Comportamento de Aplicações . 37 3.8 Conclusão . 38 4 Desenvolvimento de Aplicações 39 4.1 Introdução . 39 4.2 Ambiente de Desenvolvimento . 40 4.2.1 Criação de Projetos para a Aplicação . 44 4.2.2 Compilando e executando as aplicações . 44 4.2.3 Implantação e Instalação de Aplicações . 47 4.3 Suporte a Linguagens de Programação . 48 4.3.1 Integração da Aplicação com a Plataforma . 49 4.4 Conclusão . 51 5 Comunicação 52 5.1 Introdução . 52 CONTEÚDO vi 5.1.1 D-Bus . 53 5.2 D-Bus na Plataforma maemo . 59 5.2.1 Mensagens de Estado do Hardware . 60 5.2.2 Inicialização de Aplicativos . 62 5.2.3 Finalização de Aplicativos . 62 5.2.4 Armazenamento do Estado da Aplicação . 63 5.3 Conclusão . 63 6 Interface Gráfica 64 6.1 Introdução . 64 6.2 Componentes gráficos da plataforma maemo . 65 6.3 Layouts Gráficos . 66 6.3.1 Modelo baseado em eventos . 68 6.3.2 Módulos Principais . 71 6.4 Outras APIs de Interface Gráfica . 78 6.4.1 SDL . 78 6.4.2 Edje/Evas . 79 6.4.3 Qt . 80 6.5 Exemplo de aplicações . 81 6.6 Conclusão . 81 7 Multimídia 83 7.1 Introdução . 83 7.2 Módulos Principais . 84 7.2.1 ALSA . 85 7.2.2 ESD . 86 7.2.3 GStreamer . 87 7.3 Conclusão . 92 8 Conectividade 93 8.1 Introdução . 93 8.2 Subsistemas de conectividade . 95 CONTEÚDO vii 8.2.1 Acesso ao Celular . 96 8.2.2 Acesso à Internet . 97 8.3 Daemon de Conectividade maemo - ICd . 97 8.3.1 Decomposição . 97 8.3.2 Bluetooth Dial-up Networking . 100 8.3.3 WLAN . 101 8.3.4 Biblioteca LibConIC . 102 8.3.5 Bibliotecas Bluetooth . 102 8.4 Conclusões . 104 9 Segurança 105 9.1 Elementos de Desenvolvimento de Software Seguro . 105 9.1.1 Considerações sobre Segurança de Software . 105 9.1.2 Um Processo de Desenvolvimento Adaptado . 106 9.2 Análise de Ameaça . 106 9.2.1 Análise de Ameaça como Base de Software Seguro . 106 9.2.2 Como Conduzir Análise de Ameaças . ..