|
|
  |
Выбор РТ ОС под omap, Посоветуйте |
|
|
|
Oct 10 2012, 08:07
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(gormih @ Oct 10 2012, 09:36)  Нужна ОС реального времени, которая уже портирована под OMAP 1808, либо которую можно в кратчайшие сроки портировать. Интересуют как коммерческие продукты, так и с открытым исходным кодом. Прошу помощи - подсказок, на что обратить внимание. Я бы рекомендовал Nucleus ReadyStartПлатформа далеко обходит по возможностям все RTOS с открытым кодом. При этом очень компактная. Работает в режиме как с MMU так и без MMU. Портирование практически такое же как у известной uCOS. Под OMAP 1808 уже есть порт. Размер и быстродействие тоже конкурируют с uCOS и прочими компактными осями.
|
|
|
|
|
Oct 15 2012, 06:52
|

nofb
  
Группа: Свой
Сообщений: 430
Регистрация: 18-05-06
Из: Москва, Зеленоград
Пользователь №: 17 218

|
Цитата(beaRTS @ Oct 10 2012, 10:42)  Пока придерживаюсь этой линии, спасибо :-) Цитата(AlexandrY @ Oct 10 2012, 12:07)  Я бы рекомендовал Nucleus ReadyStartПлатформа далеко обходит по возможностям все RTOS с открытым кодом. При этом очень компактная. Работает в режиме как с MMU так и без MMU. Портирование практически такое же как у известной uCOS. Под OMAP 1808 уже есть порт. Размер и быстродействие тоже конкурируют с uCOS и прочими компактными осями. У них явно какие то проблемы с менеджером... Запросил дополнительную информацию о лицензии и стоимости - молчат... За наводку спасибо.
--------------------
Это не то что вы подумали ...
|
|
|
|
|
Oct 15 2012, 13:37
|

nofb
  
Группа: Свой
Сообщений: 430
Регистрация: 18-05-06
Из: Москва, Зеленоград
Пользователь №: 17 218

|
Цитата(Mahagam @ Oct 15 2012, 14:22)  ам1808? это где арм9 ядро? ну так берите всё что под арм7 и не парьтесь. хотя бы тотже фриртос. я у себя CTL запустил, кэши включил - летает. Для того, чтобы это сделать нужно как минимум хорошо знать структуру ОС, и как ее портировать на конкретный процессор? Или я в чем то заблуждаюсь? Карта регистров не меняется разве? Перечень оборудования? Это все надо где то прописать. А на это далеко не всегда есть время. Желательно иметь готовый вариант.
--------------------
Это не то что вы подумали ...
|
|
|
|
|
Oct 17 2012, 08:08
|
Местный
  
Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240

|
QUOTE (aaarrr @ Oct 15 2012, 18:11)  Еще контроллер прерываний настроить. Собственно, для 1808 это будет основной частью работы. CODE int ctl_set_isr(unsigned int number, unsigned int priority, CTL_ISR_FN_t isr, CTL_ISR_FN_t *oldisr) { unsigned long *cmr; unsigned long cmr_data, mask;
if (number > sizeof(ctl_isr_table)/sizeof(CTL_ISR_FN_t)) return 0; if (oldisr) *oldisr = ctl_isr_table[number]; ctl_isr_table[number] = isr;
cmr = (unsigned long *)&AINTC->CMR0; cmr += number/4; cmr_data = *cmr; mask = 0xFF<<((number%4)<<3); cmr_data &= ~mask; cmr_data |= priority<<((number%4)<<3); *cmr = cmr_data;
// Enable Interrupts CSL_FINS(AINTC->EISR, AINTC_EISR_INDEX, number); return 1; }
как-то так. никакой работы. ну разве что таблицу векторов надо в шустром месте разместить, да обработчик прерывания должен знать как успокоить контроллер и как выковырять правильный вектор из таблицы
|
|
|
|
|
Oct 17 2012, 12:09
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Mahagam @ Oct 17 2012, 12:08)  как-то так. никакой работы. Никакой работы - это настройка таймера. А здесь мануал почитать все же придется. Цитата(Mahagam @ Oct 17 2012, 12:08)  ну разве что таблицу векторов надо в шустром месте разместить, да обработчик прерывания должен знать как успокоить контроллер и как выковырять правильный вектор из таблицы А зачем обработчику что-то выковыривать? Векторизация решается двумя командами ldr pc, [pc, #offs] - одной на векторе 0x18, и второй на векторе AINTC.
|
|
|
|
|
Oct 17 2012, 13:35
|
Местный
  
Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240

|
я там не всё привёл, но все равно, настойка AINTC не сильно сложнее таймера. векторизация вышла такая: CODE ldr r0, _AINTC_GPVR_ADDR ; r0 contains address of GPVR ; (which contains ISR address) ldr r0, [r0] ; r0 contains address of highest ; prioritized ISR add r14, pc, #0 ; Save return address in LR, ; PC = PC + 8 bytes,see documentation ldr pc, [r0] ; Go to ISR (still in IRQ mode), ; will return to following line
тоже вроде ничего сложного.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|