Реализация на базе микросхемы W5100 устройства для работы в сетях Ethernet

Категория: Разное | Просмотров: 127 Опубликованно: 23 июня 2011 - 06:45

В настоящее время широкое развитие в быту и деловой жизни получают удаленный доступ к информации, сбор данных, удаленное управление и мониторинг в промышленности, охранные системы, услуги IP-телефонии и видеосвязи. Все это становится неотъемлемой частью современной жизни.

 

Обязательная составная часть таких систем - каналы связи, причем проводные линии остаются основой построения вычислительных сетей и телекоммуникаций. Основная технология, используемая в локальных сетях, - Ethernet.

Наиболее распространен в сетях Ethernet стек протоколов TCP/IP. Их структура оказалась удачной для передачи разнородной информации, она оптимальна для высокоскоростных локальных сетей с мультимедийным трафиком. Именно эти протоколы послужили основой сети Интернет. Их можно реализовать несколькими способами.

Первый способ - программный. Но на этом пути имеется много трудностей. Создание программного стека протоколов или даже портирование существующих, свободно распространяемых в исходном коде стеков (таких как IwlP, ulP), - довольно сложная и затратная по времени задача. Для работы стека необходима операционная система, адаптация которой к конкретному микроконтроллеру также может занять много времени. Кроме того, практически все операционные системы (за исключением нескольких клонов Linux) бесплатно не распространяются. Программная реализация протоколов интенсивно использует ресурсы операционной системы, процессора и памяти, что негативно сказывается на производительности системы в целом.

Избавить микроконтроллер от выполнения процедур передачи данных по каналу связи и значительно сократить время разработки позволяет второй способ - аппаратная реализация части протоколов с помощью специализированных БИС. В этой статье будет рассказано о практической реализации системы, предназначенной для работы в сетях Ethernet по стандартным протоколам, построенной на микроконтроллере и специализированной БИС фирмы WIZnet, аппаратно реализующей стек протоколов TCP/IP.

Использован микроконтроллер AT91SAM9261 с процессорным ядром ARM9. На его выбор повлияло наличие ряда необходимых периферийных функций. Однако возможно использование практически любого другого микроконтроллера, в том числе и гораздо менее производительного, хотя за это придется, возможно, расплачиваться снижением скорости обмена. Для аппаратной реализации протоколов TCP/IP применена микросхема W5100, обладающая следующими возможностями:

- аппаратная реализация протоколов TCP, UDR ICMR IPv4 ARR IGMR РРРоЕ, Ethernet;

- встроенный 10BaseT/100BaseTX преобразователь физического уровня Ethernet;

- автоматическое определение режимов работы полный дуплекс, полудуплекс, 10 или 100 Мбит/с;

- три способа подключения к микроконтроллеру. Direct, Indirect, SPI;

- поддержка ADSL соединений по протоколу РРРоЕ;

- возможность работы одновременно с четырьмя соединениями, каждое из которых настраивается для работы в режиме клиента или сервера;

- 16 Кбайт внутренней памяти, отведенной под буферы приема и передачи.

Основой макета системы послужила имевшаяся в наличии отладочная плата AT91SAM9261-EK, описание которой можно найти в документе <http:// www. atmel. com dyn resources prod_ documents doc6198.pdf> На плате был установлен модуль WIZ810MJ, содержащий микросхему W5100 с необходимой "обвязкой" и сборку RJ113BZ - разъем RJ-45 с встроенными трансформаторами гальванической развязки и элементами согласования. Для соединения с управляющим устройством (микроконтроллером) модуль снабжен двумя штыревыми разъемами PBD2-28.

Вся документация, необходимая для работы с микросхемой W5100 и с модулем WIZ810MJ, имеется на официальном сайте компании WIZnet: <www.wiznet.co.kr> Там же находится исходный текст на языке С драйвера, в котором реализованы высокоуровневые функции для работы с сокетами W5100, а также руководство по порти-рованию драйвера. Хочу отметить, что вся документация написана в очень доступной для понимания форме, поэтому разобраться с подключением и программированием W5100 не составит труда. Документацию на микроконтроллер AT91SAM9261 можно найти на сайте <www.at91 .com>

Схема подключения модуля WIZ810MJ к микроконтроллеру AT91SAM9261 для работы в режиме прямого доступа (Direct mode) изображена на рисунке. В скобках указаны номера выводов микроконтроллера.

Реализация на базе микросхемы W5100 устройства для работы в сетях Ethernet

 

