Как стать автором
Обновить
0
Promwad
Контрактная разработка и производство электроники

Знакомство с возможностями свитч-процессора Realtek RTL 8332M

Время на прочтение 6 мин
Количество просмотров 29K


Мы продолжаем серию публикаций об электронных компонентах тайваньской компании Realtek, которые можно использовать для разработки мультимедийной и сетевой электроники.

На днях в нашем распоряжении оказалась демо-плата многопортового коммутатора RTL_8332M_DDR3_DEMO_P2L_V1.0 на базе свитч-процессора Realtek 8332M, а также фирменный комплект средств разработки. Под катом мы расскажем, что собой представляет эта плата, опишем процесс сборки и загрузки прошивки на основе Realtek SDK, а также протестируем пропускную способность полученного коммутатора с проверкой работоспособности QoS.

Демо-плата предназначена для разработки и отладки ПО для управляемого многопортового коммутатора c 24 портами Fast Ethernet и 4 портами Gigabit Ethernet. Основа используемых свич-процессоров — CPU MIPS-4KEc 32bit@500MHz, они позволяет управлять всеми функциями коммутатора.

Возможно, у читателя возникнет вопрос: для чего в наше время, «когда космические корабли бороздят просторы вселенной» может понадобиться разработка коммутатора Fast Ethernet. На наш взгляд, данное недорогое решение может быть востребовано в системах, где не требуется высокая скорость передачи данных. Например, подключение IP-телефонии и камер видеонаблюдения.

Для начала дадим небольшое описание свитч-процессора:
  • Порты: 24-port Fast Ethernet + 4-port Gigabit Ethernet
  • Встроенный Fast Ethernet PHY на 8 портов
  • Поддержка двух независимых XSMII-интерфейсов к внешним Fast Ethernet PHY
  • Интерфейс QSGMII либо 2 пары интерфейсов RSGMII/SGMII/1000Base-X/100Base-FX
  • Поддержка Serial/Dual I/O mode 32 МБ SPI Flash
  • Интерфейс к внешней памяти до 128 МБ DDR1/DDR2 либо 256 МБ DDR3
  • Ядро MIPS-4KEc с поддержкой адресации виртуальной памяти (MMU) на частоте 500 МГц
  • Встроенная память SRAM объемом 128 Кбайт
  • Два последовательных порта для отладки и контроля через интерфейс командной строки (CLI)
  • Поддержка отладочного интерфейса EJTAG
  • Поддержка интерфейсов EEPROM, I2C и SPI
  • Поддержка EAV, 1588v2
  • Поддержка диагностики Cable Diagnostics (RTCT)
  • Поддержка режимов энергосбережения IEEE 802.3az Energy Efficient Ethernet (EEE)

Чип обеспечивает основные функции коммутатора
Функционал L2 VLAN

Максимальное количество VLAN 4096
Поддержка до 64 независимых процессов для MSTP (IEEE 802.1s), RSTP и STP
Тегирование Q-in-Q и VLAN

Функционал L2 MAC

Длина сетевых пакетов до 10 КБ
Таблица на 8K L2 MAC-адресов
Таблица на 512 мультикаст-адресов
Поддержка IGMPv1/2/3 и MLDv1/2 snooping

Другая функциональность уровня L2

Контроль трафика broadcast, multicast, unknown- multicast и unknown-unicast
Поддержка зеркалирования траффика
Поддержка агрегации каналов (IEEE 802.3ad)
Поддержка распознавания и изоляции закольцованного траффика (RLPP/RLDP)

Функционал Access Control List (ACL)

Поддержка формата L2/L3/L4 (DMAC, SMAC и Ether-Type)
IPv6 ACL

Функции QoS

8 очередей на порт
Обработка очередей по алгоритмам Strict Priority (SP), Weighted Fair Queue (WFQ) и Weighted Round Robin (WRR)



Комплект поставки RTL_8332M_DDR3_DEMO_P2L_V1.0


