реклама на сайте
подробности

 
 
> Прикручиваю ось к LPC2478, Есть и будут вопросы)
haker_fox
сообщение Aug 21 2012, 06:22
Сообщение #1


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Добрый день, коллеги!

Скачал последнюю версию порта для LPC2xxx. К сожалению, на LPC2478 код не запускается, пришлось маленько пофиксить инициализацию периферии, немного ассемблера в одном из файлов ОСи. Вроде дело пошло. Задачи запускаются. Я не уверен в надежности и стабильности, пока тестирую.

Пока первый вопрос.

Как я понял, планировщик может вызываться из прерывания системного таймера и по софтовому прерыванию. Это задается опцией scmRTOS_CONTEXT_SWITCH_SCHEME. Мне кажется, что для LPC2478 софтовое прерывание не нужно. Достаточно таймерного. Я правильно понимаю? Т.е. можно использовать scmRTOS_CONTEXT_SWITCH_SCHEME = 0?

Гм... скажем так, я, прочитав документацию, так и не понял, чем отличаются два метода вызова планировщика, и какой когда использовать?

Спасибо!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение Aug 21 2012, 12:48
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Спасибо за остоятельный ответ!
К сожалению, я до сих пор использовал 3-ю версию, и то на AVR. Не все нюансы знаю) Буду разбираться.

У меня уже мечта добавить к этой оси виртуальные таймеры ( это мне точно нужно ).

Спасибо большое за ее создание! Выбирал для арм долго между FreeRTOS, TNKernel и родной, с 2006 года знакомой, scmRTOS. Выбор пал в пользу последней из за того, что она вкорне написана на Си++, который мне более удобен)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 21 2012, 13:33
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(haker_fox @ Aug 21 2012, 15:48) *
У меня уже мечта добавить к этой оси виртуальные таймеры ( это мне точно нужно ).

А что они такого вам дадут?
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Aug 21 2012, 13:55
Сообщение #4


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (_Артём_ @ Aug 21 2012, 22:33) *
А что они такого вам дадут?

Мне они нужны для управления автоматикой. Скажем, каждый день в 9 утра открывать дверь, по понедельникам в 17-00 проветривать помещение)

Думаю, что вклиненные в ядро и сервисы ОС, они будут работать наиболее производительно. Да и потренируюсь маленько. С осями я на ВЫ.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 21 2012, 15:13
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(haker_fox @ Aug 21 2012, 16:55) *
Мне они нужны для управления автоматикой. Скажем, каждый день в 9 утра открывать дверь, по понедельникам в 17-00 проветривать помещение)

То есть они должны быть привязаны к календарю, времени в часах-минутах?

Go to the top of the page
 
+Quote Post
haker_fox
сообщение Aug 21 2012, 15:19
Сообщение #6


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (_Артём_ @ Aug 22 2012, 00:13) *
То есть они должны быть привязаны к календарю, времени в часах-минутах?

Да, привязаны к аппаратным часам. Но "когда-то" они должны вызывать некую функцию в отдельно потоке. Следовательно поллинг здесь мало подходит, т.к. до срабатывания таймера может и день пройти...

Жаль, конечно, что в этой ОСи нельзя динамически создавать/удалять задачи, но я либо обойдусь текущим функционалом, либо попробую что-нить припилить)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 21 2012, 15:35
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(haker_fox @ Aug 21 2012, 18:19) *
Да, привязаны к аппаратным часам. Но "когда-то" они должны вызывать некую функцию в отдельно потоке.

А аппаратный таймер - это что физически?

Цитата(haker_fox @ Aug 21 2012, 18:19) *
Следовательно поллинг здесь мало подходит

Смотря как часто опрашивать. Я не думаю что ваша задача управления автоматикой выглядит так:
в 9:00 выставить в порт заданный уровень, время реакции - 3 мкс.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Aug 21 2012, 16:05
Сообщение #8


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (_Артём_ @ Aug 22 2012, 00:35) *
А аппаратный таймер - это что физически?

В LPC2478 есть RTC.

QUOTE (_Артём_ @ Aug 22 2012, 00:35) *
мотря как часто опрашивать. Я не думаю что ваша задача управления автоматикой выглядит так:
в 9:00 выставить в порт заданный уровень, время реакции - 3 мкс.

Да, пока поллингом и делаю. На другой платформе. Опрашиваю раз в 0.5 сек.

А может быть действительно - лишнее это (виртуальные таймеры). Буду думать.

Но вот динамическое создание/удаление процессов было бы полезно: сработал таймер, запустили процесс, выдали в сеть команду, удалили процесс. Поскольку этот процесс может занимать иногда ощутимое конечное время (сеть одна, устройств много, много кто хочет с ними пообщаться, приходится ждать), то чтобы не задерживать работу системы, он бы мог работать отдельно.

Хотя здесь может помочь буферизация в очереди.

В общем будем думать. Просто лапки чешутся что-нить "поковырять".