Линии DO-D7 образуют шину данных, линии АО-А14 - шину адреса. Сигнал NRD - чтение из памяти, сигнал NWE - запись в память. Сигнал RESET, устанавливающий микросхему W5100 в исходное состояние, можно подать с любой свободной линии порта микроконтроллера. Использована линия РВО.

В микроконтроллере AT91SAM9261 предусмотрена возможность подключать до восьми устройств, обмен данными с которыми ведется, как с внешней памятью. Для каждого из них выделяется область в пространстве памяти микроконтроллера и формируется собственный сигнал выбора устройства (CS). В данном случае задействован сигнал CS6 (альтернативная функция линии РСО).

Чтобы оперативно реагировать на изменение состояния микросхемы W5100, требуется подать на микроконтроллер сигнал INT и настроить линию порта, на которую он подан, на генерацию запросов прерываний по спадающему перепаду уровня. Программный обработчик прерывания должен анализировать содержимое регистра Sn_IR микросхемы W5100. В данном случае вход запросов прерывания от W5100 - линия РС2.

Далее описаны действия, которые необходимы для настройки микроконтроллера и микросхемы W5100 на работу в Ethernet. Фрагменты программ написаны на языке С и могут быть практически без изменений использованы для любых ARM-микроконтроллеров фирмы Atmel.

Драйвер, который следует "скачать" с сайта фирмы WIZnet, состоит из файлов w5100.c, socket.c, types.h, w5100.h, socket.h. Эти файлы необходимо включить в проект. В исходном варианте драйвер рассчитан на работу в микроконтроллере ATmega128, но его очень просто адаптировать практически к любому другому микроконтроллеру, заменив всего несколько программных строк.

Прежде всего нужно внести некоторые изменения в файл types.h. Заменой строки

#define _DEF_IINCHIP_MAP_BASE_ 0x8000

на

#def i ne _DEF_IINCHIP_MAP_BASE_ 0x70000000

установим адрес, с которого будет происходить обращение к регистрам и буферам микросхемы W5100 (с адреса 0x70000000 в пространстве памяти микроконтроллера начинается область, соответствующая сигналу CS6). После этого нужно закомментировать строку

#include <avr/pgmspace.h>

и сохранить модифицированный файл types.h.

Открываем файл W5100.C. Здесь следует закомментировать строку

#include <avr/interrupt.h>

и добавить после нее строку

#include <inarm.h>

Далее необходимо превратить 16-разрядные указатели на буферы приема и передачи в 32-разрядные.

Для этого в строках

 

static uintl6

SBUFBASEADDRESS[MAX_SOCK_NUM]; /**< Тх

buffer base address by each channel */

и

static uintl6

SBUFBASEADDRESS[MAX_SOCK_NUM]; /**< Tx buffer base address by each channel */

(переносы условные) заменим описатели типа переменной uint16 на uint32.

Далее по тексту программы заменяем все 16-разрядные адреса, передаваемые в качестве параметров функций, 32-разрядными. После того, как эти замены произведены, можно сохранить файл и использовать высокоуровневые функции драйвера в основной программе.

Реализация на базе микросхемы W5100 устройства для работы в сетях Ethernet

 

Осталось лишь инициализировать SMC (Static Memory Controller) микроконтроллера для формирования сигнала CS6 (табл. 1) и занести нужные значения в регистры микросхемы W5100 (табл. 2).

Реализация на базе микросхемы W5100 устройства для работы в сетях Ethernet

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

Реализация на базе микросхемы W5100 устройства для работы в сетях Ethernet

Например, в табл. 3 приведена возможная процедура приема сообщений в режиме "сервер", а в табл. 4 - процедура передачи в режиме "клиент".

Реализация на базе микросхемы W5100 устройства для работы в сетях Ethernet

 

Наиболее существенный недостаток микросхемы W5100 - отсутствие встроенной возможности фрагментировать посылки. Поэтому при пересылке больших объемов информации их разбивкой на пакеты придется заниматься программе микроконтроллера. Это же препятствует использованию микросхемы в качестве маршрутизатора. Тем не менее микросхему W5100, ввиду ее небольшой стоимости и наличия исходных текстов драйверов, можно рекомендовать для подключения микроконтроллерных систем к сети Ethernet при использовании стандартных протоколов TCP/IP.

Автор: К. Снегов, Р. Шишко, г. Воронеж



Похожие материалы из категории "Разное":

 

Комментарии посетителей


Комментариев пока нет, будь первым!

Добавление комментария

Имя: *

E-mail: *


 B  I  U  S
:-) :-( ;-) :-P 8-) :-D :-O :-[ :-* [:] ;-[



Код: Проверочный код: нажмите для обновления