Цитата(pavel_k @ Aug 14 2007, 14:37)

Начал разработку на ARM9 (Cirrus EP9312) под Linux.
Раньше писал под AVR и SAM7S, но без ОС, а тут возникли вопросы по азам, которые пока не могу уяснить.
Как производится работа с периферией под Linux?
Понятно, что устройства в Linux представлены в файловой системе. Как происходит обращение например к таймерам, PWM и другим блокам, которых нет в PC? нужно ли для этого писать свои kernel modules или есть какие-то другие механизмы? Есть примерчик, где показан вариант работы с регистрами через "/dev/mem". С этим вроде всё ясно: настроить регистры не проблема, а вот кто будет отвечать за прерывания того же таймера или внешние прерывания от линий данных? Если ядро, то как ему объяснить чего я хочу
Спасибо!
Думаю, что на большинство вопросов есть ответы в архивах списка рассылки h_t_t_p:_/_/_www (dot) arm (dot) linux (dot) org (dot) uk
Рекомендую почитать архивы и подписаться на рассылку.
Прерывания - только через модули ядра.
Сабжевый камень, кажется (я не занимался этим кмнем), поддерживается в ядре, так что посмотрите исходники.
Хорошая книжка по написанию модулей с примерами Linux Device Drivers Third Edition (LDD3). Наверное есть на ftp, но на всякий случай h_t_t_p:_/_/_lwn (dot) net/Articles/155655/
Ну и сам LWN.
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.