Гонит неудачников По миру с котомкою, Жизнь текёт меж пальчиков Паутинкой тонкою.
-
- При малом объеме ОЗУ будет полезным изучение Contiki-NG (ну и ее предшественницы Contiki) Evgeny_CD(1 знак., 20.04.2023 12:55, ссылка)
- изучаю как альтернативу зефиру. но еще не пробовал живьем - RED_DRAGON(20.04.2023 10:32)
- Всегда когда есть такая возможность юзаю RTOS. Ну вот нравится мне
утилизировать лишнюю производительность на всякие побочные
сервисные функции. Какую ОСь - зависит от обстоятельств. Всё равно
идеальных нет, все они с какой-то кривизной. - =AlexD=(17.04.2023 14:52)
- Если уж щупали разные, то можно попросить вас написать
сравнительный пост по личным впечателениям? - Dingo(18.04.2023 06:29)
- Хорошая ОСь - это та ОСь которая тебя не напрягает. У которой есть
порт к твоему МК, вменяемая документация и те сервисы которые нужны
для твоей задачи. Вот для STM есть Cube где ОСь включается в проект
галочкой в гуях, последние версии FreeRTOS вполне развиты, так чего
ещё желать? Говорят шедулер там не очень быстрый, ну может быть, я
проблем в этой части не имел. Для других МК может что-то другое
оптимальней. В любом случае пока пробуете - пишите портабельно. - =AlexD=(19.04.2023 08:13)
- >>Хорошая ОСь - это та ОСь которая тебя не напрягает. Nikolaev_Aleksey(75 знак., 20.04.2023 11:16)
- +1 - Nikolaev_Aleksey(20.04.2023 10:32)
- Когда мне понадобился порт FreeRTOS к процессору для которого его
еще не написали, глянул как написан похожий и за два дня с
перекурами слабал свой. Ну да, если найти какую-нить экстаредкую
архитектуру, под которую еще никто порта не рожал, то посидеть
придется. - Codavr(20.04.2023 04:18)
- Не забудьте читать eratta. Особенно после того, как написали свой
код. Вы же заказчику указали все все ситуации в своем приборе? - Nikolaev_Aleksey(20.04.2023 11:02)
- Особенно интересно выглядят ситуации, когда сертификация пройдена. Но выходят эрраты на МК в составе блока. - Nikolaev_Aleksey(20.04.2023 11:08)
- Ну скажем так, начинать знакомство с ртосинами с написания порта -
так себе идея. Тренироваться лучше на кошках. - =AlexD=(20.04.2023 09:07)
- +1 - Nikolaev_Aleksey(20.04.2023 11:09)
- Не забудьте читать eratta. Особенно после того, как написали свой
код. Вы же заказчику указали все все ситуации в своем приборе? - Nikolaev_Aleksey(20.04.2023 11:02)
- Это сложно сделать - точки зрения у всех разные. Например, scmRTOS хороша, тщательно задокументирована, но одного из бедуинов категорически не устроила (для его задачи) реализация программных таймеров. А других устраивает. Evgeny_CD(1 знак., 18.04.2023 19:48, ссылка)
- Хорошая ОСь - это та ОСь которая тебя не напрягает. У которой есть
порт к твоему МК, вменяемая документация и те сервисы которые нужны
для твоей задачи. Вот для STM есть Cube где ОСь включается в проект
галочкой в гуях, последние версии FreeRTOS вполне развиты, так чего
ещё желать? Говорят шедулер там не очень быстрый, ну может быть, я
проблем в этой части не имел. Для других МК может что-то другое
оптимальней. В любом случае пока пробуете - пишите портабельно. - =AlexD=(19.04.2023 08:13)
- Если уж щупали разные, то можно попросить вас написать
сравнительный пост по личным впечателениям? - Dingo(18.04.2023 06:29)
- А Вам это точно нужно? Если изделий менее 5к в месяц... - Nikolaev_Aleksey(17.04.2023 14:39)
- RTOS к тиражу имеет слабое отношение. - Evgeny_CD(17.04.2023 14:44)
- Еще как имеет. МК в 2-4 раза больше нужен. Код написанный под RTOS
потом не перенести на обычный камень. и т.п. - Nikolaev_Aleksey(18.04.2023 17:54)
- Хорошие RTOS имеют минималистичные варианты сборки, буквально пару
К кода и 128 байт ОЗУ (в варианте Cortex-M), например. С минимом
сервисов, конечно же. Так что MCU точно не в 4 раза больше нужен. - Evgeny_CD(18.04.2023 19:37)
- The RTOS kernel itself required about 5 to 10 KBytes of ROM space when using the same configuration as stated for the FAQ "How much RAM does FreeRTOS use?". Costic(230 знак., 20.04.2023 12:36, ссылка, картинка)
- Ну да, только каждой задаче свой стек нужен. если их всего 2-3, то
вроде как нормально. А если 20 и более? - Nikolaev_Aleksey(19.04.2023 07:05)
- "Хороший код" не требует большого стека для каждой задачи. - Nikolay_Po(19.04.2023 12:11)
- Для устройств, работающих годами (от состояния включил и заменил на
новое по регламенту) рано или поздно будет переполнение, т.к.
критерий испытания данного ПО не может все усмотреть. - Nikolaev_Aleksey(20.04.2023 08:54)
- откуда вдруг переполнение стека? Ну если ошибок нет. Набор задач
стандартен и известен. - Лaгyнoв(20.04.2023 09:33)
- Ошибки есть всегда. Вы просто их не нашли))) - Nikolaev_Aleksey(20.04.2023 10:54)
- Ну хотя бы ЭМС. Вы такое не рассматриваете? - Nikolaev_Aleksey(20.04.2023 10:31)
- Вы имели ввиду ЭМП (EMI)? От этого код и без ОСРВ ничего не спасёт.
Вообще, в ответственных проектах, в свободное от исполнения
приложений время, у меня крутится сторожевая собака, которая
проверяет наборы текущих параметров на корректность и периодичность
поступления данных - не пора ли перезагрузиться,
переинициализироваться? - Nikolay_Po(20.04.2023 10:48)
- А если перезагрузка не возможна по ТТ. Что делать? - Nikolaev_Aleksey(20.04.2023 10:50)
- Вынуть руки из жопы и пристроить их на штатное место? - =AlexD=(20.04.2023 10:53)
- Давайте начнем вместе? Nikolaev_Aleksey(1 знак., 20.04.2023 10:56, ссылка)
- Вынуть руки из жопы и пристроить их на штатное место? - =AlexD=(20.04.2023 10:53)
- А если перезагрузка не возможна по ТТ. Что делать? - Nikolaev_Aleksey(20.04.2023 10:50)
- Вы имели ввиду ЭМП (EMI)? От этого код и без ОСРВ ничего не спасёт.
Вообще, в ответственных проектах, в свободное от исполнения
приложений время, у меня крутится сторожевая собака, которая
проверяет наборы текущих параметров на корректность и периодичность
поступления данных - не пора ли перезагрузиться,
переинициализироваться? - Nikolay_Po(20.04.2023 10:48)
- Уровень использования стека в каждой задаче фиксирован после
компиляции и может быть посчитан с точностью до байта. Даже если
прерывания работают в стеке задач. - =AlexD=(20.04.2023 09:28)
- каким образом? системные библиотеки многое запрещают (хотя зачем
они нужны) - Nikolaev_Aleksey(20.04.2023 11:19)
- почему мне нравится asm - за прямолинейность - Nikolaev_Aleksey(20.04.2023 11:21)
- Как автоматически определить размер задействованного стека для
функции Х(), с учетом всех вложенных, что бы можно было скриптом
посчитать/проверить выделенный под стек размер, применительно к gcc
и его производным? А при использовании вызовов по указателю задача
вообще решаема? Рекурсию не рассматриваю, там однозначно темный
лес. - AlexBi(20.04.2023 09:38)
- -fstack-usage -fcallgraph-info + скрипт + конфиг указывающий
косвенные вызовы для каждой функции и глубину рекурсии , готового
решения у меня для вас нет , но это не значит что оно не возможно.
Гуглите, может найдётся. - =AlexD=(20.04.2023 09:53)
- Очевидно, коллега не искал решение, а указывал на тот факт, что
возможны ситуации, когда полный статический анализ стека просто
невозможен. Впрочем, если задача будет стоять, можно будет искать и
варианты решения. - SciFi(20.04.2023 09:56)
- Статистический анализ для наихудшего (возможно нереализуемого)
случая возможен. - =AlexD=(20.04.2023 09:58)
- Допустим вы правы. Откуда возникают ситуации в Windows
"переполнение стека"? - Nikolaev_Aleksey(20.04.2023 10:37)
- Кто-то под венду щетает стэк? И вообще, на долго ли дураку стеклянный половой орган. При таком подходе стек закончится вне связи с РТОС, просто немного позже. - =AlexD=(20.04.2023 10:51)
- И кстати зачем нужно перезагружать роутер раз в 1 год? Это обычная
рекомендация со стороны технической поддержки. - Nikolaev_Aleksey(20.04.2023 10:40)
- Шуточка от финского комика. "- Они доставили человека на Луну, но
не могут <сделать_нормальный_роутер>! - Если бы люди,
которые занимались доставкой человека на Луну, занялись роутером,
думаю, у них получилось бы. Вероятно, этот роутер отлично работал
бы и на Луне." - SciFi(20.04.2023 10:44)
- ну да, смешно. но когда выставляют претензии к ПО, все должно работать как часы. Nikolaev_Aleksey(45 знак., 20.04.2023 10:49)
- Должэн-жэ быть и у жэлезки праздник. - mse homjak(20.04.2023 10:40)
- Шуточка от финского комика. "- Они доставили человека на Луну, но
не могут <сделать_нормальный_роутер>! - Если бы люди,
которые занимались доставкой человека на Луну, занялись роутером,
думаю, у них получилось бы. Вероятно, этот роутер отлично работал
бы и на Луне." - SciFi(20.04.2023 10:44)
- Ну ок, этот анализ скажет "у вас кончилась вся память". Зачем нужен
такой анализ? - SciFi(20.04.2023 10:00)
- Для сложного случая всегда можно провести ручное расследование и задать размер стека для функции вручную. Или убедиться, что потребление стека зависит от внешних факторов и ваше устройство повиснет из-за неудачного стечения обстоятельств, ошибок или злонамеренных действий. После чего принять меры к пресечению бардака. - =AlexD=(20.04.2023 10:06)
- Допустим вы правы. Откуда возникают ситуации в Windows
"переполнение стека"? - Nikolaev_Aleksey(20.04.2023 10:37)
- Статистический анализ для наихудшего (возможно нереализуемого)
случая возможен. - =AlexD=(20.04.2023 09:58)
- Очевидно, коллега не искал решение, а указывал на тот факт, что
возможны ситуации, когда полный статический анализ стека просто
невозможен. Впрочем, если задача будет стоять, можно будет искать и
варианты решения. - SciFi(20.04.2023 09:56)
- -fstack-usage -fcallgraph-info + скрипт + конфиг указывающий
косвенные вызовы для каждой функции и глубину рекурсии , готового
решения у меня для вас нет , но это не значит что оно не возможно.
Гуглите, может найдётся. - =AlexD=(20.04.2023 09:53)
- зачем человека пугаешь? интригу сломал... - RED_DRAGON(20.04.2023 09:31)
- каким образом? системные библиотеки многое запрещают (хотя зачем
они нужны) - Nikolaev_Aleksey(20.04.2023 11:19)
- как так? можно подробности? - RED_DRAGON(20.04.2023 09:16)
- Это следствие аксиомы программирования: symbions(52 знак., 20.04.2023 09:45)
- откуда вдруг переполнение стека? Ну если ошибок нет. Набор задач
стандартен и известен. - Лaгyнoв(20.04.2023 09:33)
- Для устройств, работающих годами (от состояния включил и заменил на
новое по регламенту) рано или поздно будет переполнение, т.к.
критерий испытания данного ПО не может все усмотреть. - Nikolaev_Aleksey(20.04.2023 08:54)
- 20 задач в МК с 128 байт ОЗУ? Да вы батенька знаете толк в
извращениях. Не, ну если на каждый светодиод по задаче вешать - ОЗУ
не напасёшься. Но обычно так не делают. - =AlexD=(19.04.2023 08:16)
- Заметьте, я нигде не говорил про 128 байт ОЗУ. - Nikolaev_Aleksey(20.04.2023 08:45)
- "Хороший код" не требует большого стека для каждой задачи. - Nikolay_Po(19.04.2023 12:11)
- А есть ли кортексы, для которых имело бы смысл так сильно экономить ОЗУ? - AlexG(19.04.2023 06:32)
- 128 байт ОЗУ? Если не считать PROTOTHREAD Дункелса - это какие? - Dingo(19.04.2023 05:25)
- сборник сомнительных утверждений. 1 - нет. 2-значит кривой код - RED_DRAGON(18.04.2023 18:05)
- 2. Постоянно слышу утверждение "кривой код". Но нигде нет его
определения. Где искать критерии? - Nikolaev_Aleksey(18.04.2023 18:10)
- Хороший код легко поддерживать, легко переносить. Он лучше структурирован, у него логика легко отделима от управления аппаратурой. Так, что для новой платформы, достаточно поправить набор аппаратных функций в одном месте. То же относится к переносимости на ОСРВ. - Nikolay_Po(18.04.2023 19:28)
- где искать критерии: изучать существующий хороший код: переносимый,
много лет поддерживаемый, такого добра хватает хотя и далеко не
факт что там все зашибись. участие в больших софт проектах,
(публичное) ревью кода более опытными товарищами. - RED_DRAGON(18.04.2023 19:13)
- Так и делаю. Изучаю код на основе ОСРВ. Обычно это роутеры. - Nikolaev_Aleksey(19.04.2023 14:48)
- переносимость кода один из критериев качества. - RED_DRAGON(18.04.2023 18:46)
- 2. Постоянно слышу утверждение "кривой код". Но нигде нет его
определения. Где искать критерии? - Nikolaev_Aleksey(18.04.2023 18:10)
- Хорошие RTOS имеют минималистичные варианты сборки, буквально пару
К кода и 128 байт ОЗУ (в варианте Cortex-M), например. С минимом
сервисов, конечно же. Так что MCU точно не в 4 раза больше нужен. - Evgeny_CD(18.04.2023 19:37)
- Еще как имеет. МК в 2-4 раза больше нужен. Код написанный под RTOS
потом не перенести на обычный камень. и т.п. - Nikolaev_Aleksey(18.04.2023 17:54)
- RTOS к тиражу имеет слабое отношение. - Evgeny_CD(17.04.2023 14:44)
- зефир - RED_DRAGON(16.04.2023 16:43)
- Слышал много хороших отзывов в России. - Evgeny_CD(17.04.2023 14:45)
- Код самой ОС сравнительно ничо, но внутрях есть достаточно кривостей, но лучше чем в некоторых других ОС - RED_DRAGON(18.04.2023 18:00)
- Слышал много хороших отзывов в России. - Evgeny_CD(17.04.2023 14:45)
- Унас чел сильно НатОс любит, портировал под GD32. - Visitor(08.04.2023 13:17)
- А что это за Ось? - Evgeny_CD(08.04.2023 17:52)
- NutOs лет 5 или более заброшена, сетевой стек есть, STM32F207 еще поддерживала а GD уже нет. - Visitor(09.04.2023 05:56)
- вероятно эта jury093(123 знак., 08.04.2023 18:09,
, ссылка)
- А что это за Ось? - Evgeny_CD(08.04.2023 17:52)
- scmRTOS и слегка модифицированный CycloneTCP, для Cyclone желательно иметь >64 kB ОЗУ (при используемом в моем случае наборе протоколов) - AlexG(08.04.2023 12:40)
- lwip, никаких осей - SciFi(08.04.2023 12:04)
- в моих устройствах штатно freertos с ихним стеком. udp для передачи
в сеть потока с ацп 30мгц, tcp для веб сервера. но у меня
stm32h750. она совсем не мелкий mcu. - klen(08.04.2023 10:43)
- так и не смогли нормально запустить freertos + lwip на h723, через
какое то время - до суток, eth падает. При отладке видно, что
портятся дескрипторы, но как и почему это происходит точно
непонятно, явно что-то не то с кучей или буферами. Причем судя по
форумам до конца эту проблему никто не решил. В итоге просто ушли
на freertos tcp+, оказалось быстрее и надежнее. А по теме топика -
в мелких использовал tNeo, но она c 2017 года не развивается. - AVF(10.04.2023 06:58)
- у меня в точности так же - lwip через сутке протухал стек.
перепахал все вдоль и поперек - не нашел причину. одни макросы
сколько кровыи выпили и все бестолку. ушел на стек freertos -
работает без нареканий. - klen(18.04.2023 21:07)
- просто для контр примера, lwip + freertos, modbus server, modbus
client(4-6 клиентов, порты расширители di/do, ai/ao), ntp. Все
крутится и, как минимум, с месячными аптаймами(с сетью траблы
бывают в тех местах, да и другие не связанные проблемы) - Oman(18.04.2023 21:50)
- lwip прекрасный софт. К железу привязывает порт (он же "драйвер").
Вот к аффтару этого поделия и следует обращаться. Или сделать свой
(как ваш покорный), чтобы не искать виноватых где-либо ещё. - SciFi(18.04.2023 22:01)
- у меня сил не хватило разобраться в проблеме, а подсказать некому. формально в freertos стеке как то все короче и лаконичнее, изначально на много поточность спроектировано. внешний к стеку функционал - сервисы я не рассмтриваю, только сам стек TCP UDP. - klen(19.04.2023 13:35)
- Да в целом согласен, порт тоже под себя писал и разбирался. Но
мысля на freertos'ный стек посмотреть есть, но там надо нормально
подходить, загрузку, объем скомпилированного кода и т.д. сравнивать
для своих задач. Места для простора(сделать локально лучше), чем
lwip есть. - Oman(18.04.2023 22:10)
- По объёму кода у меня есть свой пример. Загрузчик с самописным TFTP
на базе uIP гораздо компактнее, чем похожий на базе стокового lwip. - SciFi(18.04.2023 22:11)
- "гораздо" как и "намного лучше" оставь для рекламы. цифры где? - Spec(18.04.2023 23:42,
)
- "гораздо" как и "намного лучше" оставь для рекламы. цифры где? - Spec(18.04.2023 23:42,
- По объёму кода у меня есть свой пример. Загрузчик с самописным TFTP
на базе uIP гораздо компактнее, чем похожий на базе стокового lwip. - SciFi(18.04.2023 22:11)
- lwip прекрасный софт. К железу привязывает порт (он же "драйвер").
Вот к аффтару этого поделия и следует обращаться. Или сделать свой
(как ваш покорный), чтобы не искать виноватых где-либо ещё. - SciFi(18.04.2023 22:01)
- просто для контр примера, lwip + freertos, modbus server, modbus
client(4-6 клиентов, порты расширители di/do, ai/ao), ntp. Все
крутится и, как минимум, с месячными аптаймами(с сетью траблы
бывают в тех местах, да и другие не связанные проблемы) - Oman(18.04.2023 21:50)
- у меня в точности так же - lwip через сутке протухал стек.
перепахал все вдоль и поперек - не нашел причину. одни макросы
сколько кровыи выпили и все бестолку. ушел на стек freertos -
работает без нареканий. - klen(18.04.2023 21:07)
- так и не смогли нормально запустить freertos + lwip на h723, через
какое то время - до суток, eth падает. При отладке видно, что
портятся дескрипторы, но как и почему это происходит точно
непонятно, явно что-то не то с кучей или буферами. Причем судя по
форумам до конца эту проблему никто не решил. В итоге просто ушли
на freertos tcp+, оказалось быстрее и надежнее. А по теме топика -
в мелких использовал tNeo, но она c 2017 года не развивается. - AVF(10.04.2023 06:58)
- Юзал какое-то время NuttX. Работает неплохо, но, как обычно с TCP/IP, оперативки катастрофически не хватает. lloyd(271 знак., 08.04.2023 10:03)