Эллипс
Компания
Услуги
Продукты и решения
Проекты
Поддержка
Публикации
Контакты
Публикации  >   Статьи  >   Разработка встроенных сетевых устройств на базе процессора SA-110


Разработка встроенных сетевых устройств на базе процессора SA-110


Когда-то давно, во времена ЕС ЭВМ, основной парадигмой применения вычислительных машин был "одна машина - много пользователей". С появлением персональных ЭВМ эта парадигма быстро изменилась на "одна машина - один пользователь". Сейчас мы можем видеть стремительную трансформацию этой парадигмы в "много машин - один пользователь". Под машинами в этом случае понимаются встроенные (embedded) вычислительные машины.

Данная статья посвящена вопросам разработки программного обеспечения на базе RISC процессора SA-110, для которого часто, и в этой статье, используют название StrongARM.


Архитектура процессора SA-100

Процессор SA-110 (StrongARM) разработан английской фирмой Advanced RISC Machines Limited (www.arm.com) и начал производиться фирмой DEC. Затем DEC стала собственностью Intel, поэтому теперь он выпускается как продукт Intel и всю техническую документацию можно найти на www.intel.com. Это иногда создает небольшую путаницу, потому что архитектура SA-100 не имеет ничего общего с архитектурой процессоров x86.

Основным критериями при разработке этого и однотипных процессоров были выбраны (в порядке приоритетов) (а) быстродействие на единицу потребляемой мощности; (б) размер и (в) потребляемая мощность и стоимость. Выбор таких критериев очевиден для встроенных устройств - повышенная температура поверхности процессора приводит к необходимости добавления вентиляторов, что часто просто невозможно. Необходимо отметить, что по указанным показателям, SA-110 оставляет далеко позади процессоры прочих разработчиков (Motorolla, Hitachi ).

StrongARM - это RISC процессор, команды которого имеют 32-битную адресацию. Процессор имеет аппаратную поддержку виртуальной памяти (2-х уровневая таблица страниц) , 32-х килобайтные кэши команд и данных, 32-х килобайтный буфер записи данных. Управление перечисленными элементами сосредоточено в сопроцессоре (MMU). Сопроцессор плавающей точки отсутствует. Процессор имеет конвейер на три команды. Тактовая частота - 233 Мгц.

Процессор имеет шесть состояний, два из которых (режим пользовательских задач и режим системной, привелигированной, задачи ) являются основными при нормальной работе Unix-подобных OS. Прочие режимы используются для обработки прерываний и аварийных ситуациях.

Программисту доступны 16 регистров общего назначения, один из которых - регистр адреса исполняемой команды и 4GB адресное пространство. Однако, физическая память ограничена 256 Mb. Все остальное занимают регистры управления процессором, PCI регистры и память ввода-вывода.

Для обеспечения нормальной работы StrongARM используется специально разработанное устройство - CoreLogic 21285, которое выполняет те же функции, что системная плата в x86 архитектуре. CoreLogic обеспечивает управление банками DRAM, ROM, PCI шиной, серийным портом и шиной I2O. Простого перечисления этих функций достаточно для того чтобы отметить, что эта схема не проще самого процессора.

Исходя из опыта автора, можно дать интегральную оценку производительности данного процессора - это примерно соответствует вычислительной мощности Pentium 166 - 200 Мгц. Однако, в отдельных случаях, производительность может оказаться и повыше.

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

Сетевой диск, кроме процессора и CoreLogic, содержит IDE или SCSI контроллер и Ethernet-адаптер, интеллектуальный Ethernet-адаптер - PCI-PCI bridge и Ethernet-адаптер. Идея сетевого диска проста - устройство, которое просто подключается в сеть и видно из WindowsXX как машина с диском большой емкости. Интеллектуальный Ethernet-адаптер выполняет предварительную обработку HTTP соединений, разгружая основной WebServer. Сразу заметно, что все эти устройства имеют ярко выраженную сетевую окраску.


Средства разработки программного обеспечения

На сегодняшний день, для StrongARM, используется GNU С и С++ кросс-компиляторы с набором соответствующих утилит ( www.gnu.org ). GNU С компилятор не имеет себе равных как по количеству поддерживаемых аппаратных платформ, так и по качеству оптимизации результатной программы. К ограничениям можно отнести следующее:

  • Версия GNU C 2.8.1 дает возможность получать объектный код только в COFF.
  • Новая версия GNU C 2.95.х позволяет настроить кросс компилятор на ELF формат, но не дает возможности скомпилировать кросс-компилятор из-за отсутствия ассемблера и редактора для этого формата.
  • Версия Cygnus компилятора (sourceware.cygnus.com) ecosSWtools содержит кросс-компилятор для ELF, но только для версии процессора ARM7, не совместимой со StrongARM. Правда, после двухдневного разбирательства автору удалось убрать из исходного текста компилятора дополнительные константы и получить нормальный кросс-компилятор.
  • Версия, на которой написана операционная система для NetWinder (www.netwinder.org) тоже может быть использована для генерации объектного кода в ELF формате.


Операционные системы для StrongARM и проблемы их портирования

Портированные на StrongARM операционные системы можно разбить на две группы - Unix-подобные и системы реального времени (RTOS).

MSDOS не портирован. Есть сведения о попытке портирования WindowsCE.

