|
Есть ли жизнь после WFI?, атомарность WFI |
|
|
|
Jun 1 2015, 18:34
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-08-09
Пользователь №: 52 078

|
Здравствуйте! Я тут задумался о такой потенциальной проблеме при использовании инструкции WFI: Предположим, что программа должна дождаться получения байта по UART, логичным был бы код Код while(!Uart.DataAvailable()) { __WFI(); } // тут обработка данных Но проблема в том что искомый байт может придти между Uart.DataAvailable() и __WFI(), вызовется обработчик прерывания, после которого вызовется __WFI() и МК больше никогда не проснется. Вставка критических секций: Код __disable_irq(); // тут что-то __enable_irq(); __WFI(); не спасет ситуацию, так как между __enable_irq(); и __WFI(); может проскочить нужное прерывание(а может не проскочить). Поиски вывели меня на вот эту англоязычную тему: http://community.arm.com/message/8927 и доку http://infocenter.arm.com/help/index.jsp?t...a/BIHBFEIB.htmlНо я так и не понял, что есть решение проблемы. Так есть ли в Cortex-M гарантированный способ проснуться после WFI?
|
|
|
|
|
 |
Сообщений в этой теме
Brain13 Есть ли жизнь после WFI? Jun 1 2015, 18:34 Golikov A. А почему вфи будет не после возврата из прерывания... Jun 1 2015, 18:39 Brain13 Цитата(Golikov A. @ Jun 1 2015, 21:39) А ... Jun 1 2015, 18:54  Brain13 Кажется, я нашел ответ: http://infocenter.arm.com/... Jun 1 2015, 20:03   zltigo QUOTE (Brain13 @ Jun 1 2015, 23:03) Во-вт... Jun 1 2015, 23:06 RabidRabbit Таки в обработчике прерывания от UART можно взвест... Jun 1 2015, 19:59 Obam Я посмотрел ARM DDI 0403E.b - Architecture Referen... Jun 2 2015, 07:06 Golikov A. ЦитатаСоотетственно если байт придет перед инструк... Jun 2 2015, 07:25 sensor_ua Предложу взглянуть на статью Use an MCU's low-... Jun 2 2015, 08:50 Brain13 Цитата(zltigo @ Jun 2 2015, 02:06) Вы уж ... Jun 3 2015, 17:18 zltigo QUOTE (Brain13 @ Jun 3 2015, 20:08) Я дел... Jun 3 2015, 17:28  Brain13 Цитата(zltigo @ Jun 3 2015, 20:28) Еще ра... Jun 3 2015, 18:01   zltigo QUOTE (Brain13 @ Jun 3 2015, 21:01) Тема ... Jun 4 2015, 00:40    aaarrr Цитата(zltigo @ Jun 4 2015, 03:40) К част... Jun 4 2015, 01:05  _4afc_ Цитата(zltigo @ Jun 3 2015, 21:28) Еще ра... Jun 3 2015, 20:33   aaarrr Цитата(_4afc_ @ Jun 3 2015, 23:33) Неужто... Jun 3 2015, 20:49 Golikov A. ЦитатаВот именно, что не кирпич, ведь мы запрещаем... Jun 3 2015, 19:42 ViKo А в чем, собственно, проблема? Ставьте WFI после о... Jun 4 2015, 04:00 Golikov A. Проблема понятна, можно даже не брать UART и проче... Jun 4 2015, 06:26 Obam Цитата(Golikov A. @ Jun 4 2015, 10:26) По... Jun 4 2015, 08:07 ViKo Цитата(Golikov A. @ Jun 4 2015, 09:26) По... Jun 4 2015, 08:12   ViKo Цитата(aaarrr @ Jun 4 2015, 13:14) См. No... Jun 4 2015, 10:34    aaarrr Цитата(ViKo @ Jun 4 2015, 13:34) А что в ... Jun 4 2015, 10:51     ViKo Цитата(aaarrr @ Jun 4 2015, 13:51) Действ... Jun 4 2015, 11:45      Obam Цитата(ViKo @ Jun 4 2015, 15:45) …(устано... Jun 4 2015, 12:22       ViKo Цитата(Obam @ Jun 4 2015, 15:22) Вспомнил... Jun 4 2015, 12:31 aaarrr Можно применить еще такой вариант:
Код__SEV(... Jun 4 2015, 09:50 Obam Всё, согласен.
Мир устоял. Jun 4 2015, 09:57 Brain13 ЦитатаЭто говорит о том, что любое запрещенное пре... Jun 4 2015, 18:22 Golikov A. А вот и последняя часть пазла
http://infocenter.a... Jun 5 2015, 04:38 DmitryM Цитата(Golikov A. @ Jun 5 2015, 08:38) и ... Jun 5 2015, 04:46 Obam Цитата(Golikov A. @ Jun 5 2015, 08:38) и ... Jun 5 2015, 05:46 Golikov A. Да я о чем-то своем думал, естественно имел ввиду ... Jun 5 2015, 10:58 jcxz Имхо - у ТС изначально неверно построен алгоритм. ... Jun 6 2015, 07:14
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|