Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Связать два ARMa
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
AlexBoy
Необходимо связать два ARMa: rm9200 и sam7, нужен фул дуплекс, думаю использовать SSC, скорость нужна порядка 2Mb/c.
Какой можно выбрать логический протокол?
Задачи примерно такие:
Передача файлов SLAVE -> MASTER по запросу от мастера
Передача команд SLAVE <- MASTER
Передача событий SLAVE -> MASTER
nameless
Если Mb - это мегабиты, то чем классический УАРТ не подходит.? Если расстояния большие, то 485 драйвер - и вперед...
dch
Любой с контрольными суммами можно TFTP
Edmundo
Цитата(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;


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


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

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

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

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

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