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

 
 
> Написал порт scmRTOS под ARM, интересны отзывы
Сергей Борщ
сообщение May 15 2006, 14:19
Сообщение #1


Гуру
******

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



Написал порт scmRTOS (http://scmrtos.narod.ru/) для ARM. Отлаживал на AT91SAM7S64. Поскольку опыта в ARMах пока маловато (второй проект на ARM и первый с асмом), то перед тем как связываться с автором хотелось бы чтобы кто-то более опытный глянул. Порт лежит тут: http://upload.caxapa.ru/scmRTOS_arm.zip
Спасибо всем.


--------------------
На любой вопрос даю любой ответ
"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
 
Start new topic
Ответов
Сергей Борщ
сообщение May 18 2006, 15:14
Сообщение #2


Гуру
******

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



Сравнил по скорости с FreeRTOS. Тест простой: низкоприоритетный процесс сигналит семафор, более высокоприоритетный его ждет. Код:
Код
/******  FreeRTOS  **********/
static void Task1( void * pvParameters ) {
    for(;;) {
        xSemaphoreTake( xSemaphore, ( portTickType )-1 );
        off(LED0);
    }
}
static void Task2( void * pvParameters ) {
    for(;;) {
        on(LED0);
        xSemaphoreGive( xSemaphore );
    }
}
void main( void ) {
    prvSetupHardware();

    vSemaphoreCreateBinary( xSemaphore );
    xTaskCreate( Task1, "Task1", 300, 0, tskIDLE_PRIORITY + 2, ( xTaskHandle * ) NULL );
    xTaskCreate( Task2, "Task2", 300, 0, tskIDLE_PRIORITY + 1, ( xTaskHandle * ) NULL );

    vTaskStartScheduler();
}
/******** scmRTOS   ***********/
OS_PROCESS void TProc1::Exec() {
    for(;;)
    {
        ef.Wait();
        off(LED0);
    }
}
OS_PROCESS void TProc2::Exec() {
    for(;;)
    {
        on(LED0);
        ef.Signal();
    }
}

Результат (частота 49,152МГц):
Код
   ОС            светодиод горит             светодиод не горит
FreeRTOS THUMB         59 мкс                      35 мкс
FreeRTOS ARM          не компилится согласно документации
scmRTOS  THUMB         7.5 мкс                     7.5 мкс
scmRTOS  ARM            5 мкс                       5 мкс
При этом семафор в scmRTOS занимает 4 байта в FreeRTOS - 76, процесс занимает 4 байта + стек, в FreeRTOS - 76 + стек. Сколько ОЗУ требует ядро FreeRTOS я не искал.

Цитата(zltigo @ May 18 2006, 17:38) *
Цитата(Сергей Борщ @ May 18 2006, 16:06) *

Совсем не уверен. Во всяком случае
Код
    int x,y;
    xQueueReceive(&x, &y, 0);
IAR съел молча, хотя int* это совсем не xQueueHandle. И что-то мне казалось что в С это не разные типы а синонимы, это в С++ будут разные типы.

Ну начинаем выкручиваться:
1. Амперсандик добавили, спасибо, что не (xQueueHandle) :-)

результат &x где x-int имеет тип *int, так что не принимается.
Цитата
2. С настройками компилятора разберитесь, ибо я, естественно, как и положено, получил
Вот тут да. Согласно рекомендациям в поле suppress those warnings стоит pe815, pe191, pa082, pe167. Заметьте, не я их туда поставил а авторы FreeRTOS.

Цитата
Цитата

По сравнению объемов мне непонятно откуда такие цифры? Чего-то вы напутали. Заглянул в .map, получил там такое:

Тоже из MAP. MAP в тестовом виде прилагается, кстати, был в свое время обрадован IARовским
HTML мапом. Смотрите в приложении:
Понял, спасибо. Буду посмотреть.

Цитата
Цитата

Счас попробую замерить время переключения контекстов.

