Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FreeRTOS
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > FreeRTOS
kolen
Всем доброго времени суток!

Хочу разобраться с этой самой FreeRTOS! скачал ее с родного сайта! а есть ли литературка (желательно на русском) с описанием самой этой ОС и ее параметров. ну вобщем все про нее? соедет все!

Спасибо!
Николай Z
Цитата(kolen @ Dec 14 2007, 15:55) *
Всем доброго времени суток!

Хочу разобраться с этой самой FreeRTOS! скачал ее с родного сайта! а есть ли литературка (желательно на русском) с описанием самой этой ОС и ее параметров. ну вобщем все про нее? соедет все!

Спасибо!


Думаю, что все что есть Вы найдете на http://www.freertos.org/ - на другие источники знаний я пока не натыкался. Переводов не находил
kolen
как говорится вотс э пити! а может кто видел станвение FreeRTOS с uC/OS-II? скиньте инфу! очень признателен буду!
Николай Z
Цитата(kolen @ Dec 14 2007, 17:31) *
как говорится вотс э пити! а может кто видел станвение FreeRTOS с uC/OS-II? скиньте инфу! очень признателен буду!

будьте добры - напишите все то же самое в переводе на русский язык...
Я что-то ничего не понял кроме "признателен буду" biggrin.gif
kolen
вотс э пити - как жалко(англ.) может быть кто нибудь видел сравнительную информацию между FreeRTOS с uC/OS-II (что есть у одной, а что есть у другой). признателен буду если скините какую нибудь ссылку!

спасибо!
Николай Z
Цитата(kolen @ Dec 17 2007, 09:35) *
вотс э пити - как жалко(англ.)

Уверяю Вас - это никак не (англ.) - это в лучшем случае т.н. "суржик"...
А то, что Вы имели ввиду пишется немного иначе:
What's a pity! biggrin.gif

А насчет сравнений - это вряд ли... Разработчикам Осей - такие сравнения обычно не нужны.
Они как всегда - всяк свое болото хвалят.

Могу только дельный совет дать - попробуйте ztligo спросить.
По-моему он в курсе обеих ОС...

Меня лично во FreeRTOS привлекает ее полная открытость, доступность, способность работать на широком спектре процессоров, а так же ее лицензия GNU. Cравнением с другими Ося-ми я не занимался пока что - ее выбрали у нас базовой без меня и до меня.
AndrewN
Цитата(kolen @ Dec 17 2007, 09:35) *
вотс э пити - как жалко(англ.) может быть кто нибудь видел сравнительную информацию между FreeRTOS с uC/OS-II (что есть у одной, а что есть у другой). признателен буду если скините какую нибудь ссылку!

спасибо!


За исключением сравнения времен переключения задач (в ARM форуме), я других сравнений не видел; но вряд ли нужно по этому поводу питиировать. Есть документация и текст, и сравнение (для себя) просто дело времени. Вкратце и нестрого, обе системы делают одно и тоже, незначительно отличаясь в деталях, например в алгоритмах планировки. И далее по тексту. Все, что есть у одной, в том или ином виде есть и у другой. Если не ошибаюсь, нет таймеров в FRTS.

HTH,
--
kolen
Всем спасибо! вроде все ясно! бумем пользовать пока FreeRTOS (все таки ее то можно достатьsmile.gif) а тм может че появится или сам разберуть!

Еще раз спасибо!
Николай Z
Цитата(AndrewN @ Dec 17 2007, 13:08) *
Если не ошибаюсь, нет таймеров в FRTS.

Ну по сути - они практически есть... в виде функции delay на заданное количество тиков размером в 1 мсек... Кроме того FreeRTOS по крайней мере в реализации для АРМ-9 практически никак не использует аппаратные таймеры, для которых написать собственный драйвер не стоит ровно ничего в рамках FreeRTOS. Точно так же FreeRTOS для ARM-9 не использует RTC(Real Time Clock), который тоже легко реализуется в ее рамках для получения независимого таймера реального времени...
Chudik
Для работы с временными задержками используются функции:
volatile portTickType xTaskGetTickCount( void );
void vTaskDelayUntil( portTickType *pxPreviousWakeTime, portTickType xTimeIncrement );
void vTaskDelay( portTickType xTicksToDelay );

Каждый tick - 1ms

