Описание частей встроенной программы

Мы расмотрим элементы встроенной программы на Rust, которых нет в обычной программе для компьютера.

Для начала создайте новый проект из шаблона, запустите в терминале:

cargo generate --git https://github.com/CrabikBoards/crabik-app-template.git --name hello-crabik

И откройте созданный проект в VS Code (File > Open Folder в меню VS Code), далее откройте файл main.rs в папке src.

В файле вы увидите следующие новые элементы:

#![no_std]

Атрибут #![no_std] указывает, что программа не будет использовать модуль std, используемый при написании програм для ПК. Вместо этого он будет использовать модуль core, подмножество стандартного модуля, которая не зависит от операционной системы (ОС).

#![no_main]

Атрибут #![no_main] указывает, что программа будет использовать пользовательскую "точку старта" вместо точки по умолчанию fn main() {..}.

#[cortex_m_rt::entry]

Макрос #[cortex_m_rt::entry] добавляет к ниженаписанной функции main минимальный код необходимый для работы программы, создавая тем самым "точку старта". Функция не может возвращать какое либо значение и не может завершится, поэтому в конце функции есть вызов crabik_board::exit() которая безопасно "завершает" программу (по факту являясь безконечным циклом).