реклама на сайте
подробности

 
 
> STM32F407: Ethernet, HAL + Lwip
k000858
сообщение Jan 12 2017, 07:11
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Всем привет.

Кто изучал драйвер Ethernet'а, идущий с HAL библиотеками (вариант для FreeRTOS: ETHERNET прерывание релизит семафору, которая парсится в отдельной realtime задаче ОС)? Что будет при переполнении указанного количества приёмных буферов? Ошибка DMA обработается, но не будет ли DMA записывать данные дальше (портить память) или это исключено т.к. указывается в размер буферов в настройках DMA?

Имею следующую ситуацию: устройство с Ethernet в параллельной задаче (с меньшим приоритетом чем Ethernet) копирует данные (memcpy функцией) с внутренней FLASH контроллера. При шторме устройства Ethernet трафиком, в какой то раз данные копируются неправильно (временно нарушается адресация флэш - откуда копировать, но до конца процесса восстанавливается), в результате часть данных получается битыми.

Пока подозрения на ошибку в Ethernet драйверах либо LwIP стеке (v1.4.1).

То есть многократное срабатывание прерывания Ethernet + работа задачи по сохранению принятого по Ethernet пакету приводит к сбою работы memcpy

Нехватка памяти для RTOS и его задач контролируется соответствующими отладочными функция FreeRTOS

Может у кого то будут умные мысли, как можно сузить круг поиска бага?
Как еще подиагностировать. Повторить ситуацию непросто, получается ни каждый раз.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Jan 17 2017, 22:21
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Стиль написания, конструирование программы и язык всё же параллельны. А стабильность работы вообще к языку никакого отношения не имеет.
Не в плане спора, но как известно С++ ни в одном источнике, как ясный прозрачный и без проблемный не рассматривается. Ну это же объективно. Просто почитайте мнение специалистов.
В предпоследнем проекте у меня было 411 объектных файлов и более 50 тыс строк текста. Это прибор коммерческого учёта. Я не видел случаев его падения.
Там Си + FreeRTOS + LwIP. Драйвера в несколько уровней.
Например, обращение к флэшке SPI из различных задач - на ура. Мало того, использовались 2 аппаратных буфера поочерёдно для ускорения. В некоторых случаях заливка производилась потоковым способом. Всё работало как часики. При падении напряжения возникало прерывание, сохранялся контекст, сохранялись указатели архивов... Сделал - положить нельзя прибор. Только контрольный выстрел. ))
Меню там экранов штук сто - объектно построено.
Вот подумываю один проект замутить на плюсах. Там просто графика будет приличная. Должно окупиться.
А что вы так взъелись на динамическое выделение памяти? Тоже пробовал в проектах. В одном проете вообще на нём всё построено было. Причём там у меня дырки появлялись. Так я свой сборщик мусора сделал. Тоже претензий не было. Если всё продумать, то всё работает.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jan 17 2017, 23:00
Сообщение #3


Профессионал
*****

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



Цитата(SasaVitebsk @ Jan 18 2017, 01:21) *
В предпоследнем проекте у меня было 411 объектных файлов и более 50 тыс строк текста.

По статистике, среди программистов самый популярный способ продемонстрировать крутизну проекта - указать число строк и файлов )))
И совершенно до лампочки тот факт, что из них львиная доля - сторонние чужие библиотеки ...

Цитата
Вот подумываю один проект замутить на плюсах.

В чем смысл переходить на плюсы, коли уже выработалась стойкая привычка применять объектные фишки на голом С?
Неужели и вас тоже утомило работать "молотком по стамеске"? biggrin.gif

Цитата
А что вы так взъелись на динамическое выделение памяти?

Все просто - категорически не люблю мотаться по командировкам sm.gif

Есть у меня испытанный в тестах неплохой диспетчер динамической памяти (TLFS), но пока нет ни одного проекта, где понадобилось применять динамическую память.
Поэтому пока что предпочитаю заложить в проект камень с достаточным объемом памяти (или прикрутить внешнюю), вместо того, чтобы мотаться по командировкам, вылавливая баги.
В моем случае такой подход выгоднее ))

з.ы. На ум приходит такая старая фраза (формулировка по памяти): "идеальна не та конструкция, к которой уже нечего добавить, а та, от которой уже нечего убрать"....


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jan 19 2017, 12:47
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Forger @ Jan 18 2017, 02:00) *
По статистике, среди программистов самый популярный способ продемонстрировать крутизну проекта - указать число строк и файлов )))
И совершенно до лампочки тот факт, что из них львиная доля - сторонние чужие библиотеки ...

Из сторонних библиотек только LwIP и FreeRTOS. Больше ничего нет. Я HAL не пользуюсь. Из HAL использовал только инициализацию CPU и шин переписанную и Ethernet подправленный.
Строки, естественно считал по своим файлам. Нафига чужое считать.
Проект реально большой. Я 2 года писал. Понятно, что попутно куча другой работы была. Поддержка старых приборов, всякие там сертификации, поездки .. ))

Насчёт плюсов я так скажу. Это надо бы взять какой-нибудь камень ясный... Ну типа того же AVR. Ну чтобы ассемблер был такой, чтобы читался как роман... ))
После чего наваять несколько простых проектов. Компильнуть и посмотреть чё получилось. Поиграться. Ну чтобы ясная картина появилась, во что превращается та хрень, что ты написал. biggrin.gif
Вот где на это время взять?
Go to the top of the page
 
+Quote Post
scifi
сообщение Jan 19 2017, 12:59
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(SasaVitebsk @ Jan 19 2017, 15:47) *
Насчёт плюсов я так скажу. Это надо бы взять какой-нибудь камень ясный... Ну типа того же AVR. Ну чтобы ассемблер был такой, чтобы читался как роман... ))
После чего наваять несколько простых проектов. Компильнуть и посмотреть чё получилось. Поиграться. Ну чтобы ясная картина появилась, во что превращается та хрень, что ты написал. biggrin.gif

Это ассемблер головного мозга. Его надо лечить электрошоком.
В машинный код нужно смотреть тогда, когда реально не хватает памяти и/или скорости, то есть раз в год biggrin.gif
А иначе не останется времени на отдых. Ну и программы будут писАться по два года smile3009.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - Forger   Цитата(SasaVitebsk @ Jan 19 2017, 15:47) ...   Jan 19 2017, 13:04
- - SasaVitebsk   Посмотрите с чего начиналась тема. Начали гнать на...   Jan 17 2017, 23:48
|- - Forger   Цитата(SasaVitebsk @ Jan 18 2017, 02:48) ...   Jan 18 2017, 00:13
|- - pitt   Цитата(Forger @ Jan 17 2017, 19:13) На С+...   Jan 18 2017, 13:43
|- - Forger   Цитата(pitt @ Jan 18 2017, 16:43) Вообще,...   Jan 18 2017, 19:31
|- - pitt   Цитата(Forger @ Jan 18 2017, 14:31) На са...   Jan 19 2017, 04:35
|- - Forger   Цитата(pitt @ Jan 19 2017, 07:35) Блажен,...   Jan 19 2017, 06:52
|- - pitt   Цитата(Forger @ Jan 19 2017, 01:52) А дру...   Jan 19 2017, 13:28
|- - Forger   Классика жанра: вопрос -> холивар -> срач -...   Jan 19 2017, 13:34
- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 18:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01482 секунд с 7
ELECTRONIX ©2004-2016