|
STM32F407: Ethernet, HAL + Lwip |
|
|
|
 |
Ответов
|
Jan 17 2017, 23:48
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Посмотрите с чего начиналась тема. Начали гнать на HAL от ST. Что по своей сути это такое? По сути это попытка создания универсальной библиотеки. Более того, в купе с генератором, это попытка создания универсального подхода. С моей точки зрения - он провалился. Хотя куча его использует и счастливы. Что предлагаете вы? Вы пытаетесь создать туже универсальную библиотеку, с универсальным подходом. Только 2 отличия. 1 - на С++. 2 - вы не ST. Простите - я лучше стамеской поработаю. Любая универсальная библиотека будет избыточна. И должна быть избыточна. Потому что универсальность и избыточность это одно и тоже. Меня не напрягает избыточность сама по себе. Камни сейчас обеспечивают - я не парюсь. Но весь мой опыт написания универсальных вещей, говорит что они не нужны. В принципе не нужны. Посмотрите HAL от ST на USART. Пипец. Я даже не представляю приложение куда это можно воткнуть!!! Получается, что для применения этой универсальной вещи потребуется обёртка большая по объёму, чем если бы я с нуля написал неуниверсальный драйвер. Я уже писал по этому поводу. Я делаю 2 уровня дров. Железозависимая часть и железонезависимая. Ну например SPI и ADC. Этот же SPI и DATAFLASH. USART -> MODBUS. Нижняя часть - это десяток строк. Дрова у меня в проекте занимают 2% по объёму и ещё меньше по времени. Отлаживаются на раз и к ним никогда не возвращаешься. А остальная часть проекта это как раз то, что я постоянно меняю. Даже если прибор аналогичный. Я видел несколько попыток создания универсальных платформ. В том числе на плюсах. Ни одна меня не впечатлила. Возможно вы от своей без ума. Но это не значит, что я был бы счастлив ей пользоваться. Или кто-то другой.
Теперь по поводу динамической памяти. В том проекте, о котором я писал примерно такое построение было... Поступают данные с внешнего интерфейса. Данные поступают в виде команд. Команды разной длины и разного времени жизни. Устройство выполняет команду и удаляет её. Получается, что одна команда могла выполниться и сразу удалялась, а другая выполнялась в течении длительного времени. В результате память дифрагментировалась. Поток команд был очень интенсивный. Объём памяти тогда на контроллере был 64к всего. Под кучу килобайт 30 было отведено. Уже не помню. Были бы проблемы это бы вылезло достаточно быстро. Устройство не выключалось. Работало круглосуточно. Не скажу что мы их много сделали. Ну несколько десятков было. А вот на плюсах как раз трудноустранимые утечки случаются. Парень писал для нас OPC сервер. На QT4 + VS. Была утечка памяти. Устранил только когда свой QSerialPort написал. Хотя я с той же версией QT+GCC писал прогу удалённого управления прибором и проблем не было. При этом для связи использовали те же классы. Вот такой вот пример.
|
|
|
|
|
Jan 18 2017, 00:13
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(SasaVitebsk @ Jan 18 2017, 02:48)  Что предлагаете вы? Вы пытаетесь создать туже универсальную библиотеку, с универсальным подходом. Только 2 отличия. 1 - на С++. 2 - вы не ST. Вы нифига ничего не поняли )) Я пытаюсь донести простую мысль, что грамотное построение (своевременное проектирование) проекта значительно упрощает жизнь при дальнейшей работе, в т.ч. и в других проектах. Искать баги в лаконично и грамотно спроектированном коде значительно проще. На С++ это сделать проще и нагляднее, чем городить огород из С-костылей (сужу исключительно по своему опыту). Нету у меня единой обертки под все железные дела, есть лишь заранее скомпилированные либы на базе индусской PeriphLib под разные ST-процы (сижу плотно на них). Правда, все же есть у меня один класс - Pin, он реализован под каждое семество, т. к. библиотечный код для управления пинами от ST в данном случае слишком тяжелый. Все остальное - по максимому чужое. Изобретать велосипед - уже не тот возраст )) Так как поддержка PeriphLib прекращена, похоже, придется переключаться на HAL, но по возможности по максимому буду использовать только объявления регистров и ессно cmsis. Но вся эта тряхомуть с железов закопана глубоко и при переноски модулей из одного проекта в другой почти ничего переписывать уже не нужно, кроме функционала самого модуля под конкретный проект. Цитата Любая универсальная библиотека будет избыточна. Еще раз - речь не об этом )) Я ни сколько не призываю использовать мой код (попросите, не дам), Я лишь продемонстрировал как применяется на примере класс синглтон и самое главное пример модульного построения проекта на основе одного из моих проектов. Есть у меня также самописный Iterator (изумительная вешь, я в восторге от ее простоты и функциональности!), Queue для управления списками (самописный простой), набор разных цифровых фильтров (шаблоны, т.е. не привязаны к типам данных) есть само собой Singleton, от которого наследуются все синглтоны (модули проекта).... Все это - шаблоны классов, т.к. просто hpp файлы. Вообще не зависят ни от какого железа. Готовые чужие реализации мне не понравились - слишком толстые и перегруженные всякой ненужной трухой. Впрочем, такого добра у каждого программиста полно. У каждого - свой ))
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jan 18 2017, 13:43
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(Forger @ Jan 17 2017, 19:13)  На С++ это сделать проще и нагляднее, чем городить огород из С-костылей (сужу исключительно по своему опыту). Опыт у всех разный и, соответственно, результаты и выводы. Вообще, универсально-идеального подхода/решения нет и не будет. Suum cuique.
--------------------
|
|
|
|
|
Jan 19 2017, 04:35
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(Forger @ Jan 18 2017, 14:31)  На самом деле есть идеально-универсальные решения, но они всегда основываются на новых более функциональных инструментах  Блажен, кто верует, тепло ему на свете!
--------------------
|
|
|
|
|
Jan 19 2017, 13:28
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(Forger @ Jan 19 2017, 01:52)  А другой долбил молотком по стамеске до конца дней своих ...  Продолжайте набор... Увы, не все на этом свете излечимо...
Сообщение отредактировал pitt - Jan 19 2017, 13:30
--------------------
|
|
|
|
Сообщений в этой теме
k000858 STM32F407: Ethernet, HAL + Lwip Jan 12 2017, 07:11 pitt Цитата(k000858 @ Jan 12 2017, 02:11) Пока... Jan 12 2017, 15:38 Мур Сам долго мучился с HAL, пока не скачал книгу
Mas... Jan 12 2017, 15:51 k000858 спасибо за советы. определенный смысл в них конечн... Jan 13 2017, 03:43 pitt Цитата(k000858 @ Jan 12 2017, 22:43) спас... Jan 13 2017, 13:13 SasaVitebsk Насколько вы описали проблему, мне кажется, что пр... Jan 13 2017, 18:12 k000858 Цитата(SasaVitebsk @ Jan 13 2017, 21:12) ... Jan 16 2017, 04:44  Forger Цитата(k000858 @ Jan 16 2017, 07:44) тако... Jan 16 2017, 14:24   SasaVitebsk Цитата(Forger @ Jan 16 2017, 17:24) Лично... Jan 16 2017, 21:16   Aner QUOTE (Forger @ Jan 16 2017, 18:24) Курим... Jan 16 2017, 21:51    Сергей Борщ QUOTE (Aner @ Jan 16 2017, 23:51) С++ и е... Jan 17 2017, 06:50     SasaVitebsk Цитата(Сергей Борщ @ Jan 17 2017, 09:50) ... Jan 17 2017, 07:19      Forger Синглтон я указал как самый популярный способ избе... Jan 17 2017, 08:29      Сергей Борщ QUOTE (SasaVitebsk @ Jan 17 2017, 09:19) ... Jan 17 2017, 12:12       Forger Цитата(Сергей Борщ @ Jan 17 2017, 15:12) ... Jan 17 2017, 14:32        SasaVitebsk Цитата(Forger @ Jan 17 2017, 17:32) Конеч... Jan 17 2017, 15:42         Forger Цитата(SasaVitebsk @ Jan 17 2017, 18:42) ... Jan 17 2017, 15:58        Сергей Борщ QUOTE (Forger @ Jan 17 2017, 16:32) Сингл... Jan 18 2017, 09:18         Forger Цитата(Сергей Борщ @ Jan 18 2017, 12:18) ... Jan 18 2017, 09:48     pitt Цитата(Сергей Борщ @ Jan 17 2017, 01:50) ... Jan 17 2017, 14:18  pitt Цитата(k000858 @ Jan 15 2017, 23:44) тако... Jan 16 2017, 16:03 SasaVitebsk В зависимости от текста... Как правило непредсказу... Jan 16 2017, 14:22 SasaVitebsk Стиль написания, конструирование программы и язык ... Jan 17 2017, 22:21 Forger Цитата(SasaVitebsk @ Jan 18 2017, 01:21) ... Jan 17 2017, 23:00  SasaVitebsk Цитата(Forger @ Jan 18 2017, 02:00) По ст... Jan 19 2017, 12:47   scifi Цитата(SasaVitebsk @ Jan 19 2017, 15:47) ... Jan 19 2017, 12:59   Forger Цитата(SasaVitebsk @ Jan 19 2017, 15:47) ... Jan 19 2017, 13:04 SasaVitebsk На счёт грамотного проектирования - ктож с вами сп... Jan 18 2017, 08:32 k000858 не соглашусь
темы подобного рода создаю в части с... Jan 19 2017, 16:31 Forger Цитата(k000858 @ Jan 19 2017, 19:24) не с... Jan 19 2017, 16:34 SasaVitebsk Цитата(k000858 @ Jan 19 2017, 19:31) проб... Jan 19 2017, 20:19  k000858 Цитата(SasaVitebsk @ Jan 19 2017, 23:19) ... Jan 20 2017, 05:54   Forger Цитата(k000858 @ Jan 20 2017, 08:54) В пр... Jan 20 2017, 06:00 SasaVitebsk Ну в принципе, здесь возможны 4 ошибки.
1. класси... Jan 20 2017, 08:08 Forger Если проектировать код похожим образом (на C++ без... Jan 20 2017, 08:20 SasaVitebsk Уважаемый Forger. Мы вас уже поняли. Надо проект о... Jan 20 2017, 12:22 pitt Цитата(SasaVitebsk @ Jan 20 2017, 07:22) ... Jan 20 2017, 13:22  Forger Навеяло (ничего личного) ... Jan 20 2017, 17:38   pitt Цитата(Forger @ Jan 20 2017, 12:38) Навея... Jan 20 2017, 22:11    Forger Цитата(pitt @ Jan 21 2017, 01:11) По-види... Jan 20 2017, 22:19     pitt Цитата(Forger @ Jan 20 2017, 17:19) Не ст... Jan 21 2017, 04:19 k000858 все оказалось проще: в одной задаче действительно ... Jan 23 2017, 07:09
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|