Exploring rust for embedded and critical systems

Detalhes bibliográficos
Autor(a) principal: Pinho, André Brandão de
Data de Publicação: 2020
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
Texto Completo: https://hdl.handle.net/1822/79813
Resumo: Dissertação de mestrado integrado em Engenharia Informática
id RCAP_e708bdf17de1cb71399b641e7c0feacd
oai_identifier_str oai:repositorium.sdum.uminho.pt:1822/79813
network_acronym_str RCAP
network_name_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository_id_str 7160
spelling Exploring rust for embedded and critical systemsRust for critical systemsRust para sistemas críticosCritical systemsEmbedded systemsRustSistemas críticosSistemas embebidosEngenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e InformáticaDissertação de mestrado integrado em Engenharia InformáticaThe C programming language is perhaps the most widespread in the design of safety-critical systems. However, its adoption suffers from disadvantages because it lacks in safety, entailing extensive and expensive verification processes. There are other programming languages, such as Ada and SPARK, that offer safety features that automatically comply with the current safety standards. Nevertheless, the software industry continues to use C after all and its associated verification process to build safety-critical software. Rust is a modern programming language that promises to soften such insecurities by design, thus improving on the development of safety-critical software. Due to its ownership model, Rust can ensure memory safety at compile time. Because it is a systems programming language, it is also a promising language for embedded systems. The main aim of the project reported in this dissertation is to understand how Rust can alleviate the certification process of safety-critical software, while evaluating its maturity for embedded systems. We analyse in which platforms Rust is available and compare embedded Rust to other languages used in the safety-critical domain. This analysis consists in comparing Rust safety features with coding guidelines commonly used in the software industry. Some case studies are carried out, such as preemptive and cooperative scheduling (both in C and Rust to better understand the programming differences in these languages), a driver for an accelerometer and finally a program that uses the scheduler, the accelerometer and the leds of a micro-controller, where one thread reads acceleration values and another thread turns leds on/off according to such readings. The dissertation ends with an overview of the results obtained. Not only a comparison is given with coding guidelines used in industry, but also concerning the case studies developed. It also anticipates some important work that could be added, as well as some details where Rust could be improved to become prominent in the industry of safety critical software.A linguagem de programação C é talvez a que tem mais representação no design de sistemas críticos. Contudo, a sua utilização tem algumas desvantagens pois falha em segurança, o que resulta em processos de verificação extensos e dispendiosos. Existem outras linguagens de programação, como Ada e SPARK, que possuem funcionalidades de segurança que automaticamente correspondem aos standards de segurança. Apesar disso, o que se verifica é que a indústria continua a usar C e o consequente processo de verificação para desenvolver software crítico. Rust é uma linguagem moderna que promete atenuar tais inseguranças pelo design, melhorando assim o desenvolvimento de software crítico. Graças ao seu modelo de ownership, a linguagem consegue assegurar uma utilização da memória de forma segura no momento da compilação do código. Como Rust é uma linguagem de programação de sistemas, esta é promissora para ser usada nos sistemas embebidos. O objectivo principal desta dissertação é investigar como é que Rust pode suavizar o processo de certificação de software crítico, e avaliar a maturidade de Rust para sistemas embebidos. Assim, analisamos em que plataformas Rust está disponível e comparamos Rust embebido com outras linguagens utilizadas neste domínio. Esta análise consiste em comparar as características de segurança de Rust com as normas de codificação utilizadas na indústria. Alguns casos de estudo foram desenvolvidos, tais como schedulers preemptivos e cooperativos (tanto em C como em Rust para perceber melhor quais as diferenças em programar nestas linguagens), um driver para usar um acelerómetro e, por fim, um programa que faz uso do scheduler, acelerómetro e leds presentes no microcontrolador, tendo uma thread a ler valores de aceleração e outra thread a ligar ou desligar os leds de acordo com essas leituras. A dissertação acaba com uma visão global dos resultados obtidos. Não é feito apenas uma comparação com as normas de codificação usadas na indústria, como também uma comparação dos casos de estudo desenvolvidos. Também exploramos algum trabalho importante que pode ser desenvolvido no futuro, bem como alguns detalhes onde a linguagem pode ser melhorada para poder fazer parte da indústria crítica.Bolsa Erasmus PlacementOliveira, José Nuno FonsecaCouto, Luís DiogoUniversidade do MinhoPinho, André Brandão de2020-01-092020-01-09T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttps://hdl.handle.net/1822/79813eng203018435info:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2023-07-21T12:00:16Zoai:repositorium.sdum.uminho.pt:1822/79813Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T18:50:08.766921Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse
dc.title.none.fl_str_mv Exploring rust for embedded and critical systems
Rust for critical systems
Rust para sistemas críticos
title Exploring rust for embedded and critical systems
spellingShingle Exploring rust for embedded and critical systems
Pinho, André Brandão de
Critical systems
Embedded systems
Rust
Sistemas críticos
Sistemas embebidos
Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
title_short Exploring rust for embedded and critical systems
title_full Exploring rust for embedded and critical systems
title_fullStr Exploring rust for embedded and critical systems
title_full_unstemmed Exploring rust for embedded and critical systems
title_sort Exploring rust for embedded and critical systems
author Pinho, André Brandão de
author_facet Pinho, André Brandão de
author_role author
dc.contributor.none.fl_str_mv Oliveira, José Nuno Fonseca
Couto, Luís Diogo
Universidade do Minho
dc.contributor.author.fl_str_mv Pinho, André Brandão de
dc.subject.por.fl_str_mv Critical systems
Embedded systems
Rust
Sistemas críticos
Sistemas embebidos
Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
topic Critical systems
Embedded systems
Rust
Sistemas críticos
Sistemas embebidos
Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
description Dissertação de mestrado integrado em Engenharia Informática
publishDate 2020
dc.date.none.fl_str_mv 2020-01-09
2020-01-09T00:00:00Z
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.uri.fl_str_mv https://hdl.handle.net/1822/79813
url https://hdl.handle.net/1822/79813
dc.language.iso.fl_str_mv eng
language eng
dc.relation.none.fl_str_mv 203018435
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron:RCAAP
instname_str Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron_str RCAAP
institution RCAAP
reponame_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
collection Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository.name.fl_str_mv Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
repository.mail.fl_str_mv
_version_ 1799132269381681152