Закончили первый проход структурирования прошивки для регуля бормашинки. Всплыли новые подробности. Если писать на плавучке, то производительности не хватает. Ну не то чтобы кто-то надеялся, но при грамотном подходе с низкоуровневых оптимизаций никто не начинает. IMHO в долгосрочной перспективе гораздо важнее сначала сделать правильную архитектуру. В принципе можно было бы плюнуть, и поставить более дорогой stm32, но захотелось вспомнить детство и разобраться (с фиксированной точкой и т.п.).
Я как-то рассчитывал, что с PlatformIO быстро подключу нужные библиотеки и все будет хорошо. Ага, щаз…
Библиотеки с фиксированной точкой имеют левые привязки к фреймворкам, и просто не собираются.
В библиотеках эмуляции EEPROM куча левых define-ов, которые не переопределить.
Короче, возвращаемся к стандартному сишному аду, когда в проект копируются внешние исходники и что-то в них правится. Чуда не случилось.
Вообще я как-то привык, что качеством кода можно (и нужно) управлять. Например, я отношусь прошивке на С как к временному явлению (пока не готов rust), и не хочу глубоко нырять в освоение фреймворков. То есть, в проекте очень серьезно структурируется бизнес-логика (data flow), а самый нижний уровень лепится на скорую руку. Эдакий осознанный профессиональный говнокодинг. И тут выясняется, что с библиотеками (на нижнем уровне) до сих пор ад. Грустно.
Я это к тому, что PlatformIO штука клевая, но всех проблем не решает. Можно было бы конечно сделать нормальные библиотеки, но в том-то и дело, что сильно заморачиваться с С не хочется. Дотянем “как сумеем”, а осенью перекатаем все на rust и станцуем на могилке С-шной прошивки.
Кстати, вот интересно, когда наличие FPU станет обязательным во всех микроконтроллерах. Мы уже пришли к тому, что 32-битный ARM с целочисленным умножением и делением - это нормально и совсем недорого. Еще бы плавучку, и можно было бы заниматься именно разработкой логики, не отвлекаясь на оптимизации.
Лет 20 назад я гордился тем, что умею оптимизировать код с учетом особенностей процессора. Со временем пришло понимание, что гордиться можно более интересными вещами 😃. Глупо тратить больше половины времени на то, чтобы держать в голове низкоуровневые оптимизации. Это когда проект один, можно с ним возиться до посинения всю жизнь. А когда их много, и надо везде успеть, то упарываться с низкоуровневыми оптимизациями не рационально. Тем более если за это никто не заплатит 😃.
И тут выясняется, что с библиотеками (на нижнем уровне) до сих пор ад. Грустно.
ИМХО делается только хуже. Так быстро сейчас все течёт и так много людей участвуют в написании (говно)кода, что преобладать начинает код низкого качества.
когда наличие FPU станет обязательным во всех микро
Мир ждёт unum или posit 😃
Правда не совсем понял, как регулятору для бормашины может нехватать мощности. Сколько там пидов и какая частота? Для примеру, обычная атмега 2560 в составе мозга для коптера успевала по 300 раз в секунду матрицы перемножать и обрабатывать несколько пидов.
Говнокода всегда больше. Проблема в том, что хорошего вообще до сих пор не было, а не “надо поискать”. Например libfixmath почему-то никто не догадался под PlatformIO обернуть.
Для примеру, обычная атмега 2560 в составе мозга для коптера успевала по 300 раз в секунду матрицы перемножать и обрабатывать несколько пидов.
Это так, но подобный код усрёшься писать и поддерживать. Что какбэ подтверждает BetaFlight, где в определенный момент выпилили процы без поддержки плавучки.
Насчет регулятора - лучше по ссылке исходники посмотреть, если есть вопросы.
Много я слышал обещаний танцев на могилах С-шного кода. И где все эти танцоры?
Именно что пишут. Пока напишут, пока всех тараканов изведут, пока всяких библиотек наработают - появится еще что-нибудь модное, а руст, как и многое другое до него, забросят.
(Прошу простить за оффтоп)
На самом деле среди современных ЯП - есть много хороших, эффективных и очень грамотно спроектированных. Но это не гарантирует им популярность. На поверхность стихийно всплывает всякая фигня, типа JS и ПХП…
Как пример хорошего - советую пощупать haxe. К настоящему моменту уже взрослый, оброс библиотеками и пригоден для боевого применения.
Именно что пишут. Пока напишут, пока всех тараканов изведут, пока всяких библиотек наработают - появится еще что-нибудь модное, а руст, как и многое другое до него, забросят.
Да нормально там все, и биндинги сишные оно понимает. Речь конкретно про эмбеды, которые надо заставить работать без sdt. С этим пока есть нюансы.
(Прошу простить за оффтоп)
Давай ты просто перестанешь постить мне в комменты болтовню на общие темы.
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"39c21abc3df9550077797d18":{"_id":"39c21abc3df9550077797d18","hid":349,"name":"Vitaly","nick":"Vitaly","avatar_id":null,"css":""},"3ff69d1e3df95500777955a3":{"_id":"3ff69d1e3df95500777955a3","hid":2659,"name":"ADF","nick":"ADF","avatar_id":null,"css":""},"44e896f03df95500777897b0":{"_id":"44e896f03df95500777897b0","hid":16248,"name":"lelik","nick":"lelik","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"5b4f631899707300771180e4","hid":23486,"title":"Ныряем глубже в С на эмбедах. Общие впечатления.","html":"<p><a href=\"https://github.com/speedcontrols/ac_sc_grinder\" class=\"link link-ext link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"https://github.com/speedcontrols/ac_sc_grinder\" target=\"_blank\" rel=\"nofollow noopener\">github.com/speedcontrols/ac_sc_grinder</a></p>\n<p>Закончили первый проход структурирования прошивки для регуля бормашинки. Всплыли новые подробности. Если писать на плавучке, то производительности не хватает. Ну не то чтобы кто-то надеялся, но при грамотном подходе с низкоуровневых оптимизаций никто не начинает. IMHO в долгосрочной перспективе гораздо важнее сначала сделать правильную архитектуру. В принципе можно было бы плюнуть, и поставить более дорогой stm32, но захотелось вспомнить детство и разобраться (с фиксированной точкой и т.п.).</p>\n<p>Я как-то рассчитывал, что с PlatformIO быстро подключу нужные библиотеки и все будет хорошо. Ага, щаз…</p>\n<ul>\n<li>Библиотеки с фиксированной точкой имеют левые привязки к фреймворкам, и просто не собираются.</li>\n<li>В библиотеках эмуляции EEPROM куча левых define-ов, которые не переопределить.</li>\n</ul>\n<p>Короче, возвращаемся к стандартному сишному аду, когда в проект копируются внешние исходники и что-то в них правится. Чуда не случилось.</p>\n<!--cut-->\n<p>Вообще я как-то привык, что качеством кода можно (и нужно) управлять. Например, я отношусь прошивке на С как к временному явлению (пока не готов rust), и не хочу глубоко нырять в освоение фреймворков. То есть, в проекте очень серьезно структурируется бизнес-логика (data flow), а самый нижний уровень лепится на скорую руку. Эдакий осознанный профессиональный говнокодинг. И тут выясняется, что с библиотеками (на нижнем уровне) до сих пор ад. Грустно.</p>\n<p>Я это к тому, что PlatformIO штука клевая, но всех проблем не решает. Можно было бы конечно сделать нормальные библиотеки, но в том-то и дело, что сильно заморачиваться с С не хочется. Дотянем “как сумеем”, а осенью перекатаем все на rust и станцуем на могилке С-шной прошивки.</p>\n<p>Кстати, вот интересно, когда наличие FPU станет обязательным во всех микроконтроллерах. Мы уже пришли к тому, что 32-битный ARM с целочисленным умножением и делением - это нормально и совсем недорого. Еще бы плавучку, и можно было бы заниматься именно разработкой логики, не отвлекаясь на оптимизации.</p>\n<p>Лет 20 назад я гордился тем, что умею оптимизировать код с учетом особенностей процессора. Со временем пришло понимание, что гордиться можно более интересными вещами <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span>. Глупо тратить больше половины времени на то, чтобы держать в голове низкоуровневые оптимизации. Это когда проект один, можно с ним возиться до посинения всю жизнь. А когда их много, и надо везде успеть, то упарываться с низкоуровневыми оптимизациями не рационально. Тем более если за это никто не заплатит <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span>.</p>\n","user":"39c21abc3df9550077797d18","ts":"2018-07-18T15:56:08.000Z","st":1,"cache":{"comment_count":8,"last_comment":"5b574184997073007711cb7c","last_comment_hid":8,"last_ts":"2018-07-24T15:11:00.000Z","last_user":"39c21abc3df9550077797d18"},"views":892,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}