Под капотом или как устроен один из проектов с использованием операционной системы FreeRTOS.

  Рет қаралды 14,261

Vladimir Medintsev

Vladimir Medintsev

Күн бұрын

Ролик для начинающих. В нем подробно рассказано о этапах программирования одного из проектов. Как шло планирование задач и их функционала при использовании операционной системы реального времени FreeRTOS. Как программировались сами задачи и как происходила отладка и поиск проблем.
Вышла книга по операционной системе FreeRTOS.
Видео о книге "FreeRTOS. Операционные системы микроконтроллеров" - • Книга "FreeRTOS. Опера...
Бумажная версия книги - electronics-kr...
Электронная версия книги - electronics-kr...
Оглавление книги - disk.yandex.ru...
Пример страниц - disk.yandex.ru...
Группа в телеграмм - t.me/vladimir_...
Код примеров из книги - disk.yandex.ru...
По вопросам сотрудничества - vmedintsev@yandex.ru
GSM модуль Quectel MC60 GSM/GPRS/GNSS. AT команды, универсальная библиотека для парсинга - • GSM модуль Quectel MC6...
Детальный обзор GSM модем Quectel MC60 GSM/GPRS/GNSS. Изучаем оценочную плату - • Детальный обзор GSM мо...
GSM модуль Quectel MC60 GSM/GPRS/GNSS. USSD запросы, баланс абонента. Кодировка PDU UCS2 - • GSM модуль Quectel MC6...

