Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Что ж, это может быть полезно не для всех, потому что у большинства из вас, вероятно, нет сломанного классического Mac. Однако мне очень нравится дисплей этой штуки, и я успешно подключил ее к BBB много лет назад. Однако мне так и не удалось отобразить содержимое фреймбуфера. Но Raspberry Pi и его встроенный DPI позволяют подключать практически любой внешний монитор и использовать его для удобного отображения видеовыхода.
Обратите внимание, что это упрощенная копия оригинальной статьи, опубликованной на моем личном сайте. В исходной версии обсуждаются еще несколько технических деталей и проблем, с которыми я столкнулся во время этого проекта.
Запасы
Вам понадобиться:
- Технический паспорт вашего дисплея
- 40-контактный Raspberry Pi (2B + или новее)
- Любой (хоть немного) стандартный монитор
- Дополнительно: преобразователь логического уровня с 3,3 В до 5 В (зависит от вашего монитора)
- Провода
Шаг 1. Найдите информацию о времени и сигнале
Это, вероятно, самый сложный этап всего проекта, потому что руководства пользователя обычно не содержат этой информации. Я думаю, что лучше всего начать с поиска технических руководств или руководств по ремонту вашего монитора. Если ваш монитор является стандартным дисплеем VGA, вы можете найти информацию о времени в Интернете.
В любом случае, отображается временная диаграмма внутреннего ЭЛТ Macintosh Classic. К счастью, кто-то загрузил старые заметки разработчика, содержащие всевозможные технические детали для этого компьютера. Я расскажу о точном времени на более позднем этапе этой инструкции.
Если вы не знаете, как работают сигналы VGA (или сигнал дисплея этого Mac), вы можете взглянуть на эти ресурсы:
- Сигналы VGA
- ЭЛТ Macintosh Classic
Шаг 2: о режиме DPI
Возможно, вы видели некоторые шляпы с дисплеем Raspberry Pi, которые подключаются только через интерфейс GPIO. Они используют режим DPI 40-контактного GPIO Raspberry Pi, который является одной из альтернативных функций GPIO.
В этом случае меняется распиновка банка GPIO. Результат можно увидеть на изображении (источник изображения).
Эта конфигурация позволяет подключать параллельные RGB-дисплеи к Raspberry Pi GPIO. Однако это также означает, что большинство контактов GPIO не могут использоваться для других задач, пока Pi работает в режиме DPI.
Этот интерфейс управляется микропрограммой графического процессора и может быть настроен с помощью специальных параметров config.txt. Кроме того, вам также необходимо загрузить и включить правильный оверлей дерева устройств Linux.
Шаг 3. Включение режима DPI
Как уже упоминалось, режим включается путем загрузки правильного оверлея Linux Device Tree. Но сначала вам нужно отключить I2C и SPI, потому что они будут конфликтовать с некоторыми выводами видео. Для этого отредактируйте файл config.txt:
судо нано /boot/config.txt
В этом файле закомментируйте следующие две строки:
dtparam = i2c_arm = ondtparam = spi = on
Как только это будет сделано, переведите GPIO в режим Alt2, загрузив DTO:
# 24-битный modedtoverlay = dpi24 # 18-битный режим # dtoverlay = dpi18
Режим зависит от вашего монитора. Я использовал 8-битный режим, в котором каждый цвет (красный, зеленый и синий) имеет восемь отдельных битов, которые передают информацию о цвете на монитор. Обратите внимание, что оба DTO уже установлены по умолчанию.
Шаг 4: Настройка видеооборудования
Режим DPI можно настроить, поместив специальные атрибуты в файл config.txt. Я написал это небольшое Java-приложение, которое позволит вам быстро ввести всю необходимую информацию. Затем он сгенерирует для вас атрибуты, и вам нужно только добавить их в файл config.txt.
Этот инструмент универсален и также может использоваться для создания свойств конфигурации для других дисплеев. Различные поля и параметры описаны на странице загрузки приложения. Я использовал следующие два атрибута для Macintosh Classic CRT:
dpi_output_format = 0x76017 dpi_timings = 512 0 14 178 0 342 0 0 4 24 0 0 0 60 0 15667200 1
Шаг 5: Настройте фреймбуфер и настройте пользовательский режим видео
Вы можете использовать предварительно настроенный режим синхронизации или определить собственный. В этом случае стандартный видеорежим не может использоваться для взаимодействия с дисплеем. Поэтому мне пришлось определить собственный режим видео, что можно сделать, установив следующие два флага в файле config.txt:
dpi_group = 2dpi_mode = 87
Это гарантирует, что параметр dpi_timings, описанный выше, будет использоваться драйвером при загрузке Raspberry Pi.
Затем необходимо настроить буфер кадра. Я использовал следующие настройки для Mac Classic CRT:
overscan_left = 0overscan_right = 0overscan_top = 0overscan_bottom = 0framebuffer_width = 512framebuffer_height = 342enable_dpi_lcd = 1display_default_lcd = 1
Последние две строки обеспечивают генерацию видеосигналов и использование DPI для вывода содержимого буфера кадра.
Значения переразвертки можно использовать для центрирования изображения, если оно должно быть не по центру. Однако с моим сразу все было в порядке, поэтому я не использовал эти значения.
Шаг 6: все готово
Этот шаг довольно прост. Просто подключите линию HSYNC Raspberry Pi (GPIO 5) и линию VSYNC Pi (GPIO 3) к линиям HSYNC и VSYNC на дисплее. Не забудьте подключить заземляющий провод дисплея к контакту GND на Pi. Затем подключите цветные линии Raspberry Pi к вашему дисплею. Этот шаг зависит от вашей конфигурации и дисплея.
Дисплей Mac Classic представляет собой однобитный монохромный дисплей, поэтому я просто использовал одну цветную линию для подключения линии данных на экране. Это быстрое и грязное решение, и я правильно подключу экран в другой статье.
Шаг 7: Резюме
И это все, что вам нужно сделать! Это превратило мой старый сломанный Macintosh Classic в крутой и полезный дисплей. К счастью, очень легко настроить режим DPI и настроить его для работы практически с любым дисплеем, даже с ЭЛТ 30-летней давности. Этот метод позволяет мне визуализировать рабочий стол и консоль без каких-либо сложных программ и модификаций оборудования.
Примечание. Некоторые детали были опущены из этого руководства, чтобы оно было кратким и легким для понимания. Полную версию статьи можно прочитать на сайте nerdhut.de!