Перейти к содержанию
    

SPI и ARM9 под Линуксом

Есть устройство в составе которого SAM7 - слэйв (AT91SAM7S256) и ARM9 - мастер под Линуксом (AT91RM9200).

Оба эти процессора взаимодействуют по SPI.

Проблема в том, что при обращени по SPI чаще чем раз в 1,5-2 секунды происходит перемешивание входных и выходных данных...такое ощущение что операционка не успевает отдать буфер приема и начинает туда засовывать данные для передачи...

Вот собственно вся проблема, как решить и в чем дело то?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

происходит перемешивание входных и выходных данных...

Не работал с линуксом, но есть опыт с SAM9XE. Основные грабли возникают из-за того, что работа PDC (DMA) не обновляет кеш процессора. Поэтому нужно либо сбрасывать кеш вручную, либо располагать буфера, к которым может быть обращение по DMA, в некешируемой памяти.

Как в линуксе - не знаю, надо смотреть исходники драйвера SPI, как они работают (через PDC или нет) и где лежат буфера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...да...точно...драйвера посторены именно с использованием DMA, а выделение памяти происходит стандартной функцией ядра kmalloc...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...да...точно...драйвера посторены именно с использованием DMA, а выделение памяти происходит стандартной функцией ядра kmalloc...

 

Если разработка на уровне ядра - можно выделить некэшируемый буфер (dma_alloc_coherent) и сообщить драйверу spi что буфер уже смапен (is_dma_mapped).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если разработка на уровне ядра - можно выделить некэшируемый буфер (dma_alloc_coherent) и сообщить драйверу spi что буфер уже смапен (is_dma_mapped).

 

в том то и дело что не хотелось бы лезть в ядро...если это конечно возможно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...