Если мне не изменяет память, то я получил на уровне 7us. Но это при ЧЕСТНОМ измерении,
от момента ВНЕШНЕГО а не таймерного прерывания и до проднятия задачи дергающей PIN.
Время это время для FreeRTOS, естественно, не фиксированное. Задач было около 6. Можно
повторить под протокол, но через недельку - болею сейчас.
нда, такой эксперимент я не проводил, может завтра рискну. О своих результатах написал чуть выше.
P.S. к семинару Тексаса выздоровишь (24-го)?


--------------------
На любой вопрос даю любой ответ
"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
zltigo
сообщение May 18 2006, 18:50
Сообщение #3


Гуру
******

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



Цитата(Сергей Борщ @ May 18 2006, 18:14) *
FreeRTOS THUMB 59 мкс 35 мкс
FreeRTOS ARM не компилится согласно документации

Сразу как-то прощляпил "не компилится" :-(
Причем поминанием документации. Посмотрел - никаких препятствий, работает, только один битик, естественно,
в SPSR подправить надо:
Код
/* Constants required to setup the initial stack. */
#if __CPU_MODE__ == 1         // zlt[      
#define portINITIAL_SPSR                ( ( portSTACK_TYPE ) 0x3F ) // System mode, THUMB mode, Interrupts enabled.
#endif                      //]zlt

#if __CPU_MODE__ == 2        // zlt[
#define portINITIAL_SPSR                ( ( portSTACK_TYPE ) 0x1F ) // System mode, ARM mode, Interrupts enabled.
#endif                      //]zlt


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Сергей Борщ   Написал порт scmRTOS под ARM   May 15 2006, 14:19
- - Pat   Цитата(Сергей Борщ @ May 15 2006, 16:19) ...   May 15 2006, 16:20
- - Сергей Борщ   >Я не шибко опытный, но что то компилер не нахо...   May 15 2006, 16:35
|- - Pat   Скомпилир все ОК. Запускаю отладку в симуляторе. П...   May 15 2006, 17:20
|- - Сергей Борщ   Цитата(Pat @ May 15 2006, 20:20) Скомпили...   May 15 2006, 17:44
|- - Сергей Борщ   Цитата(Pat @ May 15 2006, 20:20) Запускаю...   May 16 2006, 14:10
- - GetSmart   ЦитатаВ данной же ситуации симулятор загружает SPS...   May 16 2006, 15:43
|- - Сергей Борщ   Цитата(GetSmart @ May 16 2006, 18:43) Цит...   May 16 2006, 16:04
|- - spf   Цитата(Сергей Борщ @ May 16 2006, 22:04) ...   May 17 2006, 03:45
- - GetSmart   Напишите комментарии в ASM-файле к каждой команде....   May 16 2006, 16:32
|- - Сергей Борщ   Цитата(GetSmart @ May 16 2006, 19:32) Нап...   May 16 2006, 18:36
- - GetSmart   Вопрос: почему у вас в xcl-файле начальные адреса ...   May 16 2006, 18:09
- - GetSmart   Всё-равно как-то запутанно. Попробуйте разобраться...   May 16 2006, 19:17
|- - Сергей Борщ   Цитата(GetSmart @ May 16 2006, 22:17) Всё...   May 16 2006, 19:57
- - GetSmart   Цитатаmsr CPSR_cf,lr ; перек. в SYSTEM с разреш. п...   May 16 2006, 20:20
- - Сергей Борщ   Послушал советы, кое-чего поправил. Сделал targets...   May 17 2006, 12:37
- - GetSmart   ЦитатаСтранно, но почему-то в моем макете с AT91SA...   May 17 2006, 16:17
|- - Сергей Борщ   Цитата(GetSmart @ May 17 2006, 19:17) Цит...   May 17 2006, 16:56
|- - zltigo   Не сочтите за 'наезд' - работа несомненно ...   May 18 2006, 07:06
|- - Сергей Борщ   Цитата(zltigo @ May 18 2006, 10:06) Цитат...   May 18 2006, 07:45
|- - zltigo   Цитата(Сергей Борщ @ May 18 2006, 10:45) ...   May 18 2006, 08:29
|- - Сергей Борщ   Цитата(zltigo @ May 18 2006, 11:29) Цитат...   May 18 2006, 09:08
|- - zltigo   Цитата(Сергей Борщ @ May 18 2006, 12:08) ...   May 18 2006, 09:37
|- - Сергей Борщ   Цитата(zltigo @ May 18 2006, 12:37) Цитат...   May 18 2006, 13:06
|- - zltigo   Цитата(Сергей Борщ @ May 18 2006, 16:06) ...   May 18 2006, 14:38
- - GetSmart   Смотрите, что я нарыл: (цитата из книжки) Бит S ис...   May 17 2006, 18:11
|- - GetSmart   Касательно файла Target_LPC2xxx.h "#define C...   May 17 2006, 18:53
||- - Сергей Борщ   Цитата(GetSmart @ May 17 2006, 21:53) Кас...   May 18 2006, 08:14
|- - Сергей Борщ   Цитата(GetSmart @ May 17 2006, 21:11) Смо...   May 18 2006, 07:16
- - GetSmart   ЦитатаНо все же я настаиваю, что восстановление CP...   May 17 2006, 21:04
|- - Сергей Борщ   Цитата(GetSmart @ May 18 2006, 00:04) Дум...   May 18 2006, 07:00
- - GetSmart   ЦитатаЦитата Команды "LDMFD LR, {R0-LR}^ ; NO...   May 18 2006, 09:13
- - zltigo   Давайте я Вас еще попытаюсь совлечь c "пути и...   May 18 2006, 15:01
|- - Сергей Борщ   Цитата(zltigo @ May 18 2006, 18:01) Давай...   May 18 2006, 15:21
|- - zltigo   Цитата(Сергей Борщ @ May 18 2006, 18:21) ...   May 18 2006, 15:40
|- - zltigo   Цитата(Сергей Борщ @ May 18 2006, 18:04) ...   May 18 2006, 15:16
||- - Сергей Борщ   Цитата(zltigo @ May 18 2006, 18:16) Цитат...   May 18 2006, 15:41
|- - zltigo   [quote name='Сергей Борщ' date='May 18...   May 18 2006, 15:24
|- - Сергей Борщ   Цитата(zltigo @ May 18 2006, 21:50) Цитат...   May 19 2006, 11:04
|- - zltigo   Цитата(Сергей Борщ @ May 19 2006, 14:04) ...   May 19 2006, 11:49
|- - Сергей Борщ   Цитата(zltigo @ May 19 2006, 14:49) Ну во...   May 19 2006, 13:13
|- - zltigo   Цитата(Сергей Борщ @ May 19 2006, 16:13) ...   May 19 2006, 13:32
|- - Сергей Борщ   Цитата(zltigo @ May 19 2006, 16:32) Цитат...   May 19 2006, 13:37
- - GetSmart   2 Сергей Борщ Когда закончите доводить до ума свою...   May 18 2006, 15:41
|- - Сергей Борщ   Цитата(GetSmart @ May 18 2006, 18:41) 2 С...   May 18 2006, 15:50
- - sergeeff   Я давно приглядываюсь к scmRTOS применительно к AR...   May 20 2006, 14:01
|- - Сергей Борщ   Цитата(sergeeff @ May 20 2006, 17:01) Я д...   May 20 2006, 17:50
||- - ig_z   Цитата(Сергей Борщ @ May 20 2006, 20:50) ...   May 21 2006, 00:02
||- - Dainis   Цитата(ig_z @ May 20 2006, 18:01) Почему ...   May 21 2006, 12:07
|- - amusin   Цитата(sergeeff @ May 20 2006, 20:01) Ест...   May 22 2006, 04:55
|- - amusin   Цитата(Сергей Борщ @ May 20 2006, 23:50) ...   May 22 2006, 05:32
|- - Сергей Борщ   Цитата(amusin @ May 22 2006, 08:32) Цитат...   May 22 2006, 08:22
- - ig_z   2 Сергей Борщ Посмотрел ваш порт, сходу возник а...   May 20 2006, 15:01
- - sergeeff   Да. Еще про critical section. Твой вариант запрета...   May 20 2006, 15:32
- - GetSmart   ЦитатаSWI единственный коректный способ вызова SYS...   May 21 2006, 12:36
|- - zltigo   ЦитатаМожно хотябы в общих словах пример кода, я е...   May 21 2006, 16:54
- - GetSmart   Цитатавопрос только в том, нужны-ли эти выкрутасы ...   May 21 2006, 17:38
|- - zltigo   Цитата(GetSmart @ May 21 2006, 20:38) А п...   May 21 2006, 18:34
- - GetSmart   Самая близкая по смыслу цитата из <arm7tdmi.pdf...   May 21 2006, 19:08
|- - zltigo   Цитата(GetSmart @ May 21 2006, 22:08) Про...   May 21 2006, 20:02
- - Сергей Борщ   Завтра (в понедельник) буду изучать все это вдумчи...   May 21 2006, 19:42
|- - zltigo   Цитата(Сергей Борщ @ May 21 2006, 22:42) ...   May 21 2006, 20:33
- - GetSmart   1,2,3 - OK 4. Как только в коде (даже в IRQ, и даж...   May 21 2006, 19:57
- - GetSmart   ЦитатаА посмотреть на исходник и почитать Аtmel-ов...   May 21 2006, 20:34
|- - zltigo   Цитата(GetSmart @ May 21 2006, 23:34) У-у...   May 21 2006, 20:57
- - GetSmart   ЦитатаНе стал, но завязан :-( А AIC уже в официаль...   May 21 2006, 21:28
|- - zltigo   Цитата(GetSmart @ May 22 2006, 00:28) Ну ...   May 21 2006, 22:21
- - aaarrr   Цитата(amusin @ May 22 2006, 09:32) Нет в...   May 22 2006, 10:32
- - Сергей Борщ   Спасибо всем, кто подсказал функцию поиска наиболе...   May 22 2006, 11:30
|- - amusin   Цитата(Сергей Борщ @ May 22 2006, 17:30) ...   May 22 2006, 11:48
|- - Сергей Борщ   Цитата(amusin @ May 22 2006, 14:48) Цитат...   May 22 2006, 11:59
|- - IgorKossak   Цитата(Сергей Борщ @ May 22 2006, 14:59) ...   May 22 2006, 12:16
- - sergeeff   Да, конечно, для ARM надо сделать количество проце...   May 22 2006, 15:40
|- - amusin   Цитата(sergeeff @ May 22 2006, 21:40) Да,...   May 23 2006, 02:32
|- - Сергей Борщ   Цитата(amusin @ May 23 2006, 05:32) Цитат...   May 23 2006, 07:25
- - sergeeff   Пара соображений по поводу быстродействия. Я эту и...   May 26 2006, 17:34
|- - IgorKossak   Цитата(sergeeff @ May 26 2006, 20:34) ......   May 27 2006, 16:03
|- - dxp   Цитата(sergeeff @ May 27 2006, 00:34) voi...   May 29 2006, 03:46
|- - amusin   Цитата(dxp @ May 29 2006, 09:46) Гарри,...   May 29 2006, 06:18
- - GetSmart   ЦитатаУ АРМа есть аппаратный сдвигатель? Конечно е...   May 29 2006, 09:20
|- - spf   Цитата(GetSmart @ May 29 2006, 15:20) Цит...   May 29 2006, 10:16
- - GetSmart   АРМ имеет команды с обоими вариантами: как непосре...   May 29 2006, 10:21


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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 23:32
Рейтинг@Mail.ru


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