Diogo Duarte Comparação De Ferramentas De Desenvolvimento
Total Page:16
File Type:pdf, Size:1020Kb
Departamento de Eletrónica, Universidade de Aveiro Telecomunicações e Informática 2020 Diogo Comparação de Ferramentas de Desenvolvimento de Duarte Linux Embutido Comparison of Embedded Linux Development Tools Departamento de Eletrónica, Universidade de Aveiro Telecomunicações e Informática 2020 Diogo Comparação de Ferramentas de Desenvolvimento de Duarte Linux Embutido Comparison of Embedded Linux Development Tools Dissertação apresentada à Universidade de Aveiro para cumprimento dos requisi- tos necessários à obtenção do grau de Mestre em Engenharia de Computadores e Telemática, realizada sob a orientação científica do Doutor João Manuel de Oliveira e Silva Rodrigues, Professor auxiliar do Departamento de Eletrónica, Tele- comunicações e Informática da Universidade de Aveiro, e coorientação empresarial do Mestre Sérgio Paulo Santos Silva, Diretor Técnico da empresa Globaltronic - Electrónica e Telecomunicações, SA. o júri / the jury presidente / president Prof. Doutor Tomás António Mendes Oliveira e Silva professor associado da Universidade de Aveiro vogais / examiners committee Prof. Doutor António Manuel de Jesus Pereira professor coordenador c/ agregação do Instituto Politénico de Leiria Prof. Doutor João Manuel de Oliveira e Silva Rodrigues professor auxiliar da Universidade de Aveiro (orientador) agradecimentos / Sem dúvida de que todas as pessoas que conheci e com quem interagi contribuiram acknowledgements de alguma forma para a maneira com que eu cheguei a esta etapa da minha vida, e em consequência, a este trabalho. Contudo, gostava de dirigir umas palavras dire- tas de agradecimento às pessoas que contribuiram mais de perto para este projeto. Ao meu professor e orientador João Rodrigues, pela exelente orientação e paciência, mesmo quando ia perdendo o focus com projetos paralelos. Ao meu co-orientador empresarial Sérgio Silva, antes de mais pela oportunidade de poder desenvolver este projeto tão de perto na empresa, assim como pelo suporte e ajuda mesmo para coisas fora do projeto em si. Ao Salviano Soares, pela disponibilidade para me ajudar sempre que precisei e pela motivação para completar esta dissertação. Ao colaborador da Globaltronic Fábio Silva, o developer de Linux embutido da Glob- altronic, pela ajuda e disponibilidade para explicar as dúvidas que tive sobre esta e outras áreas de interesse. A todos os outros colaboradores da Globaltronic, pelas trocas de ideias e disponibilidade para me ensinarem. E por fim, mas sem dúvida não menos importante, à minha família e amigos mais próximos pela compreensão e apoio, mesmo nos dias mais estressantes. Palavras Chave linux embutidos, sistemas operativos, Armbian, Yocto. Resumo O crescente interesse na ligação de pequenos sensores à internet levou ao apa- recimento de sistemas operacionais capazes de operar em qualquer hardware as- segurando todas as funcionalidades de rede, interface gráfica, servidor, etc. A Globaltronic, uma empresa sedeada em Águeda, tem vindo a desenvolver a plata- forma de hardware WiiPiiDo, que se caracteriza por ser um computador embebido altamente especializado para IoT e capaz de assegurar a ligação às redes NB-IoT- LTE Cat NB1 (Narrow Band IoT), permitindo o rápido desenvolvimento de solu- ções IoT completas para os utilizadores. Por tudo isto, é indispensável criar uma imagem Linux que garanta a fácil utilização de todas as potencialidades da pla- taforma de hardware. Neste contexto, analisamos o Projecto Yocto, que oferece um sistema de desenvolvimento composto por diversas ferramentas para criação de distribuições Linux para sistemas embutidos, e que tem ganho popularidade numa grande comunidade de utilizadores, especialmente empresas. Contudo, o Yocto não é a única escolha da comunindade de desenvolvedores de sistemas embuti- dos. De facto, o Armbian, que é uma distribuição baseada em Debian/Ubuntu especializada para sistemas ARM, aparece como uma escolha popular para o de- senvolvimento de imagens nestes ambientes. Neste trabalho, iremos ver os passos necessários para testar a plataforma de hardware WiiPiiDo, desde o primeiro ar- ranque até ao desenvolvimento do sistema operativo de suporte, não esquecendo o desenvolvimento dos drivers de suporte aos dispositivos integrados e os testes de desempenho. No final, as ferramentas de desenvolvimento para a criação das ima- gens vão ser comparadas, desde os resultados obtidos nos testes de performance, ao sistemas de construção em si. Keywords embedded linux, operating systems, Armbian, Yocto. Abstract The increasing interest to connect small sensors to the internet took the develop- ment of operating systems able to operate in any hardware ensuring all network, graphical and server functionalities. Globaltronic, a company in Águeda, has de- veloped a hardware platform call WiiPiiDo, that can be described as a embedded computer, power by an ARM SoC, highly specialized for IoT, ensuring connection to the Internet even in harsh conditions using NB-IoT- LTE Cat NB1 (Narrow Band IoT), does ensuring rapid development of complete IoT solutions for end- users. The development of a Linux image that exposes all the potential of the hardware platform is a must and will provide extra value to it. In this context, we take a look at the Yocto Project, which is a building environment that allows the creation of such a operating system, and that is gaining a crescent community of users and specially enterprises. Nevertheless, Yocto is not the only choice for the developer community for embedded platforms, in fact, a distribution like Armbian, a Debian/Ubuntu based Distribution that is specialized for ARM boards, appears as a popular alternative for embedded development in ARM development boards. In this work we will see the steps necessary to test the first boot of the hard- ware platform until the development of the supporting operating system, passing through the driver development and performance tests. In the end, the used build system will be compared, from the results of the tests performance, to the build system in itself. Contents Contents i List of Figures iii List of Tables v Glossary vii 1 Introduction 1 1.1 The WiiPiiDo board . 3 1.2 Purpose and goals . 5 1.3 Thesis structure . 5 2 Linux Development Tools 7 2.1 Bootloader . 7 2.2 Kernel . 8 2.3 Device tree . 8 2.4 Device drivers . 9 2.5 Tools for developing a Linux image . 9 2.5.1 The BuildRoot development tool . 10 2.5.2 The Yocto Project . 10 2.5.3 The Armbian build system . 10 2.5.4 ELBE . 11 2.5.5 OpenWrt . 11 2.6 Comparison of development tools . 11 2.7 Synthesis . 14 3 Image Prototyping and Peripherals Integration 15 3.1 Bootloader validation . 16 3.1.1 Compiling the Bootloader . 16 3.1.2 Changing the configurations . 17 i 3.1.3 Booting . 18 3.1.4 Boot using FEL . 20 3.2 Creating a minimal Linux image . 20 3.2.1 Building the image . 21 3.2.2 Configuration menu . 21 3.2.3 Booting . 23 3.3 Peripherals integration . 24 3.3.1 Example: GPIO port . 25 3.4 Synthesis . 25 4 Building The Final Images 27 4.1 Building an image in Armbian . 27 4.1.1 Building a test image . 28 4.1.2 Adding support for the WiiPiiDo . 29 4.2 Building an image in Yocto . 31 4.2.1 Building a test Image . 33 4.2.2 Adding support for WiiPiiDo . 35 4.3 Synthesis . 37 5 Testing Results 39 5.1 Automatic peripherals validation . 39 5.1.1 Procedure . 40 5.1.2 Test examples . 40 5.1.3 Results . 42 5.2 Field test . 43 5.2.1 Procedure . 43 5.2.2 Results . 44 5.3 Synthesis . 46 6 Conclusions 49 6.1 Conclusions . 49 6.2 Contributions . 50 6.3 Future Work . 50 A Source Files 53 Referências 59 ii List of Figures 1.1 OS used in Internet of Things (IoT) devices . 1 1.2 Linux Distribution preference [4] . 2 1.3 The WiiPiiDo Board Components [8]. 5 3.1 The Universal Boot Loader (U-Boot) Missing BL31 Warning . 17 3.2 U-Boot Menuconfig Home . 18 3.3 WiiPiiDo to PC Serial Connection . 19 3.4 U-Boot First Boot . 19 3.5 BuildRoot menuconfig Home . 22 3.6 BuildRoot output images . 23 3.7 Device Validation Approach . 24 3.8 Missing GPIO sysfs interface. The /sys/class/gpio directory is absent. 25 4.1 Armbian Folder Structure . 27 4.2 Armbian Compilation . 29 4.3 Armbian Source Files Patch . 30 4.4 Poky Repository Structure . 31 4.5 Yocto Board Support Package (BSP) Layer Structure . 32 4.6 Armbian Build Process . 37 4.7 Yocto Build Process . 38 5.1 WiiPiiDo Test Utility (WTU) Output . 40 5.2 1-Wire Test jig Schematic . 41 5.3 Universal Serial Bus (USB)-Universal Asynchronous Receiver-Transmitter (UART) Bridge Test jig Schematic . 42 5.4 Field test setup . ..