|
Написал порт scmRTOS под ARM, интересны отзывы |
|
|
|
 |
Ответов
|
May 18 2006, 15:14
|

Гуру
     
Группа: Модераторы
Сообщений: 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)
|
|
|
|
|
May 18 2006, 18:50
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
Сообщений в этой теме
Сергей Борщ Написал порт 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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|