MIKHAILOV, K. Rozšiřitelná knihovna v jazyce Rust pro podporu vývoje vestavěných senzorických aplikací na platformě ESP32 [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2024.
Domnívám se, že vytvořená knihovna může pomoci k většímu rozšíření či širšímu využití jazyka Rust v oblasti aplikací pro vestavěná zařízení. Realizační výstup, tj. knihovna a související dokumentace, byl s úspěchem otestován na reálném hardware, tj. platformě ESP32. V kontextu bodu 6) zadání došlo taktéž ke zveřejnění výsledků projektu pod open-source licencí. Velmi pozitivně taktéž hodnotím skutečnost, že technická zpráva byla vytvořena v angličtině. S ohledem na tyto i výše uvedené skutečnosti pak z pozice vedoucího navrhuji souhrnné hodnocení stupněm A - výborně , 90 bodů .
Kritérium | Známka | Body | Slovní hodnocení |
---|---|---|---|
Informace k zadání | V současné době je možno pozorovat neustále rostoucí popularitu jazyka Rust pro tvorbu vestavěných aplikací. Nicméně v případě platformy ESP32 není jakákoliv rozsáhlejší podpora usnadňující v tomto jazyce práci s interními hardwarovými prvky a externími komponentami aktuálně k dispozici. Cílem této bakalářské práce je tedy odstranění zmiňovaného nedostatku prostřednictvím rozšiřitelné knihovny, která by nabídla efektivní podporu vývoje vestavěných aplikací v jazyce Rust. V tomto případě se jedná o tzv. firemní zadání připravené ve spolupráci s brněnskou pobočkou společnosti Espressif. Z pozice vedoucího jsem velmi spokojen s dosaženými výsledky, které v úplnosti vyhovují požadavkům stanoveným zadáním. Dle informací z technické zprávy a hlavně na základě praktické demonstrace soudím, že vzniknuvší knihovna má poměrně velký potenciál napomoci většímu rozšíření jazyka Rust v kontextu vestavěných řešení. | ||
Práce s literaturou | Studentovi byly v počátečním období řešení projektu uděleny základní pokyny k práci s informačními zdroji, z nichž si pak převážnou většinu dokázal vyhledat samostatně. Domnívám se, že jednotlivé zdroje jsou v práci použity vhodným způsobem. | ||
Aktivita během řešení, konzultace, komunikace | Aktivita studenta byla v průběhu prakticky celého období řešení projektu na velmi dobré úrovni. Rozhodně je třeba v tomto směru ocenit jeho pečlivý a systematický přístup. Díky jeho vlastní iniciativě jsem byl pravidelně informován o aktuálním postupu prací a plánu na nejbližší období. Ke svolávání nějakých dalších konzultací pak nebyl v zásadě důvod. | ||
Aktivita při dokončování | Realizační výstup projektu byl spolu s technickou zprávou dokončen ve stanoveném termínu. Určitá časová rezerva pak umožnila provedení revize technické zprávy, do jejíž výsledné podoby byly promítnuty v zásadě veškeré připomínky a doporučení vedoucího. | ||
Publikační činnost, ocenění | Realizační výstup projektu, tedy knihovna pro podporu vývoje vestavěných řešení v jazyce Rust spolu s veškerou dokumentací, byla zveřejněna společností Espressif formou open-source. Další publikační činnost nebo zisk souvisejících ocenění mi pak nejsou známy. |
Despite some minor reservations I have mostly about the technical report I think that the student did an excellent job by designing and implementing an elegant library and providing some added value that was not required by the assignment. Because of this I recommend the rating 92 points (excellent) .
Kritérium | Známka | Body | Slovní hodnocení |
---|---|---|---|
Náročnost zadání | |||
Rozsah splnění požadavků zadání | The student designed and implemented a sensible abstraction layer library for interacting with peripherals and implemented support for several peripherals. The library is well documented and made publicly available in a repository on Github under the Apache 2.0 licence. The repository also contains illustrative examples and automated functionality to substitute for the unit tests required as part of item 5 of the assignment. Actual unit tests are missing. However, I do not think that this is a significant transgression due to the peculiarities of the field of embedded systems. Particularly when this library focuses purely on the interaction with actual hardware instead of providing business logic. Because of this, I consider the assignment fulfilled. Further, the student also created additional web-based documentation and implemented support for wireless networking and graphical displays in addition to simpler peripherals such as sensors which greatly expands the number of possible use cases. While not requested by the assignment the student also gathered and incorporated user feedback to some extent. | ||
Rozsah technické zprávy | |||
Prezentační úroveň technické zprávy | 85 | The quality of presentation is above average overall. The text follows a logical structure, has good cohesion and is coherent, which makes it easy to read whilst avoiding confusing the reader as the topics develop. In later parts this slightly worsens but the text is still well structured and easy to read. My main complaints are in respect to the parts of text that deal with existing solutions, peripheral devices, and design decisions in general. These provide information about their respective topics but do not explain well the relevance of the information and the reasoning involved in the decision process. | |
Formální úprava technické zprávy | 85 | With the exception of an occasional mistake in the usage of articles and a few places an incorrect word was used, I have no complaints regarding the language level and consider it to be very good. From the typographical standpoint the report is also very good but has a little room for improvement. Notably, the references to other sections are sometimes used ungrammatically, the styles used for visual text emphasis are sometimes inconsistent and mostly monospaced font is used for regular emphasis, or that the Czech quotation marks are used instead of the English ones. | |
Práce s literaturou | 85 | The goal of the work was to streamline the interaction with both hardware peripherals and their associated software drivers. It is clear that all the used components were studied. However, there is no reference and only minimal discussion regarding the actual topic of designing software that is to run on a microcontroller in a bare-metal setting. As providing a robust intermediate software layer in such setting was the goal of the thesis I think it is a shame that the student seemingly did not look into design patterns for embedded systems or similar topics. While the basis for the design choices is not well described the student did study similar projects. Despite this, the used references overall are in accordance with this kind of topic and are relevant. Their number is adequate and a reasonable and proper citation style is used. | |
Realizační výstup | 100 | The only reservations I have are regarding the user survey discussed in section 5.2 of the thesis. This survey seems to had been addressed in a non-systematic manner as it reports general sentiments but omits information such as the number of surveyed programmers. Further, there are positive statements on the address of the library which are not supported by data. However, since a survey was not required by the assignment, I appreciate and commend the student's consideration of this aspect and his decision to include a survey. Further, the student incorporated some of the feedback back into the library to improve it. Other than that, however, the implemented library and the supplementary files including configuration and documentation are beautifully crafted and executed. The repository is well structured and contains all the expected supplementary files and more, including the web-based version of the documentation and a file to ensure proper and unified formatting to improve readability and sustainability of the repository in the future. The code itself is well formatted, readable, and commented. Both the code and the provided usage examples are elegant and at least seem to be pleasant to work with. | |
Využitelnost výsledků | It is a purely practical project, goal of which is to provide a convenience abstraction layer to programmers who want to develop firmware for the products of Espressif Systems in the Rust programming language. Creating an abstraction layer library which manages to take into account a wide range of possible use cases in the field of embedded systems is not straightforward. One of the reasons is the sheer number of possible configurations this close to hardware. Therefore, whether the library will actually help to simplify someones workflow is something only time will show. However, the process of working with the library is elegant, and the project is properly published on GitHub. Its current state invites usage and supports further development, which is promising. |
eVSKP id 156827