Форум программистов, компьютерный форум, киберфорум
Dmitry Zhadan
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Микроконтроллеры и многопоточность.

Запись от Dmitry Zhadan размещена 24.06.2020 в 12:22

Пишу я десктопный софт для некоего устройства с SD. Оно может передавать данные как в реальном времени (~30 Кбайт/с), так и записывать их на SD. А потом, по запросу, передавать их (~ 2-3 Мбайт/с).
Сделано оно на микроконтроллере Atmel. Точную модель сейчас не скажу, не помню. Частота 80 МГц.
Так вот, с недавних пор:
а) устройство стало очень туго откликаться на UDP poll по сети. Десктопный клиент раз в секунду шлет широковещательный опросный пакет. Если устройство живое - оно отзывается. Так вот, с последней прошивкой устройство стало отзываться дай бог, если на один пакет из 20. Раньше - обычно сразу, на 1-й или 2-й.
б) При передаче записей с SD периодически возникают паузы. 5-10-15 секунд. С предыдущими прошивками такого не было.
Когда я пришел к разработчику прошивки, чтобы изучить его непростое лицо, он расказал мне, что решил усовершенствовать прошивку и применить в ней (сюприз!) библиотеку для эмуляции многопоточности. Отсюда и тормоза - по его словам, библиотека "тупит при переключении контекстов потоков".
Я до сих пор пребываю в легком шоке. Эмулировать многопоточность а-ля Intel 80386 на микроконтроллере, у которого с гулькин нос памяти? У которого рабочая частота 80 МГц? У которого от слова "совсем" нет устройства управления виртуальной памятью?
Господа, кто мне подскажет - это я ретроград? (Микроконтроллерами я всерьез лет 15-20 назад занимался). Или это наш разработчик прошивки куда-то не туда пошел в своих изысканиях?
Размещено в Без категории
Просмотров 259 Комментарии 4
Всего комментариев 4
Комментарии
  1. Старый комментарий

    Не по теме:

    Цитата:
    Когда я пришел к разработчику прошивки, чтобы изучить его непростое лицо, он рассказал мне, что решил усовершенствовать прошивку и применить в ней (сюприз!) библиотеку для эмуляции многопоточности.
    Цитата:
    Сидит программист глубоко в отладке. Подходит сынишка:
    - Папа, почему солнышко каждый день встаёт на востоке, а садиться на западе?
    - Ты это проверял?
    - Проверял.
    - Хорошо проверял?
    - Хорошо.
    - Работает?
    - Работает.
    - Каждый день работает?
    - Да, каждый день.
    - Тогда ради бога, сынок, ничего не трогай и не меняй.


    Цитата:
    Отсюда и тормоза - по его словам, библиотека "тупит при переключении контекстов потоков".
    Врет и не краснеет! Разве что он с чего-то выбрал корпоративную, а не вытесняющую многозадачность. Расскажите ему про вытесняющую многозадачность и про FreeRTOS.

    Цитата:
    Эмулировать многопоточность а-ля Intel 80386 на микроконтроллере, у которого с гулькин нос памяти? У которого рабочая частота 80 МГц?
    Многозадачность применяют на гораздо более слабых контроллерах. У вас вполне нормальный.
    Но ее нужно правильно реализовать имея опыт применения в МК, иначе будет много проблем.

    Цитата:
    У которого от слова "совсем" нет устройства управления виртуальной памятью?
    Это и не нужно. Нет разделения на процессы. Это скорее похоже на несколько потоков в одном процессе.

    Цитата:
    Господа, кто мне подскажет - это я ретроград? (Микроконтроллерами я всерьез лет 15-20 назад занимался). Или это наш разработчик прошивки куда-то не туда пошел в своих изысканиях?
    Сложно сказать не видя кода. Может там дикий быдлокод! А может контроллер не справляется с выполняемой задачей и требуется замена на более мощный.
    Если разработка прошивки выполнялась на платной основе, требуйте чтобы программист все исправил за свой счет!
    Запись от locm размещена 24.06.2020 в 20:37 locm вне форума
    Обновил(-а) locm 24.06.2020 в 20:39
  2. Старый комментарий
    Аватар для Rius
    Цитата:
    Господа, кто мне подскажет - это я ретроград? (Микроконтроллерами я всерьез лет 15-20 назад занимался). Или это наш разработчик прошивки куда-то не туда пошел в своих изысканиях?
    Презентация 2003 года: uC/OS-II – Real-Time Kernel

    Из книги MicroC/OS-II, The Real-Time Kernel by Jean J. Labrosse 1998 года:
    Цитата:
    This book describes the design and implementation of µCOS-II (pronounced Micro C O S 2), which stands for MicroController Operating System Version 2. µCOS-II is based on µCOS, The Real-Time Kernel that was first published in 1992.
    Тема многозадачности уже далеко не новая.
    Запись от Rius размещена 25.06.2020 в 07:49 Rius на форуме
  3. Старый комментарий
    Цитата:
    Сообщение от Rius Просмотреть комментарий
    Презентация 2003 года: uC/OS-II – Real-Time Kernel

    Из книги MicroC/OS-II, The Real-Time Kernel by Jean J. Labrosse 1998 года:

    Тема многозадачности уже далеко не новая.
    Спасибо, просветили! Значит, буду пинать коллегу, чтобы правил свой код. Хотел бы я знать, что он там такого приторможенного понаписывал...
    Запись от Dmitry Zhadan размещена 29.06.2020 в 20:43 Dmitry Zhadan вне форума
  4. Старый комментарий
    Аватар для Fulcrum_013
    Цитата:
    У которого рабочая частота 80 МГц?
    у самого скоростного из 80386-ых - 80386DX частота в бусте была 40МГц, а у не самых ранних Pentium 75Мгц. А у самой древней многозадачной УВМ которую видел в работе - 0.8МГц.
    Запись от Fulcrum_013 размещена 29.06.2020 в 22:51 Fulcrum_013 вне форума
    Обновил(-а) Fulcrum_013 29.06.2020 в 23:00
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.