Firmware em Rust: estratégias de implementação e modelos de programação confiáveis visando aplicações concorrentes em tempo real
Ano de defesa: | 2019 |
---|---|
Autor(a) principal: | |
Orientador(a): | |
Banca de defesa: | |
Tipo de documento: | Dissertação |
Tipo de acesso: | Acesso aberto |
Idioma: | por |
Instituição de defesa: |
Universidade Federal de Uberlândia
Brasil Programa de Pós-graduação em Engenharia Elétrica |
Programa de Pós-Graduação: |
Não Informado pela instituição
|
Departamento: |
Não Informado pela instituição
|
País: |
Não Informado pela instituição
|
Palavras-chave em Português: | |
Link de acesso: | https://repositorio.ufu.br/handle/123456789/26527 http://dx.doi.org/10.14393/ufu.di.2019.2040 |
Resumo: | 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. |