В погоне за минимальной ценой и временем разработки сложных сетевых устройств производители сетевых процессоров стремятся выпускать максимально интегрированные решения, что упрощает разработку аппаратной части и программного обеспечения. Примером такого подхода являются 64-битные процессоры Freescale T1040 и T1020 со встроенным гигабитным свитчом.

Семейство T10xx идеально подходит как для управления и обработки трафика в таких устройствах как промышленные роутеры, коммутаторы, точки доступа, файерволы, системы DPI и другом сетевом оборудовании.

Отладочная плата T1040RDB, которую мы изучим в рамках этой статьи, представляет собой аппаратную платформу на базе процессора Freescale QorIQ T1040 с четырьмя ядрами e5500 и скоростью до 1,4 ГГц.


Передняя панель T1040RDB


Интерфейсы системной платы T1040RDB

На рисунке ниже показана высокоуровневая структурная схема T1040RDB:



Основные характеристики T1040RDB:
  • Процессорная платформа Freescale QorIQ
    • Телекоммуникационный процессор QorIQ T1040 с четырьмя ядрами e5500, работающими на частоте 1,4 ГГц

  • Подсистема памяти
    • DDR3L SDRAM
      • 1 DIMM-слот, поддерживающий до 2 ГБ
      • Поддержка DDR3 1600 UDIMM/RDIMM

    • NOR флэш-память
    • 128 МБ 16-бит NOR флэш-память, MICRON: JS28F00AM29EWHA
    • NAND flash
    • 1 ГБ SLC NAND флэш-память, MICRON: MT29F8G08ABABAWP-ITX:B
    • Поддержка SD-карт памяти
    • SATA-интерфейс

  • PCIe
    • Один  слот PCIe-x4
    • Два слота mini-PCIe

  • USB 2.0
    • Сдвоенный USB-слот (подключенный к USB PHY)

  • Gigabit Ethernet
    • ETH0 — ETH 1: Подключены к двум независимым RGMII PHY — RTL8211E
    • ETH 2:: Подключен к SGMII PHY — RTL8211DN
    • ETH 3 — ETH10: Подключены к двум независимым QSGMII PHY — F104

  • UART
    • Поддержка двух UART, до 115200 бит/с для вывода консоли; используются сдвоенный RJ45-разъем для двух портов

  • TDM
    • Поддержка одного FXO и четырех FXS-портов для телефонии




Сборка Linux


Отладочная плата T1040RDB поставляется с предустановленным ПО, но для полноценной разработки потребуется собрать прошивку из предоставленного SDK. В качестве рабочего окружения мы используем ПК с установленной на нем ОС Ubuntu 12.04.4 LTS.

SDK поставляется в виде образа со следующим названием: QorIQ-SDK-T2080V1.1-T1040V0.3-SOURCE-20140422-yocto.iso

Для установки на рабочий ПК достаточно запустить скрипт инсталяции:
./install

Установка выполнится в следующую директорию:
cd ~/QorIQ-SDK-T2080V1.1-T1040V0.3-20140422-yocto

Далее — установка необходимых зависимостей на рабочем ПК:
./scripts/host-prepare.sh

Для конфигурации сборки под нашу плату выполняем:
./fsl-setup-poky -m t1040rdb

Сама сборка прошивки выполняется с помощью bitbake с указанием необходимого состава корневой файловой системы:
bitbake fsl-image-core

Готовые образы будут скопированы в каталог:
QorIQ-SDK-T2080V1.1-T1040V0.3-20140422-yocto/build_t1040rdb_release/tmp/deploy/images


Подключение к консоли


  1. Соедините кабелем RS-232 порт T1040RDB «UART0» и рабочий ПК
  2. Откройте программу Терминал на рабочем ПК для связи с T1040RDB
  3. Конфигурация последовательного порта рабочего компьютера должна быть следующая:

  • Скорость: 115200 бит/с
  • Количество бит данных: 8
  • Проверка четности: нет
  • Количество стоп-битов: 1
  • Управление потоком: аппаратное или без управления потоком


Загрузка Linux


