Firmware em Rust: estratégias de implementação e modelos de programação confiáveis visando aplicações concorrentes em tempo real

Detalhes bibliográficos
Autor(a) principal: Silva, Cecília Carneiro e
Data de Publicação: 2019
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Institucional da UFU
Texto Completo: https://repositorio.ufu.br/handle/123456789/26527
http://dx.doi.org/10.14393/ufu.di.2019.2040
Resumo: 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.
id UFU_7fd15fc6d4660dd39029811585830639
oai_identifier_str oai:repositorio.ufu.br:123456789/26527
network_acronym_str UFU
network_name_str Repositório Institucional da UFU
repository_id_str
spelling 2019-08-05T18:46:57Z2019-08-05T18:46:57Z2019-07-10SILVA, 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. Disponível em: http://dx.doi.org/10.14393/ufu.di.2019.2040.https://repositorio.ufu.br/handle/123456789/26527http://dx.doi.org/10.14393/ufu.di.2019.2040Os 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.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.CAPES - Coordenação de Aperfeiçoamento de Pessoal de Nível SuperiorDissertação (Mestrado)porUniversidade Federal de UberlândiaPrograma de Pós-graduação em Engenharia ElétricaBrasilhttp://creativecommons.org/licenses/by-nc-nd/3.0/us/info:eu-repo/semantics/openAccessCNPQ::ENGENHARIAS::ENGENHARIA ELETRICACyber Physical SystemsEngenharia ElétricaEngenharia de SoftwareSoftware EngineeringLinguagem RustRust LanguageFirmware em Rust: estratégias de implementação e modelos de programação confiáveis visando aplicações concorrentes em tempo realFirmware in Rust: reliable implementation strategies and programming models targeting concurrent and real-time applicationsinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisAlmeida, Marcelo Barros dehttp://lattes.cnpq.br/0711663486251657Coelho, Ernane Antônio Alveshttp://lattes.cnpq.br/9183492978798433Cunha, Márcio José dahttp://lattes.cnpq.br/5012626154282569Almeida, Rodrigo Maximiano Antunes dehttp://lattes.cnpq.br/4546176200819713http://lattes.cnpq.br/8907532853735780Silva, Cecília Carneiro e16060255354publicado no crossref antes da rotina xmlreponame:Repositório Institucional da UFUinstname:Universidade Federal de Uberlândia (UFU)instacron:UFUORIGINALFirmwareEmRust.pdfFirmwareEmRust.pdfDissertaçãoapplication/pdf12302083https://repositorio.ufu.br/bitstream/123456789/26527/4/FirmwareEmRust.pdfd069a02a3f23397a1b2b553b8aef3fd5MD54LICENSElicense.txtlicense.txttext/plain; charset=utf-81792https://repositorio.ufu.br/bitstream/123456789/26527/6/license.txt48ded82ce41b8d2426af12aed6b3cbf3MD56TEXTFirmwareEmRust.pdf.txtFirmwareEmRust.pdf.txtExtracted texttext/plain272120https://repositorio.ufu.br/bitstream/123456789/26527/7/FirmwareEmRust.pdf.txt5332475447605c89ad66ea8a511a9213MD57CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8811https://repositorio.ufu.br/bitstream/123456789/26527/5/license_rdf9868ccc48a14c8d591352b6eaf7f6239MD55THUMBNAILFirmwareEmRust.pdf.jpgFirmwareEmRust.pdf.jpgGenerated Thumbnailimage/jpeg1587https://repositorio.ufu.br/bitstream/123456789/26527/8/FirmwareEmRust.pdf.jpg5d2762b2a2e02dd9c80e80bd1dd02006MD58123456789/265272020-11-18 10:14:06.912oai:repositorio.ufu.br:123456789/26527w4kgbmVjZXNzw6FyaW8gY29uY29yZGFyIGNvbSBhIGxpY2Vuw6dhIGRlIGRpc3RyaWJ1acOnw6NvIG7Do28tZXhjbHVzaXZhLCBhbnRlcyBxdWUgbyBkb2N1bWVudG8gcG9zc2EgYXBhcmVjZXIgbm8gUmVwb3NpdMOzcmlvLiBQb3IgZmF2b3IsIGxlaWEgYSBsaWNlbsOnYSBhdGVudGFtZW50ZS4gQ2FzbyBuZWNlc3NpdGUgZGUgYWxndW0gZXNjbGFyZWNpbWVudG8gZW50cmUgZW0gY29udGF0byBhdHJhdsOpcyBkbyBlLW1haWwgIHJlcG9zaXRvcmlvQHVmdS5ici4KCkxJQ0VOw4dBIERFIERJU1RSSUJVScOHw4NPIE7Dg08tRVhDTFVTSVZBCgpBbyBhc3NpbmFyIGUgZW50cmVnYXIgZXN0YSBsaWNlbsOnYSwgby9hIFNyLi9TcmEuIChhdXRvciBvdSBkZXRlbnRvciBkb3MgZGlyZWl0b3MgZGUgYXV0b3IpOgoKYSkgQ29uY2VkZSDDoCBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBVYmVybMOibmRpYSBvIGRpcmVpdG8gbsOjby1leGNsdXNpdm8gZGUgcmVwcm9kdXppciwgY29udmVydGVyIChjb21vIGRlZmluaWRvIGFiYWl4byksIGNvbXVuaWNhciBlL291IGRpc3RyaWJ1aXIgbyBkb2N1bWVudG8gZW50cmVndWUgKGluY2x1aW5kbyBvIHJlc3Vtby9hYnN0cmFjdCkgZW0gZm9ybWF0byBkaWdpdGFsIG91IGltcHJlc3NvIGUgZW0gcXVhbHF1ZXIgbWVpby4KCmIpIERlY2xhcmEgcXVlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIMOpIHNldSB0cmFiYWxobyBvcmlnaW5hbCwgZSBxdWUgZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2UsIHRhbnRvIHF1YW50byBsaGUgw6kgcG9zc8OtdmVsIHNhYmVyLCBvcyBkaXJlaXRvcyBkZSBxdWFscXVlciBvdXRyYSBwZXNzb2Egb3UgZW50aWRhZGUuCgpjKSBTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSBjb250w6ltIG1hdGVyaWFsIGRvIHF1YWwgbsOjbyBkZXTDqW0gb3MgZGlyZWl0b3MgZGUgYXV0b3IsIGRlY2xhcmEgcXVlIG9idGV2ZSBhdXRvcml6YcOnw6NvIGRvIGRldGVudG9yIGRvcyBkaXJlaXRvcyBkZSBhdXRvciBwYXJhIGNvbmNlZGVyIMOgIFVuaXZlcnNpZGFkZSBGZWRlcmFsIGRlIFViZXJsw6JuZGlhIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgbGljZW7Dp2EsIGUgcXVlIGVzc2UgbWF0ZXJpYWwgY3Vqb3MgZGlyZWl0b3Mgc8OjbyBkZSB0ZXJjZWlyb3MgZXN0w6EgY2xhcmFtZW50ZSBpZGVudGlmaWNhZG8gZSByZWNvbmhlY2lkbyBubyB0ZXh0byBvdSBjb250ZcO6ZG8gZG8gZG9jdW1lbnRvIGVudHJlZ3VlLgoKU2UgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgYmFzZWFkbyBlbSB0cmFiYWxobyBmaW5hbmNpYWRvIG91IGFwb2lhZG8gcG9yIG91dHJhIGluc3RpdHVpw6fDo28gcXVlIG7Do28gYSBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBVYmVybMOibmRpYSwgZGVjbGFyYSBxdWUgY3VtcHJpdSBxdWFpc3F1ZXIgb2JyaWdhw6fDtWVzIGV4aWdpZGFzIHBlbG8gcmVzcGVjdGl2byBjb250cmF0byBvdSBhY29yZG8uCgpBIFVuaXZlcnNpZGFkZSBGZWRlcmFsIGRlIFViZXJsw6JuZGlhIGlkZW50aWZpY2Fyw6EgY2xhcmFtZW50ZSBvKHMpIHNldShzKSBub21lKHMpIGNvbW8gbyhzKSBhdXRvcihlcykgb3UgZGV0ZW50b3IgKGVzKSBkb3MgZGlyZWl0b3MgZG8gZG9jdW1lbnRvIGVudHJlZ3VlLCBlIG7Do28gZmFyw6EgcXVhbHF1ZXIgYWx0ZXJhw6fDo28sIHBhcmEgYWzDqW0gZGFzIHBlcm1pdGlkYXMgcG9yIGVzdGEgbGljZW7Dp2EuCg==Repositório InstitucionalONGhttp://repositorio.ufu.br/oai/requestdiinf@dirbi.ufu.bropendoar:2024-04-26T14:59:30.269709Repositório Institucional da UFU - Universidade Federal de Uberlândia (UFU)false
dc.title.pt_BR.fl_str_mv Firmware em Rust: estratégias de implementação e modelos de programação confiáveis visando aplicações concorrentes em tempo real
dc.title.alternative.pt_BR.fl_str_mv Firmware in Rust: reliable implementation strategies and programming models targeting concurrent and real-time applications
title Firmware em Rust: estratégias de implementação e modelos de programação confiáveis visando aplicações concorrentes em tempo real
spellingShingle Firmware em Rust: estratégias de implementação e modelos de programação confiáveis visando aplicações concorrentes em tempo real
Silva, Cecília Carneiro e
CNPQ::ENGENHARIAS::ENGENHARIA ELETRICA
Cyber Physical Systems
Engenharia Elétrica
Engenharia de Software
Software Engineering
Linguagem Rust
Rust Language
title_short Firmware em Rust: estratégias de implementação e modelos de programação confiáveis visando aplicações concorrentes em tempo real
title_full Firmware em Rust: estratégias de implementação e modelos de programação confiáveis visando aplicações concorrentes em tempo real
title_fullStr Firmware em Rust: estratégias de implementação e modelos de programação confiáveis visando aplicações concorrentes em tempo real
title_full_unstemmed Firmware em Rust: estratégias de implementação e modelos de programação confiáveis visando aplicações concorrentes em tempo real
title_sort Firmware em Rust: estratégias de implementação e modelos de programação confiáveis visando aplicações concorrentes em tempo real
author Silva, Cecília Carneiro e
author_facet Silva, Cecília Carneiro e
author_role author
dc.contributor.advisor-co1.fl_str_mv Almeida, Marcelo Barros de
dc.contributor.advisor-co1Lattes.fl_str_mv http://lattes.cnpq.br/0711663486251657
dc.contributor.advisor1.fl_str_mv Coelho, Ernane Antônio Alves
dc.contributor.advisor1Lattes.fl_str_mv http://lattes.cnpq.br/9183492978798433
dc.contributor.referee1.fl_str_mv Cunha, Márcio José da
dc.contributor.referee1Lattes.fl_str_mv http://lattes.cnpq.br/5012626154282569
dc.contributor.referee2.fl_str_mv Almeida, Rodrigo Maximiano Antunes de
dc.contributor.referee2Lattes.fl_str_mv http://lattes.cnpq.br/4546176200819713
dc.contributor.authorLattes.fl_str_mv http://lattes.cnpq.br/8907532853735780
dc.contributor.author.fl_str_mv Silva, Cecília Carneiro e
contributor_str_mv Almeida, Marcelo Barros de
Coelho, Ernane Antônio Alves
Cunha, Márcio José da
Almeida, Rodrigo Maximiano Antunes de
dc.subject.cnpq.fl_str_mv CNPQ::ENGENHARIAS::ENGENHARIA ELETRICA
topic CNPQ::ENGENHARIAS::ENGENHARIA ELETRICA
Cyber Physical Systems
Engenharia Elétrica
Engenharia de Software
Software Engineering
Linguagem Rust
Rust Language
dc.subject.por.fl_str_mv Cyber Physical Systems
Engenharia Elétrica
Engenharia de Software
Software Engineering
Linguagem Rust
Rust Language
description 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.
publishDate 2019
dc.date.accessioned.fl_str_mv 2019-08-05T18:46:57Z
dc.date.available.fl_str_mv 2019-08-05T18:46:57Z
dc.date.issued.fl_str_mv 2019-07-10
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv 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. Disponível em: http://dx.doi.org/10.14393/ufu.di.2019.2040.
dc.identifier.uri.fl_str_mv https://repositorio.ufu.br/handle/123456789/26527
dc.identifier.doi.pt_BR.fl_str_mv http://dx.doi.org/10.14393/ufu.di.2019.2040
identifier_str_mv 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. Disponível em: http://dx.doi.org/10.14393/ufu.di.2019.2040.
url https://repositorio.ufu.br/handle/123456789/26527
http://dx.doi.org/10.14393/ufu.di.2019.2040
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv http://creativecommons.org/licenses/by-nc-nd/3.0/us/
info:eu-repo/semantics/openAccess
rights_invalid_str_mv http://creativecommons.org/licenses/by-nc-nd/3.0/us/
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal de Uberlândia
dc.publisher.program.fl_str_mv Programa de Pós-graduação em Engenharia Elétrica
dc.publisher.country.fl_str_mv Brasil
publisher.none.fl_str_mv Universidade Federal de Uberlândia
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFU
instname:Universidade Federal de Uberlândia (UFU)
instacron:UFU
instname_str Universidade Federal de Uberlândia (UFU)
instacron_str UFU
institution UFU
reponame_str Repositório Institucional da UFU
collection Repositório Institucional da UFU
bitstream.url.fl_str_mv https://repositorio.ufu.br/bitstream/123456789/26527/4/FirmwareEmRust.pdf
https://repositorio.ufu.br/bitstream/123456789/26527/6/license.txt
https://repositorio.ufu.br/bitstream/123456789/26527/7/FirmwareEmRust.pdf.txt
https://repositorio.ufu.br/bitstream/123456789/26527/5/license_rdf
https://repositorio.ufu.br/bitstream/123456789/26527/8/FirmwareEmRust.pdf.jpg
bitstream.checksum.fl_str_mv d069a02a3f23397a1b2b553b8aef3fd5
48ded82ce41b8d2426af12aed6b3cbf3
5332475447605c89ad66ea8a511a9213
9868ccc48a14c8d591352b6eaf7f6239
5d2762b2a2e02dd9c80e80bd1dd02006
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFU - Universidade Federal de Uberlândia (UFU)
repository.mail.fl_str_mv diinf@dirbi.ufu.br
_version_ 1797425512337899520