
Шляпы для Raspberry Pi B+
Одной из недавних инициатив Raspberry Foundation является HAT (аппаратное обеспечение, прикрепленное сверху, см. [1]). Идея состоит в том, чтобы стандартизировать платы расширения для Raspberry Pi модели B+, применяемые к сокету GPIO (40-pin). Одна из целей — создать общий размер и форму плиток, чтобы они соответствовали компоновке компонентов модели B+ (разъемы CSI ленты камеры или DSI дисплея) и новым монтажным отверстиям. Платы HAT также будут включать в себя полный (папа) разъем GPIO. К сожалению, стандарт не требует, чтобы он был переходным, что позволило бы складывать комбинации «сэндвич». Расстояние пластины от RPi должно быть 10-12 мм (механическая спецификация HAT показана на чертеже открытия (см. [2])).
Но дело не в самом механическом слое. Фонд указывает, например, как спроектировать источник питания RPi через физический контакт номер 2 (обратное питание) вместо стандартного USB. Наиболее интересным элементом спецификации HAT является IDEEPROM. Расширенный 40-контактный GPIO RPi B+, по сравнению с 26-контактным в версии B, включает, помимо прочего, 9 дополнительных универсальных портов ввода-вывода и два специальных порта ID_SD и ID_SC (физические контакты 27 и 28 соответственно). Эти порты зарезервированы для идентификации и настройки плат, совместимых с HAT. Они предоставляют выделенный интерфейс I2C (SD: данные; SC: часы), к которому должна быть подключена память 24cx EEPROM (например, 24c512). Память IDEEPROM должна иметь 16-битную адресацию (без подкачки), питаться от напряжения 3,3 В и оснащаться специальным выводом, защищающим всю область от случайной защиты от записи.
HAT определяет, что должно быть записано в эту память, чтобы RPi мог правильно идентифицировать и настроить подключенную плату расширения. Особенно:
- тип плитки, ее производитель,
- какое оборудование в нем содержится,
- как настроить GPIO, например, какие контакты должны быть установлены как входы или выходы,
- какие драйвера загружать.
Подобная процедура автоконфигурации должна значительно упростить использование платы, переложив часть ответственности на операционную систему. Его элементом является так называемый дерево устройств (DT). Идея этого механизма состоит в том, чтобы сделать ядро Linux независимым от оборудования, на котором оно должно работать. Спецификация оборудования выделена в отдельный файл, который загрузчик передает ядру в качестве параметра загрузки. Для этого необходимо добавить правильную поддержку DT в загрузчик, ядро и другие разделы SD-карты (см. [3]). Это существенно меняет способ инициализации Linux. Это относительно новый механизм, который еще не используется базовым дистрибутивом Raspbian. Однако он кажется настолько привлекательным, что нужно просто дождаться, когда он станет доступен поставщикам HAT-совместимых пластин.
Источники: [1] [2] [3]
Больше информации о Raspberry Pi Ты найдешь на складе.

