TCP/IP для RetroBSD
2012-06-04 00:15Знаковый момент: в RetroBSD заработала поддержка сети TCP/IP. В качестве сетевого контроллера Ethernet используется чип W5100 фирмы Wiznet. Простейшая сетевая платформа для запуска RetroBSD легко собирается из двух плат: chipKIT Max32 и Arduino Ethernet shield R3:


Втыкаете одну плату в другую, прошиваете ядро из конфигурации sys/pic32/max32-eth, записываете файловую систему на карточку microSD - и вперёд. Есть пять примеров: веб-сервер, веб-клиент, чат-сервер, telnet-клиент и запрос даты/времени по сети.
Прикол здесь в том, что это как бы невозможно. Да, в операционной системе 2.11BSD был сетевой стек TCP/IP. Но ему для работы требовалась хотя бы пара мегабайт физической памяти. Здесь же микроконтроллер настолько крохотный, что у ядра на всё про всё имеется только 32 килобайта, да и те забиты под завязку. Но голь на выдумки хитра: именно для таких ситуаций придумали чип W5100, который аппаратно реализует весь стек протоколов, и выдаёт наружу уже готовый интерфейс к сокетам. Всё, что требуется от ядра - драйвер SPI. Собственно вся сетевая обработка происходит в контроллере и в программе пользователя. Есть, конечно, ограничения по количеству сокетов (четыре), размеру буферов (2x2 кбайта на сокет), протоколам и т.п. Очевидный минус - активным может быть только одно сетевое приложение. Тем не менее, для большинства встраиваемых применений очень даже неплохо.


Втыкаете одну плату в другую, прошиваете ядро из конфигурации sys/pic32/max32-eth, записываете файловую систему на карточку microSD - и вперёд. Есть пять примеров: веб-сервер, веб-клиент, чат-сервер, telnet-клиент и запрос даты/времени по сети.
Прикол здесь в том, что это как бы невозможно. Да, в операционной системе 2.11BSD был сетевой стек TCP/IP. Но ему для работы требовалась хотя бы пара мегабайт физической памяти. Здесь же микроконтроллер настолько крохотный, что у ядра на всё про всё имеется только 32 килобайта, да и те забиты под завязку. Но голь на выдумки хитра: именно для таких ситуаций придумали чип W5100, который аппаратно реализует весь стек протоколов, и выдаёт наружу уже готовый интерфейс к сокетам. Всё, что требуется от ядра - драйвер SPI. Собственно вся сетевая обработка происходит в контроллере и в программе пользователя. Есть, конечно, ограничения по количеству сокетов (четыре), размеру буферов (2x2 кбайта на сокет), протоколам и т.п. Очевидный минус - активным может быть только одно сетевое приложение. Тем не менее, для большинства встраиваемых применений очень даже неплохо.
