Jump to content

    
Sign in to follow this  
kolen

FreeRTOS

Recommended Posts

Всем доброго времени суток!

 

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

 

Спасибо!

Share this post


Link to post
Share on other sites
Всем доброго времени суток!

 

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

 

Спасибо!

 

Думаю, что все что есть Вы найдете на http://www.freertos.org/ - на другие источники знаний я пока не натыкался. Переводов не находил

Share this post


Link to post
Share on other sites
как говорится вотс э пити! а может кто видел станвение FreeRTOS с uC/OS-II? скиньте инфу! очень признателен буду!

будьте добры - напишите все то же самое в переводе на русский язык...

Я что-то ничего не понял кроме "признателен буду" :biggrin:

Share this post


Link to post
Share on other sites

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

 

спасибо!

Share this post


Link to post
Share on other sites
вотс э пити - как жалко(англ.)

Уверяю Вас - это никак не (англ.) - это в лучшем случае т.н. "суржик"...

А то, что Вы имели ввиду пишется немного иначе:

What's a pity! :biggrin:

 

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

Они как всегда - всяк свое болото хвалят.

 

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

По-моему он в курсе обеих ОС...

 

Меня лично во FreeRTOS привлекает ее полная открытость, доступность, способность работать на широком спектре процессоров, а так же ее лицензия GNU. Cравнением с другими Ося-ми я не занимался пока что - ее выбрали у нас базовой без меня и до меня.

Share this post


Link to post
Share on other sites
вотс э пити - как жалко(англ.) может быть кто нибудь видел сравнительную информацию между FreeRTOS с uC/OS-II (что есть у одной, а что есть у другой). признателен буду если скините какую нибудь ссылку!

 

спасибо!

 

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

 

HTH,

--

Share this post


Link to post
Share on other sites

Всем спасибо! вроде все ясно! бумем пользовать пока FreeRTOS (все таки ее то можно достать:)) а тм может че появится или сам разберуть!

 

Еще раз спасибо!

Share this post


Link to post
Share on other sites
Если не ошибаюсь, нет таймеров в FRTS.

Ну по сути - они практически есть... в виде функции delay на заданное количество тиков размером в 1 мсек... Кроме того FreeRTOS по крайней мере в реализации для АРМ-9 практически никак не использует аппаратные таймеры, для которых написать собственный драйвер не стоит ровно ничего в рамках FreeRTOS. Точно так же FreeRTOS для ARM-9 не использует RTC(Real Time Clock), который тоже легко реализуется в ее рамках для получения независимого таймера реального времени...

Share this post


Link to post
Share on other sites

Для работы с временными задержками используются функции:

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#

Share this post


Link to post
Share on other sites

Столкнулся со следующей проблемой:

 

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

 

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

Портов freeRTOS под LPC2xxx для RealView компилятора найти не смог :help:

 

Может быть кто-то уже решал такую задачу?

Share this post


Link to post
Share on other sites
В нем, в числе прочего, изменился формат инлайн ассемблера и встроенного ассемблера тоже.

Ну ассемблером придется чуть-чуть ознакомиться. А что-бы меньше возни было - inline похерить - он там совершенно ни к чему.

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

- то, что наворочено в portmacro - заменить на нормальный асмовский файл (можно воспользоватся другими ARM портами в качестве образца)

 

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

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

 

Успехов!

Share this post


Link to post
Share on other sites

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

 

static int counter = 0;

void Uart2ISR(void){

counter ++;

}

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

counter--; 

}
}

Edited by elektronshik

Share this post


Link to post
Share on other sites
Подскажите пожалуйста как в приведенном ниже примере правильно (с помощью мютексов и семафоров) синхронизировать обработчик прерываний и задачу

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

Share this post


Link to post
Share on other sites
Правильно, с помощью критической секции. Семафоры для синхронизации задач, как Вы, простите, себе мыслите ждущий семафора обработчик прерывания....

 

 

В 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);
}
}

Edited by elektronshik

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this