реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Переход на Linux под ARM, Новичок. Работа с периферией.
pavel_k
сообщение Aug 14 2007, 11:37
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 3-03-07
Пользователь №: 25 834



Начал разработку на ARM9 (Cirrus EP9312) под Linux.
Раньше писал под AVR и SAM7S, но без ОС, а тут возникли вопросы по азам, которые пока не могу уяснить.
Как производится работа с периферией под Linux?
Понятно, что устройства в Linux представлены в файловой системе. Как происходит обращение например к таймерам, PWM и другим блокам, которых нет в PC? нужно ли для этого писать свои kernel modules или есть какие-то другие механизмы? Есть примерчик, где показан вариант работы с регистрами через "/dev/mem". С этим вроде всё ясно: настроить регистры не проблема, а вот кто будет отвечать за прерывания того же таймера или внешние прерывания от линий данных? Если ядро, то как ему объяснить чего я хочу 07.gif

Спасибо!
Go to the top of the page
 
+Quote Post
amw
сообщение Aug 14 2007, 14:37
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(pavel_k @ Aug 14 2007, 14:37) *
Начал разработку на ARM9 (Cirrus EP9312) под Linux.
Раньше писал под AVR и SAM7S, но без ОС, а тут возникли вопросы по азам, которые пока не могу уяснить.
Как производится работа с периферией под Linux?
Понятно, что устройства в Linux представлены в файловой системе. Как происходит обращение например к таймерам, PWM и другим блокам, которых нет в PC? нужно ли для этого писать свои kernel modules или есть какие-то другие механизмы? Есть примерчик, где показан вариант работы с регистрами через "/dev/mem". С этим вроде всё ясно: настроить регистры не проблема, а вот кто будет отвечать за прерывания того же таймера или внешние прерывания от линий данных? Если ядро, то как ему объяснить чего я хочу 07.gif

Спасибо!


Думаю, что на большинство вопросов есть ответы в архивах списка рассылки 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.
Go to the top of the page
 
+Quote Post
pavel_k
сообщение Aug 17 2007, 08:39
Сообщение #3





Группа: Новичок
Сообщений: 7
Регистрация: 3-03-07
Пользователь №: 25 834



Спасибо большое за ответ!
Изучаю "Linux Device Drivers" и модули уже стали загружаться в ядро smile.gif


Может у кого-нибудь из уважаемых разработчиков есть пример драйвера для timer'а или другой периферии? Так сказать, для наглядности.
Go to the top of the page
 
+Quote Post
Idle
сообщение Aug 20 2007, 06:38
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Цитата(pavel_k @ Aug 14 2007, 15:37) *
Есть примерчик, где показан вариант работы с регистрами через "/dev/mem". С этим вроде всё ясно: настроить регистры не проблема

Я вот тоже начал. Ткните в этот примерчик. Нужно пока только изменять настройки в регистрах.

А никто не подскажет, как принято оформлять код, который только меняет (по запросу пользователя, с консоли, например) эти самые настройки в регистрах. Т.е. это драйвер или user-space программа отдельная...?
Go to the top of the page
 
+Quote Post
pavel_k
сообщение Aug 20 2007, 07:23
Сообщение #5





Группа: Новичок
Сообщений: 7
Регистрация: 3-03-07
Пользователь №: 25 834



Цитата(Idle @ Aug 20 2007, 08:38) *
Я вот тоже начал. Ткните в этот примерчик. Нужно пока только изменять настройки в регистрах.


Два файла для Cirrus Logic EP39xx ARM920T
Прикрепленные файлы
Прикрепленный файл  gpio.zip ( 13.34 килобайт ) Кол-во скачиваний: 59
 
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 14:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01396 секунд с 7
ELECTRONIX ©2004-2016