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

 
 
> virt_to_phys в arm-linux'е, как получить физ. адр. локальной переменной ?
vvj
сообщение Nov 23 2005, 13:44
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 46
Регистрация: 20-01-05
Пользователь №: 2 090



Надо (в RM9200) задать Peripheral_DMA_Controller'у адрес буфера (в виде локальной переменной) для отправки (в данном случае в I2S).
Очевидно, DMA_Controller оперирует физ. адресами - соответсвенно я использую макрос __pa() (т.е. virt_to_phys) и пишу полученный физ.адрес в (промапленый есс-но) TransferPointerRegister Peripheral_DMA_Controller'у.

Проблема в том, что прриходит не то. То есть указатель не соотв. дейсвительному для Peripheral_DMA_Controller'а.

Что делать?

EDIT: Вообще сделать надо тоже что и в Application Note doc6020.pdf (Connecting the Atmel ARM-based Serial Synchronous Controller (SSC) to an I2S-compatible Serial Bus)
НО ПОД ЛИНУКС.
Может есть примеры - укажите, плиз!

Вообще - где у линукса "лежат" локальные переменные?

Сообщение отредактировал vvj - Nov 24 2005, 18:55
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zaratustra
сообщение Nov 26 2005, 12:11
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 65
Регистрация: 18-11-05
Пользователь №: 11 054



У меня нет патчей для spi, поэтому ничего подсказать не смогу.

Почитайте, может кое-что прояснится:
http://lwn.net/images/pdf/LDD3/ch15.pdf

dma_buff_phys = __pa(dma_buff);
Контроллер dma должен понимать когда ему дают физ.адрес dma_buff_phys и обрабатывать чтение/запись в dma_buff. Если интерфейс spi неправильно реагирует, то может не все регистры сконфигурены или патч конкретно для этого контроллера нужно править. Может ещё при передаче указателя в user space есть ошибка? В ядре этот макрос точно работает.
Go to the top of the page
 
+Quote Post



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

 


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


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