Кто-нибудь работает с rt-патчами под ARM?
Пропатчил ядро 3.2.2 последней версией патча (rt10). В конфиге появилась занятная строка "Fully preemptible kernel(full RT)".
Означает ли это что Linux стал "ОСРВ"?
Ранее ничего подобного не было.
После того как выставил это опцию, ядро перестало грузить рутовую с MMC.
пишет, (видимо Debug MMC):
atmel_serial: atmel_startup - Can't get irq
Посему есть вопросы:
что можно сделать?
нужно ли ставить промежуточные rt-патчи?
как-то можно напрямую связаться с разработчиками патча?
У меня под линуксом на ARM9 планируется нечто вроде ПЛК(PLC) запустить.
при том что кроме логических функции нужен ещё веб серер и ftp-сервер.
Может тогда в сторону RTAI посмотреть?
Изменить приоритет - утилита chrt (помоему даже в базибоксе есть). Так как в -rt все обработчики прерываний это отдельные потоки ядра - им точно также как обычным процессам можно назначить приоритеты это утилитой. Еще момент - помоему uclibc нельзя использовать с ядром -rt.
Для i.mx233 я правил ядро, так что гладко все не всегда бывает. Лучше сделайте корневую в initramfs а mmc монтируйте потом - а так у вас даже консоли нет чтобы какую-то диагностику сделать.
Да, наверное так и придётся сделать, но, что я заметил:
взял ядро 2.6.33.7 накатил патч 2.6.33.7.2-rt30, в конфиге отлкючил вытеснение ядра и вообще всё что связано с реалтайм.
ПРоблема осталась, а консоль выдаёт дебаг сообщения (настрол в конфиге вывод):
и так далее...
странно, ядро 3.2.4 цепляет рутовую нормально (при отключении реалтайма).
Вот и last stable version...)
Хотя кривость своих рук не отрицаю)
Посмотрел на linux 3.2.9 - та же картина, связано с тем что у атмел системный таймер (PIT) висит на одном векторе с DBGU и прочими, с mmc проблем нет - у меня корневая на SD. Погуглил - не мы первые столкнулись с этим - на обычном ядре все ок а вот с rt патчем это не прокатывает, выхода 3
1 использовать для консоли другой последовательный порт (DBGU вообще не использовать - отключить в board-файле))
2 переписать системный таймер например на TC
3 переписать драйвер последовательного порта :) и использовать отложенную обработку прерываний (вне контекста irq), в контексте irq только проверять - от DBGU прерывание или нет.
вообще атмеловский AIC хоть и векторный - по дурацки используется, много периферии висит на одном векторе, тот же TC в g45 - на одном прерывании висят все блоки, так что если переписать на TC системный таймер то ни один из них больше прерывания не должен использовать.
так как у него рейтинг выше чем у системного таймера на PIT то ядро на него переключается автоматически, ничего править не нужно - все работает как часы :)