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

 
 
 
Reply to this topicStart new topic
> Связать два ARMa, Помогите с протоколом
AlexBoy
сообщение Sep 1 2006, 18:08
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 19-12-05
Из: Kiev
Пользователь №: 12 394



Необходимо связать два ARMa: rm9200 и sam7, нужен фул дуплекс, думаю использовать SSC, скорость нужна порядка 2Mb/c.
Какой можно выбрать логический протокол?
Задачи примерно такие:
Передача файлов SLAVE -> MASTER по запросу от мастера
Передача команд SLAVE <- MASTER
Передача событий SLAVE -> MASTER
Go to the top of the page
 
+Quote Post
nameless
сообщение Sep 2 2006, 12:23
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 9-07-04
Пользователь №: 305



Если Mb - это мегабиты, то чем классический УАРТ не подходит.? Если расстояния большие, то 485 драйвер - и вперед...
Go to the top of the page
 
+Quote Post
dch
сообщение Sep 4 2006, 01:57
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Любой с контрольными суммами можно TFTP
Go to the top of the page
 
+Quote Post
Edmundo
сообщение Sep 4 2006, 03:30
Сообщение #4


Мастер
****

Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474



Цитата(AlexBoy @ Sep 1 2006, 22:08) *
Необходимо связать два ARMa: rm9200 и sam7, нужен фул дуплекс, думаю использовать SSC, скорость нужна порядка 2Mb/c.
Какой можно выбрать логический протокол?
Задачи примерно такие:
Передача файлов SLAVE -> MASTER по запросу от мастера
Передача команд SLAVE <- MASTER
Передача событий SLAVE -> MASTER

Можно классический доморощенный обмен структурами с подтверждением. Типа:

Код
struct SPacket
{
    int ID;
    int ByteSize;
    unsigned CRC;
};

struct SFileBlockPacket : SPacket
{
    char Data[1024];
};

SPacket Command, Status;
char Buffer[MAX_SIZE];
SFileBlockPacket *pPacket = (SFileBlockPacket *) Buffer;


Ну и далее по тексту.


--------------------
شامل
Go to the top of the page
 
+Quote Post
AlexBoy
сообщение Sep 4 2006, 10:07
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 19-12-05
Из: Kiev
Пользователь №: 12 394



Цитата(nameless @ Sep 2 2006, 15:23) *
Если Mb - это мегабиты, то чем классический УАРТ не подходит.? Если расстояния большие, то 485 драйвер - и вперед...


Mb это мегабайты, УАРТ не катит. Расстояния 5-10 см.

Спасибо Edmundo за совет, только все пакеты должны быть одинаковой длинны, чтобы DMA можно было использовать. ID насколько я понял это тип пакета (команда, ответ...)

Я хотел прикрутить lwIP, но это наверно лишнее.
Go to the top of the page
 
+Quote Post
Edmundo
сообщение Sep 4 2006, 15:30
Сообщение #6


Мастер
****

Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474



Цитата(AlexBoy @ Sep 4 2006, 14:07) *
ID насколько я понял это тип пакета (команда, ответ...)

Совершенно верно.

Что касается длины пакета и DMA, то это зависит от организации обмена. Можно следующим образом -- DMA непрерывно пишет все, что идет на SSC Rx, в FIFO; а фоновая задача обработки пакетов анализирует, если в FIFO появилось что-то новое, то обрабатывает в зависимости от ID и если достаточно (то есть в FIFO данных не меньше, чем ByteSize). То есть DMA непрерывно заполняет FIFO, а обработка пакетов его освобождает. Если обработка быстрее, чем приход данных, то FIFO не переполнится. Там, конечно, с подтверждениями придется повозиться, но зато можно полный дуплекс сделать.


--------------------
شامل
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 06:57
Рейтинг@Mail.ru


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