Плата включает в себя:
  • 24 порта 10/100М Ethernet
  • 4 порта Gigabit Ethernet
  • 4 порта SFP
  • свитч-процессор RTL8332M
  • 2 8-портовых 10/100Base-TX трансивера RTL8208L
  • 4-портовый Gigabit Ethernet трансивер RTL8214B
  • DDR3 SDRAM-память (128M)
  • Панель LED-индикации
  • Вывод UART интерфейса
  • SPI Flash (16M)

Структурная схема устройства:



На фото ниже представлен вид платы сбоку, на нем хорошо видно порты:



Полученные нами средства разработки включают в себя toolchain, SDK с исходниками Linux и u-boot, а также некоторую документацию.

Сборка прошивки из Realtek SDK


Распаковываем toolchain и сразу прописываем пути к нему в PATH, чтобы bash знал, где его искать:
	$ tar -zxf 01_toolchain/linux/v2.6.32.58/msdk-4.3.6-mips-EB-2.6.32-0.9.30.3-m32-120424.tar.bz2
	$ export PATH=$PATH:<project dir>/msdk-4.3.6-mips-EB-2.6.32-0.9.30.3-m32-120424/bin/

Распаковываем SDK, а также исходники u-boot и uClinux:
	$ cd 02_SDK/V2.1.2.41872/Package
	$ tar zxf rtk-ms-sdk-src-2.1.2.41872.tar.gz
	$ tar zxf rtk-ms-uboot-2011.12-src-svn41872.tar.gz
	$ tar zxf rtk-ms-uboot-src-1.3.0.41872.tar.gz
	$ tar zxf rtk-ms-uClinux-src-2.6.19-2.6.32.58-svn41872.tar.gz

Выбираем версию linux и uClibc:
В SDK было 2 версии ядра Линукс – 2.6.19 и 2.6.32.58. С версией ядра 2.6.19 используется uClibc 0.9.28, а с версией 2.6.32.58 – uClibc 0.9.30. Мы использовали последнюю версию.
	$ make menuconfig



С версией ядра 2.6.19 используется uClibc 0.9.28, а с версией 2.6.32.58 – uClibc 0.9.30.

В настройках SDK включаем поддержку свитч-процессора 8332M:
	$ make sdkconfig

В опциях Chip Support и SDK Driver указываем чип 8380:



В menuconfig-е ядра нужно изменить параметры загрузки на ”debug console =ttyS0,115200 mem=128M”, т.к. у нас используется чип с 128M памяти:

	$ make -C kernel/uClinux/linux-2.6.32.x menuconfig



Сборка (сборка проходит успешно только с правами рута, поэтому нужно экспортировать вышеуказанные пути также и в PATH рута):
	# export PATH=$PATH:<project dir>/msdk-4.3.6-mips-EB-2.6.32-0.9.30.3-m32-120424/bin/	
	# make

При сборке, не смотря на проведенную настройку в menuconfig-е, в консоль высыпается пара вопросов по настройке RTK BSP. Указываем чип 8380:
*
* Restart config...
*
*
* RTK Universal BSP selection
*
Realtek RTL8390/50 Board (RTL8390_SERIES) [N/y/?] (NEW) n
Realtek RTL8380/30 Board (RTL8380_SERIES) [N/y/?] (NEW) y
Realtek RTL8328 Board (RTL8328_SERIES) [N/y/?] (NEW) n

Если всё сработало, на экране выводится информация о собранном образе, результаты сборки кладутся в image/:
Image Name:   3.0.0.beta
Created:      Fri Mar 13 15:06:27 2015
Image Type:   MIPS Linux Kernel Image (gzip compressed)
Data Size:    2787086 Bytes = 2721.76 kB = 2.66 MB
Load Address: 80000000
Entry Point:  80003a70

Загрузка собранного ядра


1) На хосте необходимо установить сервер tftp. Установка и настройка например под Ubuntu описана здесь: http://askubuntu.com/questions/201505/how-do-i-install-and-run-a-tftp-server.

