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 кбайта на сокет), протоколам и т.п. Очевидный минус - активным может быть только одно сетевое приложение. Тем не менее, для большинства встраиваемых применений очень даже неплохо.

no subject
Date: 2012-06-04 08:31 (UTC)no subject
Date: 2012-06-04 08:45 (UTC)no subject
Date: 2012-06-04 08:47 (UTC)http://www.wiznet.co.kr/Sub_Modules/en/technical/Q_A_View.asp?boardcd=101&PK_NUM=23547 и их же презенташка на данную тему http://www.cu.ipv6tf.org/pdf/tsiii-6.pdf
no subject
Date: 2012-06-04 10:38 (UTC)Вообще интересно, бывают ли какие нибудь мобильно телефонные платформы ориентированные на создание именно дистанционно управляемых контроллеров? Или какие нибудь внешние штуки позволяющие телефон через USB использовать подобным образом?
PS. Нет я не анархист и не хочу делать адскую машину, просто немного всякими роботизированными игрушками увлекся вместе с другими нашими сотрудниками ;)
no subject
Date: 2012-06-04 12:11 (UTC)no subject
Date: 2012-06-04 16:37 (UTC)no subject
Date: 2012-06-05 23:49 (UTC)Сам по себе мобильник как управляющая платформа не очень подходит: к нему трудно что-нибудь подключить.
no subject
Date: 2012-06-23 10:15 (UTC)В принципе, решения наверное где то здесь:
http://habrahabr.ru/post/123361/
Кстати, я правильно понимаю что chipKIT Max32 это примерно аналог Arduino Mega 2560, но на 32 разрядном MIPSе? Ну то есть аналогом можно назвать с натяжкой ибо сильно разный класс процессоров, но все же. А система программирования совместимая с ardruin-овской для нее есть?
В общем я уже собрался проводить эксперименты. Буду докладывать и задавать вопросы.
no subject
Date: 2012-06-24 19:55 (UTC)Про запуск BSD на ней ты уже знаешь, наверное. Достаточно добавить Arduino Ethernet shield rev6. Есть простейший веб-сервер, telnet, ntpdate.
no subject
Date: 2012-06-24 22:17 (UTC)Не можешь ли сходу сказать насколько придется переделывать библиотеки из гугловского ADK (библиотеки взаимодействия с Андроид http://habrahabr.ru/post/119208/, http://habrahabr.ru/post/123361/) в части библиотеки Firmware?
Еще вопрос поддерживается ли Arduino Motor Shield?