|
Заставить MSP430 спать все свободное время |
|
|
|
Jun 20 2011, 08:49
|
Участник

Группа: Участник
Сообщений: 39
Регистрация: 23-11-05
Пользователь №: 11 254

|
Добрый день. Вопрос собственно в заголовке. Надо чтобы контроллер MSP430F149 все свободное время спал. Достаточно ли будет написать так: Код void OS::IdleProcessUserHook() { LPM0; } PS использую IAR
|
|
|
|
|
 |
Ответов
|
Jun 21 2011, 10:46
|
Участник

Группа: Участник
Сообщений: 39
Регистрация: 23-11-05
Пользователь №: 11 254

|
Наверное вопрос сочли слишком глупым чтобы на него отвечать... Все же господа хорошие, объясните пожалуйста новичку премудрости вытесняющего планирования.  Я постараюсь более подробно изложить свои вопросы: 1) Я так понимаю IdleProcess такой же процесс как и все остальные. Разве что не надо его оборачивать в бесконечный цикл, так как это уже сделано в коде ОС. Значит если я усыплю МК в этом процессе то всякий раз возвращаясь в него планировщик будет восстанавливать SR, а значит впадать в спячку. Так ли это? 2) Если IdleProcess нужен лишь для усыпления контроллера, не слишком ли жирным будет выделять для таких целей отдельный процесс со своим стеком? Можно ли вообще отказаться от этого процесса? Как в таком случае реализовать спящий режим при простое МК? 3) Этот вопрос наверное уже больше завязан на конкретную среду IAR. В настройках проекта в среде IAR указывается величина выделяемого стека и кучи. Кто будет пользоваться этим стеком? Какие значения лучше указывать? Заранее большое спасибо за помощь!
|
|
|
|
|
Jun 21 2011, 12:26
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Цитата(aliko @ Jun 21 2011, 17:46)  1) Я так понимаю IdleProcess такой же процесс как и все остальные. Разве что не надо его оборачивать в бесконечный цикл, так как это уже сделано в коде ОС. Значит если я усыплю МК в этом процессе то всякий раз возвращаясь в него планировщик будет восстанавливать SR, а значит впадать в спячку. Так ли это? Тут уже было обсуждение похожей темы: http://electronix.ru/forum/index.php?showt...=20811&st=0пришли к такому же выводу. Цитата 2) Если IdleProcess нужен лишь для усыпления контроллера, не слишком ли жирным будет выделять для таких целей отдельный процесс со своим стеком? Можно ли вообще отказаться от этого процесса? Как в таком случае реализовать спящий режим при простое МК? Ну надо же что-то делать когда совсем нечего делать  В принципе можно что-то и там делать, но далеко не что угодно, так как усыплять этот процесс нельзя. С другой стороны, накладные расходы на ещё один процесс минимальны. Цитата 3) Этот вопрос наверное уже больше завязан на конкретную среду IAR. В настройках проекта в среде IAR указывается величина выделяемого стека и кучи. Кто будет пользоваться этим стеком? Какие значения лучше указывать? А это зависит от дефайна scmRTOS_ISRW_TYPE
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
|
Jun 22 2011, 08:11
|
Участник

Группа: Участник
Сообщений: 39
Регистрация: 23-11-05
Пользователь №: 11 254

|
Цитата(SSerge @ Jun 21 2011, 16:26)  Тут уже было обсуждение похожей темы: http://electronix.ru/forum/index.php?showt...=20811&st=0пришли к такому же выводу. Большое спасибо за эту ссылку, я рад что оказался не одинок в своих поисках решения) Цитата(SSerge @ Jun 21 2011, 16:26)  Ну надо же что-то делать когда совсем нечего делать  В принципе можно что-то и там делать, но далеко не что угодно, так как усыплять этот процесс нельзя. С другой стороны, накладные расходы на ещё один процесс минимальны. Ну вобщем-то делать мне там совершенно нечего и хотелось бы сэкономить побольше оперативки так что держать отдельный IdleProcess со своим стеком и постоянно переключать на него контекст лишь для того чтобы в нем спать несколько накладно... Цитата(SSerge @ Jun 21 2011, 16:26)  А это зависит от дефайна scmRTOS_ISRW_TYPE значение этого дефайна выставил в TISRW. Правильно ли я понимаю что теперь стек выделяемый IAR (тот что задается в конфигурации проекта) будет использоваться прерываниями?
|
|
|
|
|
Jun 22 2011, 12:10
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (aliko @ Jun 22 2011, 11:11)  IdleProcess со своим стеком и постоянно переключать на него контекст лишь для того чтобы в нем спать несколько накладно... Ну зачем это только для... Считайте, что это самый низкоприоритетный процесс, который по завершению того, что ему положено переводит не процесс а контроллер в спячку. Единственно, что время спячки Вы для него задать не сможете. Ну и если вдруг, будут нужны какие-то системные вызовы, то придется сделать их варианты для Idle. Вот примерчик более утилитарного использования Idle (операционка похожая на FreeRTOS и ARM, но не суть важно): CODE / void idle_system( void ) { .........
if( xQueueReceiveFromIdle( idle_queue, &imsg ) ) { ....... } else { // CPU Idle PCON |= PCON_IDL; } }
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
aliko Заставить MSP430 спать все свободное время Jun 20 2011, 08:49   dxp Цитата(aliko @ Jun 22 2011, 15:11) Ну воб... Jun 22 2011, 11:58 aliko ЦитатаЧто вы предлагаете делать, когда все ваши пр... Jun 22 2011, 12:02 MrYuran Цитата(aliko @ Jun 22 2011, 16:02) Если у... Jun 22 2011, 12:33 dxp Цитата(aliko @ Jun 22 2011, 19:02) Ну в о... Jun 22 2011, 12:35 aliko ЦитатаМне было бы тоже очень интересно узнать про ... Jun 22 2011, 13:19 dxp Цитата(aliko @ Jun 22 2011, 20:19) Как-то... Jun 22 2011, 13:36 MrYuran Ещё вопрос на засыпку: а оно обязательно, вытесняю... Jun 22 2011, 13:45 dxp Цитата(MrYuran @ Jun 22 2011, 20:45) Ещё ... Jun 22 2011, 14:55  zltigo QUOTE (dxp @ Jun 22 2011, 17:55) Как раз-... Jun 22 2011, 17:37   dxp Цитата(zltigo @ Jun 23 2011, 00:37) Я дум... Jun 23 2011, 02:56    zltigo QUOTE (dxp @ Jun 23 2011, 05:56) Ну, дык,... Jun 23 2011, 10:42     MrYuran Цитата(zltigo @ Jun 23 2011, 14:42) Это п... Jun 23 2011, 10:46      zltigo QUOTE (MrYuran @ Jun 23 2011, 13:46) А ди... Jun 23 2011, 11:08 aliko ЦитатаЕщё вопрос на засыпку: а оно обязательно, вы... Jun 22 2011, 13:49 jorikdima Приветствую.
Не буду создавать отдельную тему, тут... Jun 26 2011, 17:50 MrYuran Цитата(jorikdima @ Jun 26 2011, 21:50) В ... Jun 27 2011, 06:31  jorikdima Цитата(MrYuran @ Jun 27 2011, 10:31) Тогд... Jun 27 2011, 13:00 jorikdima Не появилось ни у кого идей по моему вопросу? Sep 12 2011, 16:17 dxp Цитата(jorikdima @ Sep 12 2011, 23:17) Не... Sep 15 2011, 09:13
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|