Пікірлер: 165
@victorlowlevel8063
@victorlowlevel8063 3 жыл бұрын
С Новым Годом, господа эмбеддеры, кодеры и электронщики! Пусть ваши проекты и устройства работают так - как задумано! Творческих успехов, интересных и финансово-успешных проектов! 👋🙂 🍾🎆
@Liberhaim
@Liberhaim 3 жыл бұрын
"...навык программирования этого ОВНА" - зачёт. Только печально, что наши конторы не слышат голоса пользователей своего продукта и не учитывают их
@johnkoffee
@johnkoffee 3 жыл бұрын
Я тоже пользователь ОВЕНа. Сижу на плк160. Но я не знаю пробоем, кроме того что старая версия кодесиса дико неудобная. Расскажите поподробнее, пожалуйста, к каким замечаниям не прислушиваются производители? (Простое любопытство)
@Liberhaim
@Liberhaim 3 жыл бұрын
@@johnkoffee Вот вы сами назвали одну из проблем это рисование нового интерфейса. Сберонлайн, сайт ржд овен и др программные продукты, котрые рисуют интерфейсы в корне которые по другому выглядят и их не интересуют, что пользователи в нем потеряются.
@awwsum
@awwsum 3 жыл бұрын
А мне нравится ОВЕН. С ПРками проблем никогда не имел, ни в процессе программирования ни в эксплуатации.
@АлександрСпицын-х1я
@АлександрСпицын-х1я 3 жыл бұрын
@@Liberhaim Как говорится смешались кони, люди... Т.е. и ембедед и сбер. Вы не из соседней страны пишите, что у нас тут все плохо и пропало :-) Сбер, пожалуй самое неплохое банковское приложение, Овен программируется в CoDeSys, которое используют многие производители ПЛК. При чем автор ролика просто мало знает про языки программирования МЭК 61131,т.к. те кто ими владеет написали бы, что им сложно программировать на С :-). Ну и если развить его идею со связыванием входов и выходов через функции с учётом желания пользователя, то он бы получил наноПЛК. Повозиться только чуть с FBD и верхним уровнем.
@SIM31r
@SIM31r 3 жыл бұрын
@@АлександрСпицын-х1я вообще интересно, есть ли приложения круче Сбербанка, остальные все намного слабее, даже ВТБ глючит на старом моем телефоне, Сбер работает на всём стабильно и быстро. Программисты очень хороши, им и платят за это.
@ИванСидоров-к9м
@ИванСидоров-к9м 3 жыл бұрын
Спасибо за видео, с наступившим Новым Годом всех! Здоровья всем, а остальное приложится.
@victorlowlevel8063
@victorlowlevel8063 3 жыл бұрын
Очень познавательное видео! Спасибо за обзор, за знакомство с трудами других эмбеддеров, подводными камнями. У меня сейчас проект радиосвистков для баскетбола в работе. Рисую отладочную плату. Предполагается логгирование на USB флэшку, работа с радиомодулями HC-11/12, работа с HMI USART, W5500, Modbus RTU Master/Slave, W25Qxx и т. д. Проект на DevEbox F407, задействую все 6 UART-модуля контроллера, предполагаю тоже разруливать очередями.
@олегспирин-р4р
@олегспирин-р4р 3 жыл бұрын
А можно по подробнее, что это за свистки такие ? Очень интересно
@victorlowlevel8063
@victorlowlevel8063 3 жыл бұрын
@@олегспирин-р4р У судей на поле во время игры некие гаджеты на поясе. Микрофон-петличка на воротнике. Когда он свистит - микрофон улавливает звук. Гаджет выделяет из него свист и останавливает игровые часы по радиоканалу посылая сигнал на базу. Ведётся лог при этом для дальнейшего анализа игры.
@victorlowlevel8063
@victorlowlevel8063 3 жыл бұрын
Сохраняется на флешку. Аппарат принимает инфо о времени игры от судейской системы для лога. Запускает и останавливает игровые часы. Общается со сторонними системами по какому либо интерфейсу. Рисует лог на экране, замеряет уровень заряда батарей в гаджетах и прочее.
@ajdarseidzade688
@ajdarseidzade688 3 жыл бұрын
Очень и очень полезная информация в ролике. Спасибо. С Новым Годом, Вас! С всеми прошедшими и будущими праздниками!
@mykhailosafonov746
@mykhailosafonov746 3 жыл бұрын
Спасибо за интересное и познавательное видео. С новогодними праздниками.
@denwerxampp4035
@denwerxampp4035 3 жыл бұрын
Посмотрел с большим интересом. Спасибо за контент.
@andrejliutsko3858
@andrejliutsko3858 3 жыл бұрын
С новым Годом! За наводку на библиотеку спасибо. У меня самолично переписанная библиотека (SMS + GPRS + MQTT), и хоть и представлял, как все это запустить на машине состояний, но с FreeRTOS увязка с управлением в реальном времени делается на порядок проще.
@raven8867
@raven8867 3 жыл бұрын
С НГ ! Хороший канал , приятно смотреть !
@ГеннадийГром-в8ю
@ГеннадийГром-в8ю 3 жыл бұрын
на 02:15 "надо обладать какими-то навыками программирования этого ОвнА!" - это колоссально! С НГ-21! 👍😁🤪
@zzerocks
@zzerocks 3 жыл бұрын
Если не нужно в программе динамическое создание/удаление сущностей FREErtos (задачи, очереди, таймеры и т.п.) используйте их статическое создание. При этом вы сами выделяете буферы под нужды этих сущностей и уже на этапе компиляции вы точно знаете, что ОС памяти больше не пожрёт.
@asajook8999
@asajook8999 3 жыл бұрын
С прошедшим вас новым годом! Творческих успехов!
@BB-ti9bf
@BB-ti9bf 3 жыл бұрын
2:19 тонко и в точку. Особенно поглумился показывая цены на овно и говоря что это совсем недорого 😁
@valkoder_ex305
@valkoder_ex305 3 жыл бұрын
А что с ценами не так? Сколько времени, будучи электронщиком и программистом, вам потребуется чтобы сделать аналог, да ещё отладить и софт и аппаратную часть, разработать корпус? Хорошо, если вы поставите это соседу чтобы хоть как то отбить временные и финансовые затраты. Но стоит оно того ради единичного устройства? А с соседом так и вообщем беда, по закону подлости сломается именно тогда, когда вы с женой поедете на долгожданные запланированные выходные, оставив детей, в мини медовый месяц, а тут вам сосед звонит, караул, мол твоя система не работает, дом сейчас замёрзнет, трубы полопаются, приезжай.
@BB-ti9bf
@BB-ti9bf 3 жыл бұрын
@@valkoder_ex305 с ценами не так то, что это крупносерийные изделия и вскрывая тех же овнов - понятно что в серии их цена стремится к 0, там нет специальных дорогиз мс от burr brown и прочего дорогого и навороченного, а они простенькие плк продают по цене "от" 15 всю автоматизацию решаю узко заточенными изделиями на мк, обычно от плк берется только какая-то небольшая доля его возможностей. Если не горит пожар и никто не тонет, то на мой взгляд - кастом вне конкуренции, но могу ошибаться. А по практике мои изделия сотнями работают по стране, ни одного программного глюка так и не было, потому что они заточены под задачу, крутится необходимый минимум, а не воюют между собой глюки килотонн закрытых библиотек и избыточного кода.
@valkoder_ex305
@valkoder_ex305 3 жыл бұрын
@@BB-ti9bf ну у овена и софт и маркетинг и поддержка и концепция, это все по определению не делается одним человеком. а где есть коллектив, там есть и смежные затраты. А по надежности так на то есть стандарты и сертификаты и насколько я знаю какой то у них есть. В космос конечно его никто отправлять не будет, он другую задачу решает. а по поводу закрытых библиотек, ничего сказать не могу, какие используют их разработчики не в курсе.
@BB-ti9bf
@BB-ti9bf 3 жыл бұрын
@@valkoder_ex305 посмотрите хотя бы на панели оператора и сравните с китайскими, всякие другие изделия, типа поплавковых датчиков - тупо переупакованный, даже не перемаркированный алиэкспресс, а цена сразу кратно возрастает. Я был бы рад перепаковывать китай и продавать раз в 5-6 дороже, рассказывая лапшу про накладные расходы. Вот вам и маркетинг и концепция 😁 И еще лирика вдогонку - как-то давно мой босс тогда ездил на конференцию Hewlett Packard и задал вопрос а че это у вас расходка такая дорогая, прям ПЦ дорогая, на что получил ответ что они сильно вкладываются в новые технологии и совершенствование их производства. Осмотр, разборка и эксплуатация расходки показали что в реале дико дорогие и новые технологии это перемещение направляющих на картриджах чтобы предыдущее поколение не влезало в принтеры вместо новых, раза в 3 дороже 🤣. Все остальное, вплоть до меток пресс форм - полностью такое же. Спиливаем упор и картридж за 1200 р (тогда) влезал вместо картриджа за 3600 и прекрасно работал. Отака %уйня, малята.
@dazzershell
@dazzershell 3 жыл бұрын
@@BB-ti9bf Коллега мучается с ХулиПакардом, уже 3 принтер домой покупает. Из магазина в нем краски на донышке, картридж новый сразу покупать. Новые картриджи сейчас чипами защищены, просто тупо залить краску нельзя. Печатаешь 1000 страниц и все, хоть пустых белых, там счетчик, который сбросить тоже нельзя. Раньше их как-то ломали, сейчас хер. Он купил китайский чип, типа ломаный, перепаял - ошибка. Самый зашквар это Кэннон, по слухам при попытке поставить что-то чужое или как-то хакнуть весь принтер становится кирпичом. Скоро старые принтеры на аукционах начнут продавать.
@vernnms78
@vernnms78 3 жыл бұрын
Приятно и познавательно смотрится.
@Liberhaim
@Liberhaim 3 жыл бұрын
С новым годом! Надеюсь у вас появится желание рассказать нам о тонкостях в разработки устройств при использовании FREERtos. Для меня это важно, т.к. я разрабатываю устройство
@fokin91
@fokin91 3 жыл бұрын
Спасибо за видео! еще хотелось бы видео на тему энергопотребления на freeRTOS. На русском языке что то не особо много информации на эту тему.
@АлексейШутко
@АлексейШутко 3 жыл бұрын
Делал подобную штуку... Намучился поначалу достаточно. Самое весёлое что sms запроса баланса, выполняемое перенаправлением запроса с телефона клиента и отправдение ответа обратно клиенту отстраивать приходится вживую и результат подчас неизвестен.
@serggorod1423
@serggorod1423 Жыл бұрын
Странно лайка нет на этом 100 500 раз смотренном видео!
@serggorod1423
@serggorod1423 Жыл бұрын
Просматриваю все Рт ОС
@КинобийОбиван
@КинобийОбиван 3 жыл бұрын
Ребята, может кто подскажет, где можно посмотреть подобный проект только без СМС оповещения, а с непоср. с HTTP-запросами (post, get) на сервер. Хочется ещё и простенький мониторинг организовать у себя с push уведомлениями на телефон.
@sozdatelEd
@sozdatelEd 3 жыл бұрын
там нет ничего сложного. регистрируемся указав APN, USER и PASS и несколькими командами отправляем POST и GET запросы. Если СИМ-карта от провайдера уже предназначена для умных устройств, то можно и не указывать APN, USER и PASS, а сразу подключаться к интернету командой AT+SAPBR=1,1 а подсмотреть можно вот тут: sampawno.ru/viewtopic.php?f=116&t=13159 Вообще много статей по этому поводу есть. Можно в документации к GSM-модулю почитать про HTTP запросы. Обычно производители прям в документации приводят примеры запросов/ответов.
@Proektirovshik
@Proektirovshik 3 жыл бұрын
Интересно ОВЕН звучит в ваших устах. Но сглашусь, так как раньше юзал плк или скорее плк юзали меня...
@DmitryTan
@DmitryTan 3 жыл бұрын
Отлично!
@sailtogether3236
@sailtogether3236 2 жыл бұрын
А я при инициализации заполняю всё между heap и stack шаблоном, и периодически проверяю потом, сколько памяти ещё содержит шаблон. Т.о., мониторю не только текущий "вылет", но и был ли он между проверками. Хотя, если пересечение было, но не было перезаписи содержимого, то, увы, не покажет. Наверно, банальщину рассказываю?
@androidpasha
@androidpasha 2 жыл бұрын
Я не понял чем ОС+библиотеки отличаются от ардуино, о котором вы говорили что там может быть куча ошибок в библиотеках.
@alexanderkalashnikov2067
@alexanderkalashnikov2067 3 жыл бұрын
Интересно.
@ИгорьПрокофьев-з5б
@ИгорьПрокофьев-з5б 3 жыл бұрын
Лично я начинал программирование в среде "ОВЕН ЛОДЖИК" на программируемых реле. И всем даю совет: начинайте с ПР200. Очень легкая программа по весу, а по функциональным возможностям она может практически все. Так что покупайте программируемые реле ОВЕН Автоматика" и получайте удовольствие.
@felixtsipis
@felixtsipis 3 жыл бұрын
Всех с Новым Годом! Спасибо за видео. Очень хорошое объяснение. Если не секрет, сколЬко у Вас ушло времени на создание первой рабочей версии кода для этого проекта?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Первый вариант прошивки был создан часов за 50-60. Много времени на то чтобы осмыслить структуру и написание работы с gsm модулем. Команды писались очень быстро. Там же регулярные выражения. Ну и руководство по эксплуатации и документация долго.
@t966rt
@t966rt 3 жыл бұрын
@@VladimirMedintsev с НГ! а что используете для регулярных выражений?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
@@t966rt библиотеку SLRE
@t966rt
@t966rt 3 жыл бұрын
@@VladimirMedintsev спасибо
@DirectionToTheTop
@DirectionToTheTop 3 жыл бұрын
Недавно автор расхваливал бесплатный CubeIDE, а примеры приводит в платном Keil.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
В чем связь? Если я что-то похвалил, то теперь должен только это и использовать?
@CrazyPit
@CrazyPit 3 жыл бұрын
а я подсел на ESP Easy. удобно добротно хорошо. бесплатно
@StahLHerZRocK
@StahLHerZRocK Жыл бұрын
а как поведет себя ваше устройство если отключится питание во время обновления конфига в NVM ?
@VladimirMedintsev
@VladimirMedintsev Жыл бұрын
В реальной версии считает прошлый релиз конфига. Показан упрощенный подход.
@serggorod1423
@serggorod1423 Жыл бұрын
20:00 больше , для начинающих !
@didim99
@didim99 3 жыл бұрын
13:13 обратил внимание, что автор распространяет библиотеку по лицензии GPL v3. Возник вопрос об отношении вашей команды разработчиков к данному вопросу. Ведь GPL (не Lesser GPL, а обычная) требует, чтобы софт, использующий GPL-код в своём составе, также распространялся по лицензии GPL. Также данная лицензия предусматривает, что в случае распространения ПО в виде бинарных файлов, встроенных в физическое устройство, любой владелец данного устройства имеет право затребовать предоставления исходников. Всё это не очень вяжется с коммерческими разработками.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
А в чем собственно сложность? Каждый покупатель устройства может у нас получить полный комплект исходных кодов прошивки контроллера. В этом нет абсолютно никакого секрета.
@didim99
@didim99 3 жыл бұрын
@@VladimirMedintsev вон оно как, в таком случае вопросов нет. :)
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 жыл бұрын
@@VladimirMedintsev Я извиняюсь, а устройство дорогое ?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
@@МихаилТиунов-с7д Не готов ответить.
@DirectionToTheTop
@DirectionToTheTop 3 жыл бұрын
Хотелось бы видеть название среды разроботки в названии ролика.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
А зачем выносить название среды разработки в название, если ролик совершенно о другом?
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 жыл бұрын
Тоже налетел на проблему длинны данных в очереди. У меня получилось сделать буфер в 64 байта всего и при этом очередь только из 2х элементов. Ставлю 4 элемента - вешается. Это мало. М66 на запрос ATI возвращает 59 байт. Как быть? У Вас решения не нашлось?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Необходимо увеличивать размер памяти доступный для операционной системы. В ее настройках.
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 жыл бұрын
@@VladimirMedintsev Спасибо!!!
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 жыл бұрын
@@VladimirMedintsev Сегодня позанимался этой проблемой. Нашел вот какое решение - если настроить в очереди в CubeMX ( а до этого я их создавал руками) - всё прекрасно работает. Размер памяти операционной системы (если я правильно понял - TOTAL_HEAP_SIZE) не изменился, т.е, как был до добавления очередей 3072 так и остался. Как-то странно и непонятно.
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 жыл бұрын
@@sergsapov2927 Чтобы потом, в другой задаче, его из очереди забрать
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 жыл бұрын
@@sergsapov2927 Дело в том, что у модема есть незапрашиваемые сообщения. Например - при получении SMS он передает сообщение +CMTI:... У меня еще сложнее - модем подключается к серверу по UDP или TCP протоколу и в любой момент может прилететь запрос от сервера. Поэтому я не могу, послав запрос, ждать ответа именно на этот запрос. Я посылаю запросы, а полученные ответы кладу в очередь, достаю их из очереди, обрабатываю и формирую новые запросы.Если надо дождаться какого-то ответа - не формирую новый запрос, пока ответ не придет. Как-то так.
@vladzoz6301
@vladzoz6301 3 жыл бұрын
Если был опыт работы с EmWin, будьте любезны рассказать о ней, о подводных камнях.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Буду краток. Она работает. Если с ней будет проект, то покажу.
@vladzoz6301
@vladzoz6301 3 жыл бұрын
@@VladimirMedintsev Это понятно, работает и у меня, после танцев у костра. Интересует переключение между окнами, только Ltd или с fmc тоже работает и как. Не происходит отрисовка на переключенное окно, но кнопки, слайдеры, работают, но их не видно, так как остаётся отрисованное ранее..
@NuWhite
@NuWhite 3 жыл бұрын
А сколько FreeRTOS памяти жрет по умолчанию? На каких платформах имеет смысл использовать эту операционную систему, а не писать все функции проекта самостоятельно?
@YuriyLogvin
@YuriyLogvin 3 жыл бұрын
Все проекты на С? С++ не используете? Если не используете - то по каким причинам?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Причина крайне проста, у каждого языка свое предназначение. Свои сильные и слабые стороны. Я лично не вижу где в микроконтроллерах есть потребность в языке C++. Нет, ну откровенно говоря есть пара библиотек на c++ но это скорее экзотика. Более того, если вы посмотрите на всех производителей микроконтроллеров, то обнаружите что никто не использует c++ на низком уровне.
@YuriyLogvin
@YuriyLogvin 3 жыл бұрын
@@VladimirMedintsev Производители не используют по простой причине - им нужно обеспечить соместимость с "С". Зачем им лишняя работа? У меня в сопровождении несколько проектов на микроконтроллерах, не мной зачатых на на С. Постоянно добавляются какие то "фишки". И сейчас их сопровождать - это Ад. С++ дает структуризацию. Понятно что употреблять С++ нужно с оглядками. Я для мелких проектов использую С. Для всех остальных - С++. Hal::LedRed(true) выглядит лучше чем led_red(TRUE) :)
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Не проблема, вы как разработчик можете использовать хоть Питон, хоть JavaScript. Но для того, чтобы удобно было писать и не пропадала лёгкость восприятия кода обычно создают BSP и дальше уже с его использованием. А что касается производителей и "зачем им лишняя работа" тут если следовать этой логике им вообще тогда писать бы на Basic, но нет они пишут на Си, потому что 99% кода для микроконтроллеров написано на Си.
@YuriyLogvin
@YuriyLogvin 3 жыл бұрын
@@VladimirMedintsev BSP(HAL) - это само собой. Но ведь есть и логические подсистемы, которые взаимодействуют между собой... Например, у Вас 5 разных платежных терминалов - имеете несколько switch-case(или еще один уровень абстракции), которые прозрачности коду не добавляют. Я знаю "перца" который до сих пор на ассемблере все пишет и ничо... По поводу Basic - пример не удачный. Для МК стандарт - "С", который великолепно компилируется в С++ проектах. И зачем производителю "специфическая С++" библиотека вместо "универсальной С" библиотеки?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Юрий, я не планирую с вами спорить. Вы задали вопрос, я на него развернуто ответил. Если вам, как разработчику удобен С++ то это замечательно. Значит вы сделали правильный выбор и все хорошо. Я не вижу тут каких-то противоречий.
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 жыл бұрын
Ещё один вопрос, с вашего позволения. Получил список SMS командой AT+CMGL="ALL". Пытаюсь прочитать SMS командой AT+CMGR=1. Получаю ту же строку что и при чтении списка, для SMS с индексом 1. В ней есть индекс, номер телефона, дата, время. Текста SMS нет. Что-то я никак не догоню как получить текст. Может какие-то настройки перед этим сменить? не подскажете? Получаю такую строку AT+CMGR=1 +CMGR: "REC READ","+79859910884","","2021/01/06 04:49:12+1
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Необходимо установить режим - текст. Ну а вообще вам необходимо найти на свой gsm модуль руководство по АТ командам, там подробно все описано.
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 жыл бұрын
@@VladimirMedintsev Руководство, понятно, читаю. И режим текст установил AT+CMGF=1 AT+CMGF=1 OK или его надо непосредственно перед каждым запросом устанавливать ?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Нет и одного раза хватит.
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 жыл бұрын
@@VladimirMedintsev Помогите, а я донатиков кину. Модем M66 (по вашей рекомендации)
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 жыл бұрын
@@VladimirMedintsev Ну да. Иначе на AT+CMGL="ALL" пришел бы ERROR
@oskinru
@oskinru 3 жыл бұрын
В FreeRTOS есть встроенные средства сбора статистики и диагностики. Почти всё настраивается через CubeMX, но для эффективного использования документацию по FreeRTOS придётся почитать. Про Keil не знаю - не пользую, а для CubeIDE/Eclipse есть удобный плагин для работы с этими данными: mcuoneclipse.com/2017/03/18/better-freertos-debugging-in-eclipse/ Ещё больше полезностей можно получить при использовании отладчика SEGGER J-Link, кстати для ST-Link есть прошивка, делающая из него J-Link.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Абсолютно верно, но только не из любого STLink можно сделать Jlink. Проще купить готовый.
@oskinru
@oskinru 3 жыл бұрын
Только аккуратнее с готовыми - оригинальный стоит от €300, а клоны довольно часто бывают неполноценными до полной неработоспособности по назначению, сам попадал - из 4-х экземпляров с алиэкспрес 2 неправильные, внешне не отличаются, а схема совсем другая и видится только каким-то своим драйвером с очень урезанным функционалом, в Linux не работает совсем.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
@@oskinru ну не знаю, у меня клон и я им в принципе доволен. И куплен этот клон на АлиЭкспресс но у проверенного продавца. Все работает все довольны.
@rustybroom7071
@rustybroom7071 3 жыл бұрын
Вообще, довольно странно. Неужели, ОС сама не может следить за количеством выделяемой памяти?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Не может, ведь вы память можете явно и не выделать, а просто использовать. Как ОС об этом узнает?
@rustybroom7071
@rustybroom7071 3 жыл бұрын
@@VladimirMedintsev Из дескриптора задачи, вестимо. Хотя...в таких маленьких процах сделать нормальный менеджмент памяти трудно, конечно. ММУ-то нету.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Не вся же памятт используется именно задачами и внутри задач. Есть же DMA, есть обработчики прерываний. Так, что излишний контроль памяти привел бы только к излишнему усложнению как ОС, так и всего окружения.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
На самом деле нет какой-то насущной проблемы. У freertos есть средство информирования о том, сколько свободной кучи и стека у вас осталось из выделенного под ОС. Остальное тоже посчитать не сложно. Это просто не всегда очевидно для тех кто пришел из мира больших компьютеров. По факту это проблема только для них.
@rustybroom7071
@rustybroom7071 3 жыл бұрын
@@VladimirMedintsev Это да, но использовать динамическое выделение памяти в прерываниях могут только племянники Билла Хейса. Нормальным людям оно ни к чему.
@YuriyIY
@YuriyIY 3 жыл бұрын
Терзают меня смутные подозрения, что в FreeRTOS борьбу с дребезгом можно организовать дешевле. К примеру, создать задачу с osDelay(100). И там отслеживать состояние входов. Выполнение задачи 10 раз в секунду гарантированно отсеет дребезг. Возможно, я не прав. Но я так делал. Работает.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Можно, конечно, разные способы применимы.
@proggarage
@proggarage 3 жыл бұрын
При таком подходе, в ситуации когда в момент считывания происходит дребезг (или прилетает помеха), может возникнуть ложное срабатывание, либо задержка реакции на 100 мс, либо пропуск сигнала если его длительность менее 100 мс + время выполнения задач с более высоким приоритетом + время чтения. В некоторых случаях это не критично, но забывать об этом не стоит. Да, вероятность небольшая, но когда нужно сделать что-то более сложное чем моргание светодиодом, любая мелочь перерастает в проблему на удивление быстро.
@YuriyIY
@YuriyIY 3 жыл бұрын
@@proggarage В этом ничего страшного нет. Именно для данного девайса. Время работы задачи сравнимо с временем срабатывания реле. Большинство клавиатур компьютерных (да и не только) так и работают. Сканируют всё поле раз 20 в секунду. Всё равно, самый тормоз тут, это человек. Пусть даже идеальная реакция будет, ну это 0.3 секунды. А это 300! мс. За это время можно раз 10 проверить клавишу на дребезг.
@AndreyOnAir
@AndreyOnAir 3 жыл бұрын
+10
@YuriyIY
@YuriyIY 3 жыл бұрын
Чет у меня еще мысль созрела. Если в программе много булевых переменных, можно ли их запихнуть в битовое поле? К примеру, так 8 булевых переменных можно впихнуть в один байт. Ведь они занимают 8х8 байт. Понятно, что ресурсов много. Но это же не комп, ресурсы не бесконечны.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
А вот как по мне, компиляторы сейчас умные, пусть у них голова и болит. Ну просто я понимаю немного оптимизировать код, но не до такой же степени.
@YuriyIY
@YuriyIY 3 жыл бұрын
@@VladimirMedintsev Логично. Голова у них железная, пусть и гудит. Согласен. Потому, пока и забил.
@YuriyIY
@YuriyIY 3 жыл бұрын
@@privateperson1468 Особенно, если учесть, что элементарные операции выполняются в разы быстрее. А битовые как раз и есть они самые. :-)
@YuriyIY
@YuriyIY 3 жыл бұрын
@@privateperson1468 А 32 битные значения не используют память?
@АлександрСпицын-х1я
@АлександрСпицын-х1я 3 жыл бұрын
std::bitset в помощь
@Insideus2786
@Insideus2786 3 жыл бұрын
Да, с этими буферАми так и есть...
@alekseibutyaev2318
@alekseibutyaev2318 Жыл бұрын
Ко коду сразу видно С, С++ и мало ресурсов в системе .. не то что нынешнее племя .. JAVA,C#, и прочие язычки .. всё вали кулём .. потом разберём...
@ЛштшфумАщвф
@ЛштшфумАщвф 3 жыл бұрын
Вы, программисты, зажрались 15 тыщ для них небольшие деньги. Кто-то за меньшие деньги месяц карячится, чтобы вы могли сидеть и смотреть в свои телевизоры.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
У вас какие-то проблемы? Это не программистам нужно, а люди себе в дома и на предприятия ставят. Вам программисты чем не угодили? Никто не мешает взять книжку, выучить язык и тоже сидеть смотреть в свой телевизор.
@ЛштшфумАщвф
@ЛштшфумАщвф 3 жыл бұрын
@@VladimirMedintsev против программистов ничего не имею. 15 тыщ это серьезные деньги.
@vernnms78
@vernnms78 3 жыл бұрын
С Новым Годом! Удачи, новых прибыльных проектов и благодарных подписчиков!
@user-cp123pc5tk8d
@user-cp123pc5tk8d 3 жыл бұрын
2:18 - "Тебе надо обладать навыками программирования этого Говна" ))))))
@StahLHerZRocK
@StahLHerZRocK Жыл бұрын
А если бы входов было еще больше, то было бы еще больше однотипных if else ?))
@valkoder_ex305
@valkoder_ex305 3 жыл бұрын
Большое спасибо. Вообщем частично сам дошёл до этих отладок в операционке. Но тем не менее очень хорошо что это озвучено для тех, кто ещё не потратил десятки часов. Осталось понять как отлаживаться, когда операционка зависает. Сам однозначно ещё решения не нашёл. Иногда помогают ассерты, иногда тупо светодиодами приходится отлаживаться. А по рабочему коду удобно отлаживаться отдельной задачей с отправкой через уарт по дма. В отдельном файле создаю функцию дебаг_инит, в ней создаётся задача очередь и семафор. В параметрах функции указатель на структуру настроенного дма. Дадее простые функции заполнения очереди по типу дебаг_принт_стринг, дебаг_принт_инт,.... _буффер и т. д. Ну и функцию колбека для прерывания от тх_дма, которую прописываю в майне. В ней проверяю соответствие структуры дма и скидываю семафр. Всем удачи.
@dazzershell
@dazzershell 3 жыл бұрын
Узнал про "access breakpoint" давно, но использовал его по делу буквально позавчера, нашел жука в старом "проверенном" коде. Ошибка в адресации к памяти.
@Avtovet
@Avtovet 3 жыл бұрын
Спасибо за информацию!
@ДимаДима-к1н
@ДимаДима-к1н 3 жыл бұрын
Пересмотрел компоновку...2018г ... вместе с этим видео зашло! kzbin.info/www/bejne/pHfZoHR_aJmUeKs ...Я НАЧИНАЮЩИЙ.... чё кричишь!!! 3:03 По делу! Введение. 5:15 Примеры ATкода...GSM ПОСТАНОВКА проблематики. 7:26 Структурирование задачи. 11:56 Примеры кода. 13:10 Обзор библиотеки. Источник 17:08 Объяснение кода. 25:25 Пред упреждение граблей. НАДЕЮСЬ НА ПОДРОБНОЕ ПРОДОЛЖЕНИЕ!...
@ДимаДима-к1н
@ДимаДима-к1н 3 жыл бұрын
НАДЕЮСЬ НА ПОДРОБНОЕ ПРОДОЛЖЕНИЕ!... 8 лет учу стм... (подписал чужой проект 1н заработал(2016г))... то среда изменится...то код на с++, или нет дефайнов,... то код c/на не транспортируется,... то кубИДЕ(с детскими проблемами Эклипса) не работает программатор. Keill + Source Insight 3.5 + STM32 ST-LINK Utility = самые лучшие друзья! Читаю много статей и пытаюсь применить... но мало что получается, ... по тому что-б сделать что-то, нужно сделать многое за кадром..и начинаешь тонуть во вкладках.... на сегодня в опере 208 в хроме 54...во всех других(2х) настроен сессионный сброс(для поиска справки/подсказки). Накопал проект на Гите...который сразу работал...с нужным мне процессором 103.... определил его ка базовый!!! На основе (d:\ST\base) в папке бесе не низменно пробую пилить проекты(Время релиза 2-3 месяца (сам схемы платы за неделю)), пока все обрывки кода с интернета компасную. В качестве отладчика у меня в базовом проекте дисплей spi_320*400... на него вывожу магическую строку состояния.. Хорошо бы ПОЛУЧИТЬ БАЗОВЫЙ ПРОЕКТ ОС на кубиде, со всеми пред настроенными параметрами, если это возможно! Как вы сказали"начинающему начинать...в одиночку" Имею 1,5 диплома...асемблер для Pic(1год работы)... в техникуме асемблер51/avr... и всякое не нужное г*но типа школьного паскаля и бэйсика. В универе ....a=~a*b|| c.... Хотя после нас уже учили с99.и ++
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
@@ДимаДима-к1н я ничего не понял из написанного. Если вы реально чего-то хотите, большая просьба сформулируйте мысль четко.
@НиколайПр-з3в
@НиколайПр-з3в 3 жыл бұрын
Делал ПО для магазина, которое отсылало своим клиентам СМС - было большое кол-во жалоб о неполучении СМС. Проделал следующее: 8 марта в течение для ПО отослало на мой номер 100 СМС - результат удручающий - 5 СМС вообще не пришло в течении 3-х дней, 2 СМС пришли через 2 дня, 4 СМС пришли на следующий день и 20 СМС пришли более чем через 2 часа. ПО слало СМС через мобильный телефон и в телефоне все 100 были как отправлены, начали разбираться с оператором сотовой связи и то о чем он нам поведал повергло в шок - они не гарантируют доставку СМС даже если сняли за его у вас деньги, более того они и не гарантируют срок, в течении которого СМС будет доставлено. Это Беларусь, оператор MTC, а неужели в России иначе? Читал в инете - что грабанули квартиру, вывезли всю мебель - хозяин как только получил СМС от сигнализации сразу выехал домой но грабителей уже не застал, соседи сказали что вывозили мебель несколько часов.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Много загадочных вещей происходит в Белоруссии. В принципе у нас СМС работают достаточно стабильно. Доставка до 3х минут это максимум.
@НиколайПр-з3в
@НиколайПр-з3в 3 жыл бұрын
@@sergsapov2927 - WebMoney так и делают - там звонок даже в другую страну при попытке входа в их кабинет. Так что в России видать с СМС тоже не все гладко.
@slavaglow6933
@slavaglow6933 3 жыл бұрын
Интересно и познавательно. Спасибо. А из каких соображений выбирается начальный адрес FLASH_CONFIG_START_ADR что-бы не попасть на программный код?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Конечно
@simwhite9187
@simwhite9187 3 жыл бұрын
а как определять и задавать адреса?
@andrejliutsko3858
@andrejliutsko3858 3 жыл бұрын
@@simwhite9187 В настройках линковщика.
@awwsum
@awwsum 3 жыл бұрын
Вот бы такой же девайс только чтоб общался по GPRS (mqtt сейчас в моде) и какой-нибудь простецкий интерпретатор для обработки логики. Такая штука много где бы пригодилась.
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 жыл бұрын
С Новым Годом, Владимир!!! Огромное спасибо за ролик - прямо яичко к христову дню!!! Вопрос: Пакеты ответов от модема идут сплошными пакетами или могут быть перерывы ? Принимаю через DMA по прерыванию IDLE.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Ответы модем всегда передает сплошным потоком.
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 жыл бұрын
@@VladimirMedintsev Еще вопрос.Извините что не задал сразу. А 2 пакета не могут "склеиться" ? Всегда ли между ними есть задержка больше времени передачи одного байта?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Нет не могут.
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 жыл бұрын
@@VladimirMedintsev Спасибо за ответы. Но из них вытекает следующий вопрос - а зачем тогда принимать по 1му байту? Можно заказать DMA заведомо большую длинну для приема и включить прерывание IDLE порта. Как IDLE сработает - DMA останавливаем, снимаем флаг IDLE, данные в очередь, перезапускаем DMA. Или какие-то проблемы могут быть при таком варианте?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Это диалог. Мы что-то говорим модулю, он отвечает. Бывает что и он нам может что-либо написать, к примеру сообщить о звонке. В этом случае и dma и irq использовать можно, но все равно желательно анализировать возвращенную модулем информацию.
@yuriyborys8046
@yuriyborys8046 3 жыл бұрын
А что у вашего GSM модуля нет выхода сообщающего о звонке или СМС. Недавно работал с SIM808, там есть ножка называется RI - ring interrupt, прижимается к земле на весь период входящего звонка (вызова), или дает пульс, если СМС пришел. Удобненько.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Да в принципе мало кто эту ножку использует. Гораздо удобнее написать хороший процессинг и полноценно работать в символьном виде.
@yuriyborys8046
@yuriyborys8046 3 жыл бұрын
@@VladimirMedintsev Еще так, для информации. Насчет функции отсутствия сим карточки. На некоторых холдерах для карты (не всех) есть ножка CP - card present. Может понадобиться когда-нибудь.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Спасибо, я знаю, об этом написано в даташите на некоторые модули. Также я знаю как подключать 2 сим к одному модулю.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Я искренне благодарен, просто так получилось что в свое время с модулями не плохо разобрался по ним даже есть несколько видео на канале.
@yuriyborys8046
@yuriyborys8046 3 жыл бұрын
@@VladimirMedintsev Спасибо вам за ваши видео. Может вам будет интересен этот модуль - ai-thinker-open.github.io/GPRS_C_SDK_DOC/en/hardware/a9g.html Еще документация - docs.ai-thinker.com/en/gprs/a9g . В чем прикол - он с GPS и что ему можно писать свою прошивку и использовать standalone . Правда СДК для ГНУ только.
@user-ww1iw4bi8k
@user-ww1iw4bi8k 3 жыл бұрын
Вы плохо искали, есть готовые устройства ccu825 например, российской разработки
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
В каком смысле плохо искали? Я и не должен искать что-либо. Есть заказчик есть производство. А то, что какой-то коллектив делает нечто подобное, ну это же просто замечательно. Могу только пожелать им хороших заказчиков в новом году. Но по какой-то причине заказчик пришел к нам а не к ребятам из Тулы.
@ibrag2012
@ibrag2012 3 жыл бұрын
Замислився: за великим рахунком потрібен менеджер пам'яті, але за ним піде своп (таке інше). Як досвідчений програміст стек відчуваю дупою, але що робити іншим? Може: якщо пристрій повільний, використовувати флешку чи диск?
@robo_omsk
@robo_omsk 3 жыл бұрын
Здравствуйте, Владимир! Хотел бы у Вас поучиться реализации проверки дребезга контактов. Не могли бы Вы более подробно объяснить как это работает?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Все очень просто. Это переменная 8 бит. Каждый раз при проверке состояния входа мы устанавливаем младший бит в 1 если на входе логический 1 и в 0 если 0. Затем делаем сдвиг влево. Проверяем если там 0хFF значит уверенно сработали Если меньше то не сработали.
@robo_omsk
@robo_omsk 3 жыл бұрын
@@VladimirMedintsev интересно, первый раз вижу такой способ, мне надо проникнуться попробовать. Спасибо за помощь!
@robo_omsk
@robo_omsk 3 жыл бұрын
@@VladimirMedintsev а такой способ можно применять в прерываниях?
Apple peeling hack @scottsreality
00:37
_vector_
Рет қаралды 132 МЛН
My daughter is creative when it comes to eating food #funny #comedy #cute #baby#smart girl
00:17
The joker favorite#joker  #shorts
00:15
Untitled Joker
Рет қаралды 30 МЛН
Поднимаем I2C  - Уроки FPGA /#12
16:26
MIHAS
Рет қаралды 2,5 М.
Что такое операционная система и как она работает
2:01:08
Запросы в 1С за 3 часа. Часть 2
3:17:01
IRONSKILLS - Курсы по 1С
Рет қаралды 317 М.
HTTP в 1С за 3 часа
3:23:54
IRONSKILLS - Курсы по 1С
Рет қаралды 446 М.
Apple peeling hack @scottsreality
00:37
_vector_
Рет қаралды 132 МЛН