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

 
 
> Linux на AT91RM9200
Dimchansky
сообщение May 16 2006, 09:45
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685



Скажите, если закручивать Linux на AT91RM9200, то, в двух словах, как это будет выглядеть?
К микроконтроллеру подключается одна flash'ка размером, к примеру, 16 Мб, где сидит образ системы, SDRAM 32 Мб и всё? Памяти достаточно?
А если я захочу, чтобы у меня были изменяемые в процессе работы файлы, но образ чтобы при этом оставался нетронутым, то как быть?

Другая часть вопроса. Я себе не очень представляю, как из под Linux, который крутится на AT91RM9200 управлять свободными портами ввода-вывода? Как это программно выглядеть будет (на C)?

Может быть натолкнёте на страницы, где об это рассказывается и показывается?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
afad
сообщение May 18 2006, 12:00
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 26-08-04
Пользователь №: 545



Цитата
1. Каким образом на C можно установить/прочесть сразу группу...
2. Можно ли как-то программно установить направление портов (ввод/вывод)?...
3. Реально ли из под Linux поймать IRQ?...

Можно все из перечисленного. Читайте DataSheet на AT91RM9200, раздел "Parallel Input/Output Controller (PIO)". На С все делается путем записи и чтения регистров PIO:

PIO Enable Register PIO_PER Write-only
PIO Disable Register PIO_PDR Write-only
PIO Status Register PIO_PSR Read-only
PIO Output Enable Register PIO_OER Write-only
PIO Output Disable Register PIO_ODR Write-only
PIO Output Status Register PIO_OSR Read-only
PIO Glitch Input Filter Enable Register PIO_IFER Write-only
PIO Glitch Input Filter Disable Register PIO_IFDR Write-only
PIO Glitch Input Filter Status Register PIO_IFSR Read-only
PIO Set Output Data Register PIO_SODR Write-only
PIO Clear Output Data Register PIO_CODR Write-only
PIO Output Data Status Register PIO_ODSR Read-only
PIO Pin Data Status Register PIO_PDSR Read-only
PIO Interrupt Enable Register PIO_IER Write-only
PIO Interrupt Disable Register PIO_IDR Write-only
PIO Interrupt Mask Register PIO_IMR Read-only
PIO Interrupt Status Register PIO_ISR Read-only
PIO Multi-driver Enable Register PIO_MDER Write-only
PIO Multi-driver Disable Register PIO_MDDR Write-only
PIO Multi-driver Status Register PIO_MDSR Read-only
PIO Pull-up Disable Register PIO_PUDR Write-only
PIO Pull-up Enable Register PIO_PUER Write-only
PIO Pad Pull-up Status Register PIO_PUSR Read-only

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

Если использовать утилиту GPIO, то, конечно, все делается медленно, вот пример скрипта, выдает на ножку PB22 сигнал с частотой 1 герц:

#!/bin/sh
while [ 1 ]; do
/usr/bin/gpio +PB22
sleep 1
/usr/bin/gpio -PB22
sleep 1
done

Для быстрого управления нужно писать программу на С.
Go to the top of the page
 
+Quote Post
Dimchansky
сообщение May 18 2006, 12:46
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685



Цитата(afad @ May 18 2006, 14:00) *
Цитата
1. Каким образом на C можно установить/прочесть сразу группу...
2. Можно ли как-то программно установить направление портов (ввод/вывод)?...
3. Реально ли из под Linux поймать IRQ?...

Можно все из перечисленного. Читайте DataSheet на AT91RM9200, раздел "Parallel Input/Output Controller (PIO)". На С все делается путем записи и чтения регистров PIO:
...
Поскольку регистры 32-разрядные, то возможно чтение или запись сразу до 32 бит.

Если использовать утилиту GPIO, то, конечно, все делается медленно
...
Для быстрого управления нужно писать программу на С.


Первые три вопроса я вроде бы как понял, что решение в рамках Linux есть.
По крайней мере так мне показалось после изучения кода утилиты GPIO, который Вы привели и после ознакомпления в кодом драйвера Button driver (28/07/2005) (Drive buttons with the GPIO pins to send input events.), в котором, кстати говоря, есть ошибка, связанная с дребезгом клавиатуры. Но я списался с автором, сообщил ему об этом, он выслал мне исправленную версию. Есть от чего скакать.
Datasheet я почитаю, но, насколько я понимаю, нельзя обращаться напрямую к портам процессора под Linux'ом, как это пишется в IAR, Keil, RealView, т.е. мы должны использовать функции драйвера \arch\arm\mach-at91rm9200\gpio.c для этого.
Или я чего-то недопонимаю?

Четвёртый вопрос пока плавающий. Как я понимаю, Linux - не риал-тамовская опреационная система. Есть ли порт RTLinux под AT91RM9200 я не знаю, но в моём случае приёдтся либо холотыми циклами выдерживать паузы (минимальные необходимые), либо сделать какую-то синхронизацию с внешним тактом, буду думать как.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 12:54
Рейтинг@Mail.ru


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