Наиболее широко распространенным на сегодня является Linux. Он является прединсталированной операционной системой для NetWinder. Это практический аналог обычной PC на базе StrongARM. Однако, в отличие от обычной PC, практически невозможно расширить набор включенных устройств. Во многом это связано с трудностями портирования драйверов, о которых будет говориться чуть позже. Достаточно сказать, что из двух сетевых адаптеров (10Мbit и 100Mbit) работает устойчиво только первый по той причине, что tulip драйвер для второго содержит ошибку (данные на май 1999 года).

Достоинствами Linux для портирования являются понятность исходных текстов его ядра, которые во многом стабильны, большое количество программистов, с которыми можно поделится своими проблемами и, возможно, получить дельный совет, наличие очень удобных средств просмотра и поиска в исходных текстах версий ядра (например, lxr.linux.no).

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

Второй ОС, портированной на StrongARM, можно назвать NetBSD ( www.netbsd.org ) Последняя версия (1.4) весьма стабильно работает на этом процессоре.

NetBSD - это клон BSD Unix, ориентированный именно на сетевую работу. Достаточно сказать, что ядро NetBSD поддерживает NFS корневую файловую систему уже давно. Как и все клоны BSD, это открытое программное обеспечение.

По сравнению с Linux, эта ОС имеет определенные преимущества и по-существу. Во-первых, реализация TCP/IP в ней базируется на понятии m-буфера, унаследованное от первоисточника. Система m-буферов хотя и сложнее, но работает заметно быстрее, чем реализация TCP/IP в Linux, особенно при размере RAM более 128 Мб. Во-вторых, четкая система работы с DMA при разработке драйверов, что позволяет избежать многих трудностей при портировании.

На взгляд автора, эти достоинства не перевешивают недостатков. А к ним можно отнести следующие. Во-первых, невероятные трудности при отладке, которые вызваны тем, что тексты ядра явно написаны авторами с "университетским" складом мышления и исходно не предусматривающие появление изменений или наличие ошибок в них. Очень широко используются средства препроцессора и не редко идентификаторы функций (не говоря уж об идентификаторах переменных) переопределяются по два-три раза, так что определить какой же реально текст исполняется, весьма затруднительно. Во-вторых, это принципиальный просмотр в распределении виртуального адресного пространства, который приводит к тому, что виртульный размер ядра не может превышать 4 Мб. Казалось бы, что это не мало, но только текст ядра занимает около 1 Мб.

При портировании обоих операционных систем, автор нашел, что наибольшие трудности при отладке вызваны, как ни странно, наличием аппаратной поддержки виртуальной памяти. Вызвано это тем, что первоначальные версии ОС были написаны для x86, где виртуализация и синхронизация кэшей выполняется процессором. Для StrongARM эти функции возлагаются на ядро ОС. Особенно это показательно при переносе драйверов, использующих прямой доступ в память (DMA). Аппаратура периферийного устройства не подозревает о наличии виртуальной памяти и использует физические адреса. Для корректной работы такого устройства необходимо не только обеспечить его настройку в физических адресах, но и запретить использование кэша данных и буферирование выделенных для этой цели виртуальных страниц. Но наибольшие трудности возникают при переносе драйверов "интеллектуальных" устройств ввода-вывода, в первую очередь, SCSI контроллеров типа SYM53C895 Symbios Logic ( www.simbios.com ) . Этот контроллер содержит так называемый script-processor, который позволяет контроллеру выполнять программы, размещенные в основной памяти (помним про канальные программы ...). Но в этих программах вся адресация должна быть в физических адресах. Возникает проблема динамического конвертирования адресов из виртуальных в физические и обратно. При статической таблице страниц это относительно просто, но когда она формируется динамически... Если учесть, что размер исходного текста драйвера для этого контроллера превышает 8 тыс. строк, то примерно понятны возникающие трудности.

Теперь обратимся к RTOS. Бесспорный лидер в этой области - это VxWorks разработки Wind River (www.wrs.com). Первоисточник этой RTOS все тот же - BSD. Порт на StrongARM сделан давно и оттестирован. Но стоимость лицензии на эту систему около $25,000 и необходимо платить определенную сумму с каждого выпущенного экземпляра системы. Даже крупные компании не желают выпускать продукцию с таким лицензионным соглашением.

Имеется три или четыре других RTOS, например, Nucleus ( www.atinucleus.com ), которые портированы на StrongARM. Но в описании применения самого процесоора явно оговаривается, что он разработан для более серьезных ОС, чем RTOS. Действительно, для RTOS характерны предельно упрощенные системы управления оперативной памятью, простые алгоритмы супервизора задач. Да и ни одна RTOS изначально не предназначена для запуска на ней, например, Web сервера плюc NFS. С другой стороны, необходимо отметить, что простота RTOS делает простым и её портирование.


Заключение

RISC процессор StrongARM является сегодня наиболее привлекательным для разработки встроенных сетевых устройств. Низкая цена, высокая производительность делают его лидером в этой области. Однако, существует острая необходимость в разработке "легковесной" операционной системы для него, в которой бы был реальзован TCP/IP с BSD socket интерфейс.



Автор: Антонец Д.К. SET Engineering, Inc. USA | e-mail: d.antonets#computer.org

 
614068, Россия, г. Пермь, ул. Луначарского, д. 80 (1 этаж)
телефон: +7 (342) 271-77-81
e-mail: web@ellips.ru

Подписаться на рассылку новостей

Rambler's Top100
© ЭЛЛИПС, 2001-2017
Создание сайта: Амадо

Написать письмо Карта сайта Главная