Я сам только начал с этой системой работать. Написал небольшую заготовку для моего проекта на базе freertosDemo. Вроде работает.

Где-то здесь хвастались, что скомпилировали хелп файл .chm из онлайнового хелпа. Найти бы его...

Ага, вот: http://electronix.ru/forum/index.php?showt...0063&st=15#
std-logic
Столкнулся со следующей проблемой:

Задача стоит портировать freeRTOS для LPC2468, работаю в Кейл. На freeRTOS.org есть порт для LPC2xxx, но для версий Кейл с родным (кейловским же) компилером. Сейчас же, как известно, кейл идет с АРМовским компилером. В нем, в числе прочего, изменился формат инлайн ассемблера и встроенного ассемблера тоже. Из-за этого вываливается куча ошибок при компиляции startup.s и portmacro.h (то есть файлов с ассемблерным кодом).

Попытки самостоятельно переделать упомянутые файлы пока не увенчались успехом (в АРМ-ассемблере, особенно в его вариантах под разные компиляторы, я новичок...)
Портов freeRTOS под LPC2xxx для RealView компилятора найти не смог help.gif

Может быть кто-то уже решал такую задачу?
zltigo
Цитата(std-logic @ Feb 24 2008, 09:45) *
В нем, в числе прочего, изменился формат инлайн ассемблера и встроенного ассемблера тоже.

Ну ассемблером придется чуть-чуть ознакомиться. А что-бы меньше возни было - inline похерить - он там совершенно ни к чему.
- в критических секциях асмовские вставки заменить на __disable/enable_irq (причем так даже в большинстве случаев правильнее, нежели используемый огульный запрет и irq, и fiq)
- то, что наворочено в portmacro - заменить на нормальный асмовский файл (можно воспользоватся другими ARM портами в качестве образца)

Останется буквально чуть-чуть, практически формально даже, ознакомиться с ASM.
От других LPC21xx портов LPC24xx отличается практически только контроллером прерывания - придется разобраться и подправить.

Успехов!
elektronshik
Подскажите пожалуйста как в приведенном ниже примере правильно (с помощью мютексов и семафоров) синхронизировать обработчик прерываний и задачу, изменяющие общие переменные.

Код
static int counter = 0;

void Uart2ISR(void){

counter ++;

}

void SampleTask(void){
for(;;){
vTaskDelay(10);

counter--;

}
}
zltigo
Цитата(elektronshik @ Dec 15 2008, 09:13) *
Подскажите пожалуйста как в приведенном ниже примере правильно (с помощью мютексов и семафоров) синхронизировать обработчик прерываний и задачу

Правильно, с помощью критической секции. Семафоры для синхронизации задач, как Вы, простите, себе мыслите ждущий семафора обработчик прерывания....
elektronshik
Цитата(zltigo @ Dec 15 2008, 10:23) *
Правильно, с помощью критической секции. Семафоры для синхронизации задач, как Вы, простите, себе мыслите ждущий семафора обработчик прерывания....



В uC/OSII все работало вот так:

Код
static int counter = 0;
INT8U err;
OS_EVENT * Uart2Sem;

void Uart2ISR(void){
OSSemPend(Uart2Sem,0,&err);
counter ++;
OSSemPost(Uart2Sem);
}

void SampleTask(void){
for(;;){
OSTimeDlyHMSM(0, 0, 0, 10);
OSSemPend(Uart2Sem,0,&err);
counter--;
OSSemPost(Uart2Sem);
}
}
zltigo
Цитата(elektronshik @ Dec 15 2008, 10:37) *
В uC/OSII все работало вот так:

Было НАПИСАНО так. "Бумага" многое что стерпит.
Сергей Борщ
Цитата(elektronshik @ Dec 15 2008, 08:13) *
Подскажите пожалуйста как в приведенном ниже примере
Самое первое, что нужно сделать, чтобы этот код вообще заработал на сколь-нибудь оптимизирующем компиляторе - добавить volatile к описанию counter. Далее, если процессор действие counter ++; в прерывании производит атомарно, то синхронизация не требуется. Но это ведь упрощенный пример, и у вас там скорее всего будут более полезные действия и может даже не с одной переменной? Тогда только критические секции.
elektronshik
Всем спасибо, буду пользовать критические секции.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.