makc 217 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба 1 минуту назад, Eddy_Em сказал: Я негативно к С++ отношусь, поэтому исключительно все на С пишу. Тогда зачем это предлагать? Чтобы потом снова возмущаться, зачем они это сделали? 3 минуты назад, Eddy_Em сказал: И, кстати, у тех же ST есть очень даже приличные сниппеты под STM32F0, которыми я пользуюсь. И создаю свои сниппеты. Сниппеты и HAL это разве не совсем разные вещи? И да, как ваши сниппеты тестируются и как подтверждается их качество, корректность реализации? Какими методами и средствами верификации? Про HAL я написал выше. 13 минут назад, Eddy_Em сказал: Кстати, что за издевательство над людьми здесь себе позволяют? Пишешь такой сообщение, пишешь, тратишь время. Никого не ругаешь, ничего не нарушаешь. Смотришь - а оно в /dev/null кануло! Сколько можно уже премодерацию терпеть? Нарушение правил форума привело вас к такому печальному итогу. И в этом никто кроме вас не виноват. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба 2 minutes ago, makc said: Тогда зачем это предлагать? Просто вспоминаю, как грызся я когда-то с @VladislavS, пока не увидел воочию, что у него очень оптимальный бинарник в итоге получается. До этого я считал, что С++ обязательно уйму мусора в бинарник поскладывает. Ан нет, как оказалось! И, спрашивается, если простой русский парень так может, то что стоит крутой компании вроде ST не городить убожество типа HAL'а, который только ардуинщики используют, а сделать красивую header-only библиотеку? 4 minutes ago, makc said: Сниппеты и HAL это разве не совсем разные вещи? Разные. Чтобы разобраться в хале, нужно читать помимо документации на МК еще и документацию на хал, периодически в его кривых исходниках ковыряясь. А чтобы разобраться в сниппетах, достаточно вытащить из них нужную часть инициализации, да посмотреть по RM, что там поменять под свои нужды надо (иногда и в RM не надо лезть, до того хорошо сниппеты самодокументированы). 5 minutes ago, makc said: как ваши сниппеты тестируются и как подтверждается их качество Прибор работает больше полугода без сбоев - значит, все хорошо. А о качестве "хала" мы все прекрасно знаем. В качестве примера достаточно вспомнить кривой USB-CDC, который мало того, что больше трех килобайт занимает, так еще и не позволяет по полной программе использовать возможности USB! Так что, не надо тут выдумывать о "верификации" кала! нет там никакой верификации. Кривой уродливый индусокод. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 217 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба 7 минут назад, Eddy_Em сказал: Прибор работает больше полугода без сбоев - значит, все хорошо. Гигантская статистическая выборка и железобетонное обоснование. Думаю дальше продолжать нет смысла. Все всё понимают. (С) 10 минут назад, Eddy_Em сказал: Так что, не надо тут выдумывать о "верификации" кала! нет там никакой верификации. Кривой уродливый индусокод. Снова эмоциональное и безосновательное утверждение на основе отсутствующего личного опыта использования HAL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба 13 minutes ago, Eddy_Em said: Прибор работает больше полугода без сбоев Пример сегодняшнего дня из КБ, где я работаю. Коллега разбирался с драйвером шины в приборе, который до этого работал массово и не в единичном экземпляре. Проблема оказалась в коде. Вылезло сейчас, возможно с установкой компонентов с другим значением какого-то параметра в пределах допуска. Мы и раньше встречались с тем, что один прибор не показатель. 100 приборов тоже не всегда показатель. Пара сотен прибор в течение нескольких лет вот это уже какой-то показатель. Что не отменяет аккуратной разрботки. Тем не менее, проблемы вылазят спустя несколько лет. Хотя до этого серия приборов выпускалась и работала без проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 217 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба 1 минуту назад, haker_fox сказал: Пример сегодняшнего дня из КБ, где я работаю. Коллега разбирался с драйвером шины в приборе, который до этого работал массово и не в единичном экземпляре. Вот и я о том же. Поэтому массовое использование библиотеки и её всестороннее тестирование позволяют иметь побольше уверенности в результате, чем в случае никому не известной поделки пусть даже гениального энтузиаста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 12 октября, 2021 Опубликовано 12 октября, 2021 (изменено) · Жалоба 14 minutes ago, makc said: массовое использование библиотеки и её всестороннее тестирование Опять напомнить о гигантских косяках "хала"? Или о его оверхеде? То, что его криворукие индусы писали, хоть сомнений нет у вас? Вместо того, чтобы написать "регистр=значение", народ гоняет туда-сюда всякие непонятные структуры, пишет дикие портянки кода… Ардуинство какое-то. Я уж молчу о том, что "хал" усложняет труд, т.к. приходится помимо даташита, errata и RM читать еще документацию на "хал" + ковыряться в его кривом коде, если наткнулся на очередной косяк. Если человек хочет, чтобы у него нормально работала железяка, он будет писать или на "голых регистрах", или сделает свою надстройку над ними. Но не будет использовать поделки безумных индусов! Изменено 12 октября, 2021 пользователем Eddy_Em Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 22 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба 41 minutes ago, Eddy_Em said: Зачем мне ее менять? Ты был риторический вопрос, шутка )) При этом еще активнее продолжаете "трясти своими медальками" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 217 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба 3 минуты назад, Eddy_Em сказал: Опять напомнить о гигантских косяках "хала"? Список в студию, а заодно ссылки на багрепорты в ST и реакцию ST на них. 4 минуты назад, Eddy_Em сказал: То, что его криворукие индусы писали, хоть сомнений нет у вас? Вы знакомы лично с авторами? Вам известен архитектор библиотеки и какие подходы он хотел реализовать? Думаю на оба вопроса ответ "нет", а само утверждение эмоциональное и имеет под собой не так много оснований. 7 минут назад, Eddy_Em сказал: Вместо того, чтобы написать "регистр=значение", народ гоняет туда-сюда всякие непонятные структуры, пишет дикие портянки кода… В большинстве мест там именно так и сделано, правда с помощью эквивалентных макросов, что по сложности итогового кода то же самое. 9 минут назад, Eddy_Em сказал: Ардуинство какое-то. Я уж молчу о том, что "хал" усложняет труд, т.к. приходится помимо даташита, errata и RM читать еще документацию на "хал" + ковыряться в его кривом коде, если наткнулся на очередной косяк. Вас, повторюсь, никто не заставляет его использовать. Забудьте о нем, будьте гениальным создателем мегаэффективных сниппетов на C и ассемблере. Все будут, поверьте, только рады. Особенно, если вы не будете постоянно писать в грубой форме одно и то же. 11 минут назад, Eddy_Em сказал: Если человек хочет, чтобы у него нормально работала железяка, он будет писать или на "голых регистрах", или сделает свою надстройку над ними. Но не будет использовать поделки безумных индусов! Решайте за себя, не мешайте другим идти своим путём. Вам же вроде никто не говорит в категоричной форме, что если вы не используете HAL, то вы не профессионал и т.п. Руководствуйтесь принципом взаимной терпимости. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба 11 минут назад, Eddy_Em сказал: Опять напомнить о гигантских косяках "хала"? Или о его оверхеде? То, что его криворукие индусы писали, хоть сомнений нет у вас? Вместо того, чтобы написать "регистр=значение", народ гоняет туда-сюда всякие непонятные структуры, пишет дикие портянки кода… Допускаю, что там много проверок "лишних" и т.п., но не понимаю всего трагизма: обычно это только на уровне инициализации периферии, а это ну пусть 5% кода. Или я чего-то упускаю? Кста, я сам плотно на своих либах сижу и тоже вставляю проверку/отладку, но отключаемую дефайнами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба 3 minutes ago, makc said: Список в студию Ну вы и сами погуглить можете. Я этой дрянью не пользуюсь, но периодически вижу вопли пользующихся, что у них то одно, то другое не работает. Про их кривой USB-CDC я уже сказал (сам участвовал в полемике на хабре, когда один товарищ решил, что это STM32 такой ограниченный, но он потом попробовал пару вариантов USB-CDC не от ST и понял, что виной лишь кривой код). 5 minutes ago, makc said: само утверждение эмоциональное и имеет под собой не так много оснований Достаточно посмотреть уродливый код, чтобы понять, что писал его не программист! 5 minutes ago, makc said: Руководствуйтесь принципом взаимной терпимости. Вы вот можете пройти мимо "лифта на ардуине"? Я - нет. Аналогично и с "халом". Использование HAL вместо вменяемых средств разработки - это как аврку использовать в качестве ардуины (со всеми этими псевдосиплюсплюсными "скетчами")! 5 minutes ago, adnega said: обычно это только на уровне инициализации периферии Не только. Иной раз нужно какие-то параметры быстро поменять, а тут - очередные ассерты... Я, кстати, поначалу пробовал opencm3 использовать. Наткнулся на грабли, когда надо быстренько остановить таймер, чтобы значение не изменилось, а оно не успевает... На регистрах все ОК было. А потом разработчики opencm3 поломали API, и я окончательно от нее отказался. До нее пробовал SPL, но там вообще треш адский, как и в наследнике - "хале". 7 minutes ago, adnega said: но отключаемую дефайнами. Там зачастую такого не предусмотрено. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 217 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба 15 минут назад, Eddy_Em сказал: Ну вы и сами погуглить можете. Я этой дрянью не пользуюсь, но периодически вижу вопли пользующихся, что у них то одно, то другое не работает. ЧТД. Вы прямо как в анекдоте: Цитата Встречаются два еврея. - Слышал "Битлз", не понравилось. Картавят, фальшивят, что только в них находят? - А где ты их слушал? - Мне Мойша напел. 15 минут назад, Eddy_Em сказал: Достаточно посмотреть уродливый код, чтобы понять, что писал его не программист! По себе людей не судят. Или вы считаете, что только вы и умеете писать правильно? Тогда почему мы не видим ни одной книги по программированию за вашим авторством? Или ваши труды известны лишь в крайне узких кругах? 15 минут назад, Eddy_Em сказал: Вы вот можете пройти мимо "лифта на ардуине"? Я - нет. Аналогично и с "халом". Я - могу, т.к. у меня есть множество других более интересных дел, чем раз за разом толочь воду в ступе. И для меня немного удивительно, что вроде бы неглупый человек типа вас так непроизводительно тратит свое время. Но это ваше право, я ни на чём не настаиваю, кроме соблюдения правил форума. 15 минут назад, Eddy_Em сказал: Там зачастую такого не предусмотрено. Все ассерты легко отключаются и ровным счётом никак не мешают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба 11 минут назад, Eddy_Em сказал: надо быстренько остановить таймер, чтобы значение не изменилось, а оно не успевает... На регистрах все ОК было. Это очень опасных подход в архитектуре ПО. Если таймер нужно остановить быстро, то это нужно делать аппаратно, а не программно. Иначе какой-нить обработчик прерывания легко десяток/несколько тактов насыпать может. Если архитектура будет корректная, то от качества библиотеки качество ПО будет слабо зависеть. Несколько раз сталкивался с обратной ситуацией, когда код становился быстрее и все переставало работать: например, включение АЦП в некоторых STM32 (F051, емнип). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба 1 minute ago, makc said: так непроизводительно тратит свое время Как непроизводительно? На форумах потрындеть - это ж святое ☺ А что до "хала", так если б я его использовал, то как раз непроизводительно время и тратил, т.к. а) мне пришлось бы больше документации читать, б) пришлось бы тратить больше время на написание этих диких портянок кода, и в) если бы пришлось поднять старый проект 5-7-летней давности и что-то там поменять, то в случае "хала" было бы проще с нуля заново написать!.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба Just now, adnega said: Если таймер нужно остановить быстро, то это нужно делать аппаратно, а не программно. Вот и нужно было в прерывании флажочки поменять, чтобы таймер следующий раз не сработал (на частоте в пару мегагерц - точно не помню уже). Подход, предлагаемый всеми кривыми библиотеками, в данном случае не приведет к нормальному результату (на один только переход в другую функцию тратится приличное количество ресурсов). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 12 октября, 2021 Опубликовано 12 октября, 2021 · Жалоба 1 час назад, Eddy_Em сказал: народ гоняет туда-сюда всякие непонятные структуры, пишет дикие портянки кода… Чем вам структуры не угодили? Они заполняются константными данными, оптимизатор с ними разбирается на раз два. Пример struct PORTS { uint32_t port_a; uint32_t port_b; uint32_t port_c; }; void foo(PORTS *ports) { if(ports->port_a > 10) GPIOA->ODR = ports->port_a; if(ports->port_b < 10) GPIOB->ODR = ports->port_b; GPIOC->ODR = ports->port_c; } int main() { PORTS x; x.port_a = 0; x.port_b = 1; x.port_c = 2; foo(&x); } Листинг // 22 PORTS x; // 23 x.port_a = 0; // 24 x.port_b = 1; // 25 x.port_c = 2; // 26 foo(&x); MOVS R0,#+1 LDR R1,??main_0 STR R0,[R1, #+0] MOVS R4,#+2 LDR R0,??main_0+0x4 STR R4,[R0, #+0] ??main_0: DATA32 DC32 0x50000414 DC32 0x50000814 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться