Please use this identifier to cite or link to this item:
https://repositorio.ufu.br/handle/123456789/26527
ORCID: | http://orcid.org/0000-0002-3032-2938 |
Document type: | Dissertação |
Access type: | Acesso Aberto |
Title: | Firmware em Rust: estratégias de implementação e modelos de programação confiáveis visando aplicações concorrentes em tempo real |
Alternate title (s): | Firmware in Rust: reliable implementation strategies and programming models targeting concurrent and real-time applications |
Author: | Silva, Cecília Carneiro e |
First Advisor: | Coelho, Ernane Antônio Alves |
First coorientator: | Almeida, Marcelo Barros de |
First member of the Committee: | Cunha, Márcio José da |
Second member of the Committee: | Almeida, Rodrigo Maximiano Antunes de |
Summary: | Os sistemas embarcados são vitais na transição para um mundo mais conectado. Eles se diferem dos tradicionais sistemas de informação por uma série de fatores, largamente influenciados, pela proximidade (interseção) com o “mundo real”. De forma geral, programas computacionais podem ser vistos, ou melhor, construídos sob duas perspectivas: seja a partir de uma visão próxima à máquina, ou através de abstrações de alto nível. No que tange os software embarcados, é nítido o domínio da primeira classe de atuação. As recentes falhas, todavia, propõe uma mudança de paradigma, ao acreditar que os métodos vigentes não são suficientes para lidar com as dificuldades contemporâneas. Rust, mesmo sendo uma linguagem de sistemas, se alinha com a segunda tendência de pensamento. Apoiada em verificações estáticas, e algumas validações dinâmicas, essa linguagem oferece ao desenvolvedor a possibilidade de, idiomaticamente, criar soluções confiáveis. Rust combina técnicas que, até então, eram restritas à linguagens de pesquisa, de uma forma surpreendentemente ergonômica e eficiente. O presente trabalho, amparado em modelos de computação pertinentes ao escopo, explora o uso dessa linguagem no contexto das aplicações microcontroladas. Após breve introdução, apresenta-se, como contribuição, uma biblioteca de abstração de hardware, em Rust, construída com a finalidade de traduzir propriedades “mecânicas” do hardware para abstrações seguras em software. Em seguida, são explicitados os mecanismos de controle da complexidade proveniente da natureza física dessas aplicações. Um modelo de temporalização via timer-wheels e dois padrões de construção de software, de alto nível, complementares o modelo de baixo nível (tarefas e recursos) pregado pela framework RTFM (Real-Time for The Masses) são as demais contribuições deste trabalho. Em suma, as técnicas aqui apresentadas foram pensadas para adaptar a linguagem Rust às características das aplicações embarcadas. O resultado são software mais confiáveis e seguros. |
Abstract: | Embedded systems are particularly vital in the transition to a more connected world. They differ from traditional information systems by a series of factors, largely influenced by proximity (intersection) with the "real world". In general, computer programs can be seen, or rather, constructed from two perspectives: either from a computer-oriented view, or through computation-oriented abstractions. With regard to embedded software, the domain of the first class of thinking is clear. The recent flaws, however, propose a paradigm shift, believing that current methods are not enough to deal with contemporary difficulties. Rust, even though it is a systems language, aligns with the second thinking trend. Based on static verifications, and some dynamic validations, this language gives the developer the possibility to create trustworthy solutions. Rust combines techniques that until then were restricted to search languages in a surprisingly ergonomic and efficient way. The present work, based on computation models pertinent to the scope, explore the use of this language in the context of microcontrolled applications. After a brief introduction, the contribution is presented, a hardware abstraction library, in Rust, built for the purpose of translating "mechanical" properties of the hardware into secure abstractions into software. Then, mechanisms to control the complexity coming from the physical nature of these applications are explained. A “timer-wheel” timing model and two high-level software building standards, complementary to the low-level model (tasks and resources) preached by the RTFM framework (Real-Time for The Masses) are the other contributions of this work. In short, the techniques presented here were designed to adapt the Rust language to the characteristics of embedded applications. The result is more reliable and secure software. |
Keywords: | Cyber Physical Systems Engenharia Elétrica Engenharia de Software Software Engineering Linguagem Rust Rust Language |
Area (s) of CNPq: | CNPQ::ENGENHARIAS::ENGENHARIA ELETRICA |
Language: | por |
Country: | Brasil |
Publisher: | Universidade Federal de Uberlândia |
Program: | Programa de Pós-graduação em Engenharia Elétrica |
Quote: | SILVA, Cecília Carneiro e. Firmware em Rust: estratégias de implementação e modelos de programação confiáveis visando aplicações concorrentes em tempo real. Dissertação (Mestrado em Engenharia Elétrica) - Universidade Federal de Uberlândia, Uberlândia, 2019. DOI http://dx.doi.org/10.14393/ufu.di.2019.2040. |
Document identifier: | http://dx.doi.org/10.14393/ufu.di.2019.2040 |
URI: | https://repositorio.ufu.br/handle/123456789/26527 |
Date of defense: | 10-Jul-2019 |
Appears in Collections: | DISSERTAÇÃO - Engenharia Elétrica |
Files in This Item:
File | Description | Size | Format | |
---|---|---|---|---|
FirmwareEmRust.pdf | Dissertação | 12.01 MB | Adobe PDF | View/Open |
This item is licensed under a Creative Commons License