Что Rust изменил в разработке прошивки NanoVNA

habrahabr.ru · world
Full story

A developer working on bare-metal firmware for NanoVNA-X-BM described what Rust changed in the process. With Rust, the goal is to let the compiler enforce more checks. But DMA can still change memory independently of existing references, a transmission error does not undo registers that were already written, and having no heap does not prevent stack overflow. The work involved sorting out which errors can be blocked through interfaces and what should be checked on a computer.

Когда пишешь прошивку на Rust, хочется поручить компилятору побольше проверок. Но DMA продолжает менять память независимо от существующих ссылок, ошибка передачи не отменяет уже записанные регистры, а отсутствие кучи не спасает от переполнения стека. При разработке NanoVNA-X-BM (bare metal) мне пришлось разобраться, какие ошибки можно запретить через интерфейсы, что проверять на компьютере и для чего всё равно нужен настоящий board. Расскажу, как разделил расчёты и аппаратные драйверы, зачем добавил примеры, которые не должны компилироваться, и почему проверяю не только код, но и готовый файл прошивки. Читать далее

Read full article → Compare