RSS лента

Тарахтелка

Ныряем глубже в С на эмбедах. Общие впечатления.

Оценить эту запись
18.07.2018 в 19:56 (564 Показов)
https://github.com/speedcontrols/ac_sc_grinder

Закончили первый проход структурирования прошивки для регуля бормашинки. Всплыли новые подробности. Если писать на плавучке, то производительности не хватает. Ну не то чтобы кто-то надеялся, но при грамотном подходе с низкоуровневых оптимизаций никто не начинает. IMHO в долгосрочной перспективе гораздо важнее сначала сделать правильную архитектуру. В принципе можно было бы плюнуть, и поставить более дорогой stm32, но захотелось вспомнить детство и разобраться (с фиксированной точкой и т.п.).

Я как-то рассчитывал, что с PlatformIO быстро подключу нужные библиотеки и все будет хорошо. Ага, щаз...
  • Библиотеки с фиксированной точкой имеют левые привязки к фреймворкам, и просто не собираются.
  • В библиотеках эмуляции EEPROM куча левых define-ов, которые не переопределить.
Короче, возвращаемся к стандартному сишному аду, когда в проект копируются внешние исходники и что-то в них правится. Чуда не случилось.

Вообще я как-то привык, что качеством кода можно (и нужно) управлять. Например, я отношусь прошивке на С как к временному явлению (пока не готов rust), и не хочу глубоко нырять в освоение фреймворков. То есть, в проекте очень серьезно структурируется бизнес-логика (data flow), а самый нижний уровень лепится на скорую руку. Эдакий осознанный профессиональный говнокодинг. И тут выясняется, что с библиотеками (на нижнем уровне) до сих пор ад. Грустно.

Я это к тому, что PlatformIO штука клевая, но всех проблем не решает. Можно было бы конечно сделать нормальные библиотеки, но в том-то и дело, что сильно заморачиваться с С не хочется. Дотянем "как сумеем", а осенью перекатаем все на rust и станцуем на могилке С-шной прошивки.

Кстати, вот интересно, когда наличие FPU станет обязательным во всех микроконтроллерах. Мы уже пришли к тому, что 32-битный ARM с целочисленным умножением и делением - это нормально и совсем недорого. Еще бы плавучку, и можно было бы заниматься именно разработкой логики, не отвлекаясь на оптимизации.

Лет 20 назад я гордился тем, что умею оптимизировать код с учетом особенностей процессора. Со временем пришло понимание, что гордиться можно более интересными вещами . Глупо тратить больше половины времени на то, чтобы держать в голове низкоуровневые оптимизации. Это когда проект один, можно с ним возиться до посинения всю жизнь. А когда их много, и надо везде успеть, то упарываться с низкоуровневыми оптимизациями не рационально. Тем более если за это никто не заплатит .
Категории
Софт

Комментарии

  1. Аватар для ADF
    И тут выясняется, что с библиотеками (на нижнем уровне) до сих пор ад. Грустно.
    ИМХО делается только хуже. Так быстро сейчас все течёт и так много людей участвуют в написании (говно)кода, что преобладать начинает код низкого качества.

    когда наличие FPU станет обязательным во всех микро
    Мир ждёт unum или posit

    Правда не совсем понял, как регулятору для бормашины может нехватать мощности. Сколько там пидов и какая частота? Для примеру, обычная атмега 2560 в составе мозга для коптера успевала по 300 раз в секунду матрицы перемножать и обрабатывать несколько пидов.
  2. Аватар для Vitaly
    Говнокода всегда больше. Проблема в том, что хорошего вообще до сих пор не было, а не "надо поискать". Например libfixmath почему-то никто не догадался под PlatformIO обернуть.

    Цитата Сообщение от ADF
    Для примеру, обычная атмега 2560 в составе мозга для коптера успевала по 300 раз в секунду матрицы перемножать и обрабатывать несколько пидов.
    Это так, но подобный код усрёшься писать и поддерживать. Что какбэ подтверждает BetaFlight, где в определенный момент выпилили процы без поддержки плавучки.

    Насчет регулятора - лучше по ссылке исходники посмотреть, если есть вопросы.
  3. Аватар для lelik
    Много я слышал обещаний танцев на могилах С-шного кода. И где все эти танцоры?
  4. Аватар для Vitaly
    Пишут rust . Трекать прогресс можно тут https://github.com/rust-lang-nursery/embedded-wg. Где-то к осени должны добить эмбеды.
  5. Аватар для lelik
    Именно что пишут. Пока напишут, пока всех тараканов изведут, пока всяких библиотек наработают - появится еще что-нибудь модное, а руст, как и многое другое до него, забросят.
  6. Аватар для ADF
    (Прошу простить за оффтоп)
    На самом деле среди современных ЯП - есть много хороших, эффективных и очень грамотно спроектированных. Но это не гарантирует им популярность. На поверхность стихийно всплывает всякая фигня, типа JS и ПХП...
    Как пример хорошего - советую пощупать haxe. К настоящему моменту уже взрослый, оброс библиотеками и пригоден для боевого применения.
  7. Аватар для Vitaly
    Цитата Сообщение от lelik
    Именно что пишут. Пока напишут, пока всех тараканов изведут, пока всяких библиотек наработают - появится еще что-нибудь модное, а руст, как и многое другое до него, забросят.
    Да нормально там все, и биндинги сишные оно понимает. Речь конкретно про эмбеды, которые надо заставить работать без sdt. С этим пока есть нюансы.
  8. Аватар для Vitaly
    Цитата Сообщение от ADF
    (Прошу простить за оффтоп)
    Давай ты просто перестанешь постить мне в комменты болтовню на общие темы.