2) В расшаренную через tftp папку скинуть собранный образ ядра:
# cp images/vmlinux.bix /tftpboot

3) Подключиться к плате через UART, настройки для minicom следующие:
A - Serial Device         : /dev/ttyUSB0
B - Lockfile Location     : /var/lock
C - Callin Program        :
D - Callout Program       :
E – Bps/Par/Bits          : 115200 8N1
F - Hardware Flow Control : No
G - Software Flow Control : No

4) На плате грузится u-boot, нужно из него загрузить собранное ядро через tftp:
Hit any key to stop autoboot: 0
RTL838x# # 
RTL838x# # setnenv ipaddr 192.168.1.1	    ← IP платы
RTL838x# # setenv serverip 192.168.1.111      ← IP хоста
RTL838x# # rtk network on
RTL838x# # tftp 0x81000000 vmlinux.bix
RTL838x# # bootm 0x81000000

После загрузки Линукса запускаем DiagShell – command line interface для управления настройками свича.
В нем включаем нужные порты (или все):
	# diag
	RTK.0> port set port all state enable

Прошивка запущена, коммутатор работает.

Тестирование скорости


Замеры скорости мы проводили, подключив к плате 2 ПК c помощью программы iperf в двух режимах –LAN- и VLAN-подключение свича.

Через DiagShell VLAN был настроен следующим образом (например, настройка для портов 25, 26, 27 и vlan id = 20):
RTK.0> vlan create vlan-table vid 20
RTK.0> vlan set pvid inner port 25-27 20
RTK.0> vlan set vlan-table vid 20 member 25-27
RTK.0> vlan set vlan-table vid 20 untag-port 25-27

При тестировании VLAN проявляется интересный эффект: если VLAN настроить на диапазон портов, включающий порты 100М и 1000М, то скорость будет ограничена на уровне 100 Мбит/с, даже если оба ПК подключены в гигабитные порты.

Вот такие получились результаты тестирования:
Порт Режим тестирования Замеренная скорость (Мбит/с)
100M LAN 96,2
1000M LAN 936
100M VLAN 95,7
1000M VLAN 936

Можно сказать, что пропускная способность соответствует заявленной.

Теперь попробуем настроить QoS. Данная функция очень пригодится при настройке офисной IP-телефонии.

Как мы уже говорили, коммутатор поддерживает два алгоритма обработки очередей: Strict Priority и WFQ.
Мы ограничились проверкой Strict Priority. Для проверки подключили к плате три ПК. На одном из ПК запустили iperf-сервер:
$ iperf –s

На двух других ПК — клиенты:
$ iperf -c server_ip -i 1 -t 300

При этом на одном из клиентов установили в IP-пакетах в поле DS значение 0x20 (DSCP 0x8), используя не очень задокументированную опцию -S:
$ iperf -c server_ip -i 1 -t 300 –S 0x20

Результаты замеров пропускной способности показали, что трафик распределился примерно поровну.
Теперь попробуем настроить QoS. Для этого зададим для DSCP 0x8 максимальное значение приоритета (7).
RTK.0> qos set remapping dscp system dscp 8 internal-priority 7

В результате маркированный трафик занял всю полосу пропускания. Что ж, похоже, QoS действительно работает.

Добавим несколько слов про DiagShell. На наш взгляд, этот CLI довольно функционален и вполне может использоваться при разработке готового устройства. Конечно, в идеале хотелось бы иметь некий интуитивный веб-интерфейс, который на данный момент отсутствует в SDK. Для конечного устройства его придется разрабатывать.

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

Спасибо за внимание!

Другая хорошая статья на эту тему — Запуск Linux на медиапроцессоре Realtek RTL-1185.
Теги:
Хабы:
+8
Комментарии 15
Комментарии Комментарии 15

Публикации

Информация

Сайт
promwad.com
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Литва
Представитель
Alexandra Goncharik

Истории