Я изучаю идеи использования Rust в многоцелевом встроенном проекте.
Текущая идея, которую я имею, - это иметь ящик для каждого MCU, который у меня есть. Ящик MCU будет содержать реализации для таких устройств, как GPIO, SPI и UART.
Система должна быть спроектирована так, чтобы ящик MCU мог быть выгружен в ящик другого MCU для нацеливания на этот новый MCU. Это также должно быть как можно проще.
Чтобы сделать это переключение прямо сейчас, вам также необходимо изменить файл .cargo / config в исполняемом проекте, из которого сборка запускается самостоятельно. Это делает переключение двухэтапным процессом, о котором когда-нибудь забудут.
По сути, я хочу, чтобы цель ящика применялась ко всей сборке.
Я провел несколько поисков в Интернете, чтобы узнать, было ли это раньше, но либо этого нет, либо мои навыки поиска заканчиваются.
Моя идея заключается в том, что сценарий сборки в ящике MCU может скопировать свои настройки в файл .cargo / config инстанциатора сборки.
То, что я представляю, как может выглядеть скрипт сборки (псевдо):
// Open the config file of the directory from which the build is done
dir = build_dir
config_file = open_or_create(dir + .cargo/config)
// Read the target of our own crate
my_target = open(.cargo/config).get_option(option: target)
// Set the target in the config file of the source
config_file.add_or_replace_option(option: target, value: my_target)
С чем-то вроде этого переключиться на другой MCU было бы очень легко. Это займет только изменение зависимости в файле TOML.
В качестве альтернативы, оно может быть перевернуто. Исполняемый файл может иметь скрипт сборки, который ищет ящик MCU и копирует настройки.
Мои вопросы:
- Возможно ли это?
- Это разумно?
- Есть ли лучший способ сделать это?