Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выбор РТ ОС под omap
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
gormih
Нужна ОС реального времени, которая уже портирована под OMAP 1808, либо которую можно в кратчайшие сроки портировать.
Интересуют как коммерческие продукты, так и с открытым исходным кодом.
Прошу помощи - подсказок, на что обратить внимание.
beaRTS
SYS/BIOS от TI
AlexandrY
Цитата(gormih @ Oct 10 2012, 09:36) *
Нужна ОС реального времени, которая уже портирована под OMAP 1808, либо которую можно в кратчайшие сроки портировать.
Интересуют как коммерческие продукты, так и с открытым исходным кодом.
Прошу помощи - подсказок, на что обратить внимание.


Я бы рекомендовал Nucleus ReadyStart
Платформа далеко обходит по возможностям все RTOS с открытым кодом. При этом очень компактная.
Работает в режиме как с MMU так и без MMU.
Портирование практически такое же как у известной uCOS. Под OMAP 1808 уже есть порт.
Размер и быстродействие тоже конкурируют с uCOS и прочими компактными осями.
gormih
Цитата(beaRTS @ Oct 10 2012, 10:42) *
SYS/BIOS от TI

Пока придерживаюсь этой линии, спасибо :-)

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

У них явно какие то проблемы с менеджером... Запросил дополнительную информацию о лицензии и стоимости - молчат...
За наводку спасибо.
Mahagam
ам1808? это где арм9 ядро? ну так берите всё что под арм7 и не парьтесь. хотя бы тотже фриртос. я у себя CTL запустил, кэши включил - летает.
gormih
Цитата(Mahagam @ Oct 15 2012, 14:22) *
ам1808? это где арм9 ядро? ну так берите всё что под арм7 и не парьтесь. хотя бы тотже фриртос. я у себя CTL запустил, кэши включил - летает.

Для того, чтобы это сделать нужно как минимум хорошо знать структуру ОС, и как ее портировать на конкретный процессор?
Или я в чем то заблуждаюсь?
Карта регистров не меняется разве?
Перечень оборудования?
Это все надо где то прописать.
А на это далеко не всегда есть время. Желательно иметь готовый вариант.
Mahagam
ничего там не надо. для всех этих таск-шедулеров единственный ресурс который нужен - таймер.
ARM7/9 - насколько я помню набор инструкций совпадает. у меня основное время заняла адаптация ассемблерного файла собственно переключателя контекста под особенности компилятора/ассемблера CCS. собственно код не правился вообще
aaarrr
Цитата(Mahagam @ Oct 15 2012, 18:38) *
ничего там не надо. для всех этих таск-шедулеров единственный ресурс который нужен - таймер.

Еще контроллер прерываний настроить. Собственно, для 1808 это будет основной частью работы.
Mahagam
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;
}



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

aaarrr
Цитата(Mahagam @ Oct 17 2012, 12:08) *
как-то так. никакой работы.

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

Цитата(Mahagam @ Oct 17 2012, 12:08) *
ну разве что таблицу векторов надо в шустром месте разместить, да обработчик прерывания должен знать как успокоить контроллер и как выковырять правильный вектор из таблицы

А зачем обработчику что-то выковыривать? Векторизация решается двумя командами ldr pc, [pc, #offs] - одной на векторе 0x18, и второй на векторе AINTC.
Mahagam
я там не всё привёл, но все равно, настойка 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

тоже вроде ничего сложного.
evg123
Мы без проблем установили LINUX - взяли с сайта TI. Используем OMAP L-138 (там Am1808 + Dsp6748).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.