ну я в принципе так и думал, но была малююююсенькая надежда что "портировщики" PIT не тронут, там же RTT есть.
ох, я уж смотрел в их сторону, но они мне показались гораздо сложнее чем PIT. ну что ж, будем пробовать :( а в AIC можно запрограмировать прерывание на ТС? Линух не будет ругаться?
мне нужно не столько точность задержек, сколько точность периодичности вызова функции (хотя полагаю вы это и имели в виду).
функция пока реализуется на уровне приложения, может потом перепишу ее в виде драйвера. мне думается в этом урезаном линухе не так много служб и сторонних процессов, которые могут "заховать" проц "в самый неподходящий момент". да и приоритет конечно подниму.
вообще, сдается мне что Linux на этих kit`ах - вроде игрушки. ну так, сделали, чтобы показать что это в принципе возможно.
так никто не мешает вместо линукса загрузить на кит что-то свое под свои задачи..
кит он для того и существует, что можно попробовать на конкретном железе свои идеи без предварительных "трахов" по созданию макетки
При наличии примеров в at91lib дело сводится к банальной правке. Вот например в prex я переделал с PIT на TC0:
С чего он должен ругаться ? Это стандартная ф-ия для абсолютно любой ОС, единственно в ядре есть драйвер для TC который нужно отключить если он включен, где-то в misc devices находится или удостовериться что используются разные таймеры (думаю из трех два выберете :)
"Урезаный" - это вы о чем ? тут полноценное ядро. "Заховать" ядро может абсолютно любой поток в ядре - было как то обсуждение, банальный printk задерживает таймер до миллисекунд.
Так я о ядре и говорю - не гарантируется никаких точных задержек и таймеров. Во всех стандартных ф-ях ядра гарантируется только что задержка будет не менее того что вы попросите. Если нужны точные задержки - это нужна ОС реального времени, для linux есть отдельные патчи для этого, но я ими никогда не пользовался, к тому же очень много зависит от того как реализованы драйверы - в rtos обработчики прерываний обязаны как можно быстрей вернуть управление, похоже atmel явно не заморачивалось этим при написании драйверов для linux :)
вот проблема:
пробую пока на уровне приложения (не драйвера)
для функции request_irq подключаю заголовочный файл interrupt.h из папки /home/user/src/linux-2.6.24/include/linux, вроде бы там лежат исходники ядра, прошиваемого в kit.
но компилятор выдает ошибки:
я, пардон, с прерываниями в Linux еще не писал, может забыл что-то, а?
и настораживает "warning: #warning "don't include kernel headers in userspace"" - может request_irq нельзя вызывать в пользовательском приложении, а только в драйвере?