Перейти к содержанию
    

scmRTOS и глубокий сон. Как сочетать?

Всем привет.

 

Нежданно-негаданно нарисовалось устройство с требованием минимального потребления. Используется контроллер STM32L0xx. Это Cortex-M0+, специально заточен на это дело.

Проблема в том, что я довольно смутно представляю, как подойти к проблеме. К примеру, у меня есть несколько процессов:

  • Процесс периодического чтения данных с внешнего АЦП (через SPI);
  • Процесс обсчёта результатов измерения;
  • Процесс обмена данными по USART (с использованием DMA);
  • Процесс записи накопленных данных в Dataflash (через SPI).

И вот, надо все эти процессы прекратить и уснуть до заданного времени.

Я пока не совсем понимаю, как это сделать. После некоторых раздумий имею вот такой план:

  • Захватываю выполнение в самом приоритетном процессе;
  • Взвожу какой-то флаг "ПораВсемСпать";
  • Жду от всех процессов подтверждения готовности ко сну;
  • Отключаю всю оставшуюся периферию. (Процессы свою периферию отключают сами);
  • Засыпаю.

Непонятные моменты в таком подходе:

  • Какого вида должен быть флаг "ПораВсемСпать"? (Вот тут не хватает аналога виндового MsgWaitForMultipleObjects()).
  • Если процесс повис на ожидании какого-то объекта синхронизации, то как он получит мой флаг?
  • Как получать подтверждения от процессов? Очередь сообщений?

 

Ещё возможен вариант просто вырубить всю периферию самостоятельно, плюнув на текущую деятельность процессов. (Как тогда вырубить DMA?)

В этом случае неясно, что делать со всем этим после пробуждения. Тайм-ауты все испортились, периферию надо заново всю инициализировать, и так далее.

Возможно, тут поможет механизм перезапуска процессов? Или уж просто сделать сброс?

 

В общем, коллеги, прошу всех поделиться своими соображениями по данному вопросу.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если:

- предыстория процесса несущественна, либо есть возможность восстановить ее после сброса

- нет жестких ограничений на время активзации

то с полным сбросом будет спокойнее...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...