Далее рассмотрим загрузку платы T1040RDB с TFTP-сервера, установленного на рабочем ПК. Для этого перенесем uImage--3.8-r11.1-t1040rdb-20150603132854.bin, uImage--3.8-r11.1-t1040rdb-20150603132854.dtb, fsl-image-core-t1040rdb-20150603132854.rootfs.ext2.gz.u-boot в каталог TFTP-сервера.

Для загрузки необходимо выполнить установку следующих параметров в консоли u-boot и задать команду загрузки платы с TFTP:
setenv serverip 192.168.1.10
setenv ipaddr 192.168.1.1
setenv ethact FM1@DTSEC4
setenv baudrate 115200
setenv bootfile uImage--3.8-r11.1-t1040rdb-20150603132854.bin
setenv consoledev ttyS0
setenv fdtfile uImage--3.8-r11.1-t1040rdb-20150603132854.dtb
setenv fdtaddr c00000
setenv loadaddr 1000000
setenv othbootargs ramdisk_size=960000
setenv ramboot 'setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr'
setenv ramdiskaddr 2000000
setenv ramdiskfile fsl-image-core-t1040rdb-20150603132854.rootfs.ext2.gz.u-boot

Выполняем команду загрузки Linux:
run ramboot

При успешном получении загрузочных файлов с TFTP в консоли появятся следующее сообщение:
## Booting kernel from Legacy Image at 01000000 ...
   Image Name:   Linux-3.8.13-rt9-QorIQ-SDK-T2080
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    4290895 Bytes = 4.1 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 02000000 ...
   Image Name:   fsl-image-core-t1040rdb-20150603
   Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
   Data Size:    27520425 Bytes = 26.2 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 00c00000
   Booting using the fdt blob at 0xc00000
   Uncompressing Kernel Image ... OK
   Loading Ramdisk to 2e5c1000, end 2ffffda9 ... OK
   Loading Device Tree to 03fe1000, end 03fff71e ... OK

Полный лог загрузки ОС пропущен для экономии времени читателя.

Подключение к командной строке Linux:
login: root
root@t1040rdb:~#
Проверим, что загрузилось свежесобранное ядро:
root@t1040rdb:~# uname -a
Linux t1040rdb 3.8.13-rt9-QorIQ-SDK-T2080V1.1-T1040V0.3 #1 SMP Wed Jun 3 17:31:19 FET 2015 ppc GNU/Linux

В собранной прошивке есть стандартные утилиты проверки пропускной способности сети iperf и netperf. Проведем базовые проверки пропускной способности:
root@t1040rdb:~# ifconfig fm1-gb3 up # Порт ETH0
root@t1040rdb:~# ifconfig fm1-gb3 192.168.1.1
root@t1040rdb:~# iperf -c 192.168.1.10
------------------------------------------------------------
Client connecting to 192.168.1.10, TCP port 5001
TCP window size: 21.3 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.1 port 40315 connected with 192.168.1.10 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.09 GBytes    935 Mbits/sec

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

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

Другая хорошая статья на эту тему: Знакомство с возможностями свитч-процессора Realtek RTL 8332M.

Комментарии (2)


  1. RZK333
    07.07.2015 15:10
    +1

    1)

    SDK поставляется в виде образа со следующим названием: QorIQ-SDK-T2080V1.1-T1040V0.3-SOURCE-20140422-yocto.iso

    почему такой древний SDK больше чем годовалой давности? современная версия ppc ядра от freescale — git.freescale.com/git/cgit.cgi/ppc/sdk/linux.git/tree/Makefile?h=sdk-v1.7.x — 3.12.19, версия SDK соответственно 1.7
    вытягивайте все свежее и общайтесь в mailing list, freescale большие любители создавать и потом фиксить веселые errata в своем железе.

    2) скоро meta-ppc и meta-arm объединят в одну meta-freescale comments.gmane.org/gmane.linux.embedded.yocto.meta-freescale/14443


    1. Unomano
      08.07.2015 11:12

      Мы не так давно получили эту плату, спасибо за обновление!