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

 
 
> А кто нибуть встречал МК с CAN, и DMA
-=Sergei=-
сообщение Apr 29 2008, 09:50
Сообщение #1


Местный
***

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



Ктонибуть встречал МК с CAN и DMA.
Так что бы именно CAN передавал/принимал пакеты в/из ОЗУ напрямую через ДМА.
Или уважаемые Донны считают CAN с DMA излишеством ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
spf
сообщение Apr 29 2008, 13:24
Сообщение #2


Странник
****

Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051



Цитата(-=Sergei=- @ Apr 29 2008, 15:50) *
Ктонибуть встречал МК с CAN и DMA.
Так что бы именно CAN передавал/принимал пакеты в/из ОЗУ напрямую через ДМА.
Или уважаемые Донны считают CAN с DMA излишеством ?

Как это поможет работе в CAN сети?

Удобно, когда в контроллере CAN имеется много слотов (чем больше, тем лучше, в некоторых МК Fujitsu имеется по 128 слотов) и осуществляется аппаратная фильтрация пакетов по этим слотам. На слот или их группу вешается обработчик, который выполняет необходимые операции.
DMA же пользуют, когда необходимо тупо переложить блок данных из одного места(потока) в другое и только потом его программно "отфильтровать" и приступить к обработке в фоновой программе.
Т.е. DMA необходим CAN контроллеру, у которого один слот на прием (без фильтра) и один на передачу.

Еще в CAN имеются вторичные данные (счетчик ошибок и сбоев в шине), что с ними делать DMA при нештатных ситуациях на шине?


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
-=Sergei=-
сообщение Apr 29 2008, 14:39
Сообщение #3


Местный
***

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



Цитата(spf @ Apr 29 2008, 17:24) *
Как это поможет работе в CAN сети?

Удобно, когда в контроллере CAN имеется много слотов (чем больше, тем лучше, в некоторых МК Fujitsu имеется по 128 слотов) и осуществляется аппаратная фильтрация пакетов по этим слотам. На слот или их группу вешается обработчик, который выполняет необходимые операции.
DMA же пользуют, когда необходимо тупо переложить блок данных из одного места(потока) в другое и только потом его программно "отфильтровать" и приступить к обработке в фоновой программе.
Т.е. DMA необходим CAN контроллеру, у которого один слот на прием (без фильтра) и один на передачу.

Еще в CAN имеются вторичные данные (счетчик ошибок и сбоев в шине), что с ними делать DMA при нештатных ситуациях на шине?



Я посмотрел существующие аналоги с Cortex-M3. У STM всего - 3 слотов на отправку, 6 на прием (если я правильно понял), у Лиминари 32 слота. Физически эта память находится в контроллере CAN, и отображается в область переферии, причем у STM - это регистровая память, т.е. на триггерах построенная, у лиминари - отдельный блок SRAM. И то и другое занимает много места на кристалле. Например у меня в 1886ВЕ5 6 буферов сообщений - это 60% всего контроллера CAN.

Сейчас я хочу сделать МК как минимум с 2 отдельными CAN контроллерами, и в каждом минимум по 16 слотов, даже точноее сказать в 16 программируемых подканалах отправки и приема сообщений. В самом контроллере CAN только 2 буфера - на прием и на отправку.

Отправка.
1. В произвольном месте памяти создаем сообщение (причем это будет строго выравненная по ячейкам Си-шная структура)
2. В подканале N контроллера CAN задем указатель на структуру, приоритет отправки и разрешение отправки.
3. Контроллер CAN как сочтет возможным начать отправку через DMA загружает это сообщение в буфер отправки и отсылает
4. При успешной отправке ядру прерывание от N подканала.

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

Прием.
1. Для полдканалов указываем области куда переписывать сообщения.
2. Получили сообщение
3. В зависимость от фильтра (на каждый подканал свой отдельный фильтр+маска) выбираем какой из подканалов готов принять принять это сообщение
4. Через DMA переписываем в ОЗУ сообщение, при этом DMA может быть зациклен в размере сообшения и тогда следующее сообщение этого подканала перезапишет только что принятое, либо зациклен в некой в более большой области и тогда будет некая FIFO очередь сообщений данного подканала.
5. Как сообщение переписано может быть прерывание или нет.

Пример работы.
Делаем подканал 5 на прием сообщений о температуре. Строгий фильтр только от дачика температуры
DMA циклим на размере одного сообщения, при приеме никаких прерываний, и разрешаем перезаписывать сообщения. Таким образом по зараеннее известному адресу в ОЗУ всегда хранится последнее сообщение о температуре. И ядро совершенно не занимается обработкой такого рода сообщений и если ему нужна температура он лезет уже не к CAN, а к заранее извесному адресу по которому хранится автоматически обнавляемая температура.

Ну типа что то так.
Основная же всех изысков - это уменьшить размер блока CAN более эффективно использовать ОЗУ (правда опять таки конфликты при одновременном доступе sad.gif ущерб с другой стороны).

сории за русский язык.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- -=Sergei=-   А кто нибуть встречал МК с CAN   Apr 29 2008, 09:50
|- - spf   Цитата(-=Sergei=- @ Apr 29 2008, 20...   Apr 29 2008, 15:10
|- - -=Sergei=-   Цитата(spf @ Apr 29 2008, 19:10) Это локо...   Apr 29 2008, 15:15
|- - spf   Цитата(-=Sergei=- @ Apr 29 2008, 21...   Apr 29 2008, 15:41
- - sobr   Цитата(-=Sergei=- @ Apr 29 2008, 16...   May 1 2008, 10:02
|- - -=Sergei=-   Цитата(sobr @ May 1 2008, 14:02) dsPIC33,...   May 4 2008, 11:25
|- - sobr   Не совсим понял как в теле сообщения указывать?   May 4 2008, 11:46
||- - -=Sergei=-   Цитата(sobr @ May 4 2008, 15:46) Не совси...   May 4 2008, 11:58
|- - spf   Цитата(-=Sergei=- @ May 4 2008, 17...   May 4 2008, 13:56
- - ValeraK   Цитата(-=Sergei=- @ Apr 29 2008, 15...   May 5 2008, 05:59
|- - -=Sergei=-   Еще вопросы. Сколько приоритетов сделать на отсыл...   May 6 2008, 06:30
|- - spf   Цитата(-=Sergei=- @ May 6 2008, 12...   May 6 2008, 08:16
||- - galjoen   Цитата(spf @ May 6 2008, 12:16) Желательн...   May 6 2008, 08:55
||- - -=Sergei=-   Цитата(spf @ May 6 2008, 12:16) Приоритет...   May 6 2008, 10:05
||- - Mos   Цитата(-=Sergei=- @ May 6 2008, 13...   May 6 2008, 10:20
|- - Mos   Цитата(-=Sergei=- @ May 6 2008, 09...   May 6 2008, 08:53
|- - sobr   Цитата(Mos @ May 6 2008, 15:53) Кроме тог...   May 6 2008, 09:08
|- - Mos   Цитата(sobr @ May 6 2008, 12:08) Более то...   May 6 2008, 10:04
- - syoma   А вот помомему, то что спрашивал автор топика: htt...   May 20 2008, 15:17
- - -=Sergei=-   Цитата(syoma @ May 20 2008, 19:17) А вот ...   May 21 2008, 07:13


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

 


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


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