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

 
 
> А кто нибуть встречал МК с 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
spf
сообщение Apr 29 2008, 15:10
Сообщение #4


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

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



Цитата(-=Sergei=- @ Apr 29 2008, 20:39) *
Я посмотрел существующие аналоги с Cortex-M3. У STM всего - 3 слотов на отправку, 6 на прием (если я правильно понял), у Лиминари 32 слота.

Это локомотивы CAN индустрии? ;)
Инфо: МК Fujitsu применяют в Subaru, CAN встраивается в МК Fujitsu уже около 10 лет.

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

Если имеется полноценный CAN, то в такоком случае он работает совершенно параллельно и не тормозит CPU при операция DMA. В программе достаточно просто сделать обертку или нечто подобное и обращаться напрямую в слот CAN (который будет "обновляться" при приеме следующего пакет), в котором должна лежать все та же текущая температура.

Так что пример не в пользу применения DMA, плюсов не вижу, скорее наоборот, только накладные расходы и усложнения.


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


Местный
***

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



Цитата(spf @ Apr 29 2008, 19:10) *
Это локомотивы CAN индустрии? wink.gif
Инфо: МК Fujitsu применяют в Subaru, CAN встраивается в МК Fujitsu уже около 10 лет.
Если имеется полноценный CAN, то в такоком случае он работает совершенно параллельно и не тормозит CPU при операция DMA. В программе достаточно просто сделать обертку или нечто подобное и обращаться напрямую в слот CAN (который будет "обновляться" при приеме следующего пакет), в котором должна лежать все та же текущая температура.

Так что пример не в пользу применения DMA, плюсов не вижу, скорее наоборот, только накладные расходы и усложнения.



сейчас глянул Fuji, судя по описанию в MB96300 стоит ядро CAN один в один с Luminary.

Цель еще раз повторюсь - уменьшить размер блока CAN, убрать оттуда всю память сообщений и использовать для этого ОЗУ. Правда пока еще нет объективных данных во что это у меня выльется в DMA контроллере. Так что вот думаю....

Для сведенья

Xilinx имплементация

часть контроллера CAN реализующая протокол - 252 триггера, 998 Slices
буфер на одно сообщение - 131 триггер, 284 Slices - умножить на 6, 9, 16 или 32
общее управление - 113 триггеров, 155 Slices
промежуточный буфер - 108 триггеров, 96 Slices
фильтер на одно сообщение - 32 триггера, 40 Slices

т.е. при 16 буферах, блок состоит на ~70% из буферов, при 32 буферах - на 85%.
Пойду смотерть сколько займет отдельное ОЗУ такого размера....
Go to the top of the page
 
+Quote Post
spf
сообщение Apr 29 2008, 15:41
Сообщение #6


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

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



Цитата(-=Sergei=- @ Apr 29 2008, 21:15) *
сейчас глянул Fuji, судя по описанию в MB96300 стоит ядро CAN один в один с Luminary.

Это не единственный вариант CAN контроллера у MB9X.
Свежими (из малышек) так же можно считать MB90F352, MB91F272.


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- -=Sergei=-   А кто нибуть встречал МК с CAN   Apr 29 2008, 09:50
- - 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 - 11:52
Рейтинг@Mail.ru


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