Впрочем, это уже для другой темы разговор.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 21 2012, 16:15
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(haker_fox @ Aug 21 2012, 19:05) *
В LPC2478 есть RTC.

И что можно разрешить прерывание в заданное время (часы-минуты-дата)?


Цитата(haker_fox @ Aug 21 2012, 19:05) *
Но вот динамическое создание/удаление процессов было бы полезно: сработал таймер, запустили процесс, выдали в сеть команду, удалили процесс.

Видимо динамическое создание/удаление процессов вызовет падение скоростных характеристик Оси.
Но если таких процессов немного (которые создавать-удалять хотите), то что мешает их сделать обычными процессами с низким приоритетом, ожидающими своего события и начинающими работать, например от сигнала пришедшего от RTC_Handler?
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Aug 22 2012, 04:52
Сообщение #10


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (_Артём_ @ Aug 22 2012, 01:15) *
И что можно разрешить прерывание в заданное время (часы-минуты-дата)?

Да, на одну дату можно. Но мне нужно больльше. Например 32 таймера. Кажется, что поллингом проще будет.
QUOTE (_Артём_ @ Aug 22 2012, 01:15) *
Видимо динамическое создание/удаление процессов вызовет падение скоростных характеристик Оси.
Но если таких процессов немного (которые создавать-удалять хотите), то что мешает их сделать обычными процессами с низким приоритетом, ожидающими своего события и начинающими работать, например от сигнала пришедшего от RTC_Handler?

Да, можно и так!

Спасибо, хорошее обсуждение получилось, мои мысли упорядочились)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 22 2012, 05:21
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (haker_fox @ Aug 22 2012, 07:52) *
Да, на одну дату можно. Но мне нужно больльше. Например 32 таймера. Кажется, что поллингом проще будет.
Почему бы не создать сортированный список времен срабатывания таймеров, как сделано в FreeRTOS? Срабатывает будильник, отсылает сообщение, берет из списка следующее время, программирует его в будильник RTC и т.д.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- haker_fox   Прикручиваю ось к LPC2478   Aug 21 2012, 06:22
- - Сергей Борщ   QUOTE (haker_fox @ Aug 21 2012, 09:22) Ка...   Aug 21 2012, 08:02
|- - haker_fox   QUOTE (Сергей Борщ @ Aug 22 2012, 14:21) ...   Aug 22 2012, 07:37
- - haker_fox   В общем остановился на scmRTOS_CONTEXT_SWITCH_SCHE...   Aug 23 2012, 02:52
- - haker_fox   Ну вот и следующий вопрос. Хочу сделать оговорку, ...   Aug 26 2012, 06:53
|- - _Артём_   Цитата(haker_fox @ Aug 26 2012, 09:53) Не...   Aug 26 2012, 18:44
||- - haker_fox   QUOTE (_Артём_ @ Aug 27 2012, 02:44) Если...   Aug 27 2012, 03:04
|- - shreck   Цитата(haker_fox @ Aug 26 2012, 13:53) На...   Aug 27 2012, 06:55
|- - haker_fox   QUOTE (shreck @ Aug 27 2012, 14:55) А что...   Aug 27 2012, 12:40
- - shreck   Порт lwIP 1.4.0 c использованием scmRTOS. ipnet_c...   Aug 28 2012, 03:02
- - shreck   Обнаружил досадную ошибку в порте, перекочевавшую ...   Aug 31 2012, 07:51
- - haker_fox   Новое интересное поведение) Программа работает вел...   Sep 28 2012, 12:06
- - shreck   Цитата(haker_fox @ Sep 28 2012, 19:06) Но...   Sep 28 2012, 12:48
|- - haker_fox   QUOTE (shreck @ Sep 28 2012, 21:48) Наско...   Sep 28 2012, 12:54
|- - _Артём_   Цитата(shreck @ Sep 28 2012, 15:48) Наско...   Sep 28 2012, 12:57
|- - haker_fox   QUOTE (_Артём_ @ Sep 28 2012, 21:57) У ha...   Sep 28 2012, 13:02
|- - shreck   Цитата(_Артём_ @ Sep 28 2012, 19:57) У ha...   Sep 28 2012, 13:04
- - AHTOXA   Цитата(haker_fox @ Sep 28 2012, 18:06) По...   Sep 28 2012, 16:25
- - haker_fox   QUOTE (AHTOXA @ Sep 29 2012, 01:25) Попро...   Sep 29 2012, 00:39
- - AHTOXA   Цитата(haker_fox @ Sep 29 2012, 06:39) Ма...   Sep 29 2012, 04:53
- - haker_fox   QUOTE (AHTOXA @ Sep 29 2012, 13:53) Узнае...   Sep 29 2012, 06:12
- - Сергей Борщ   QUOTE (haker_fox @ Sep 29 2012, 09:12) В ...   Sep 29 2012, 08:31
- - haker_fox   QUOTE (Сергей Борщ @ Sep 29 2012, 17:31) ...   Sep 29 2012, 09:22


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 18:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.015 секунд с 7
ELECTRONIX ©2004-2016