Получив от китайцев дисплей-клон китайского же дисплея от Waveshare, я проверил его работу на свежескачанном дистрибутиве Windows IoT без обновлений. В целом всё устраивало, кроме небольшого косяка с разрешением (баг с тачскрином — отдельная история) — нельзя выставить было в настройках разрешение 1024×600. В итоге проверил на 1024×768, внизу немного обрезалось конечно, но всё было читаемо. Решил, что это после обновления ОС исправится, закрыл заказ китайцу с чистой душой, мол, попозже разберусь, работает же!
Собственно вот и наступило «попозже» — поставил все обновления и … нет такого разрешения. :)
Поставил Insider сборку, обновил — интерфейс стал лучше, много чего доработали, добавили, стало удобно, но… такого китайского разрешения нет. Вот скриншоты с выбором всех доступных разрешений + частоты обновления (нажмите для увеличения):
Печально, но выход есть! Выключаем малину, вынимаем microSD флешку и подключаем к ПК. Нам будет доступен boot раздел. Выглядит это так:
Здесь нас интересует только один файл — config.txt, в котором настраиваются первичные параметры запуска. Внутри него будет нечто подобное (все комментарии удалены):
init_uart_clock=16000000 kernel_old=1 safe_mode_gpio=8 max_usb_current=1 gpu_mem=32 hdmi_force_hotplug=1 core_freq=250 framebuffer_ignore_alpha=1 framebuffer_swap=1 disable_overscan=1 hdmi_group=2 display_rotate=0 hdmi_mode=16
Здесь не видно обозначения конкретного разрешения или частоты обновления экрана, только выбор пресетов этих настроек посредством магического номера в параметре hdmi_mode. Не густо, но исправимо. Необходимо добавить параметр hdmi_cvt, через который и задать свой режим работы дисплея, отличный от стандартных (hdmi_mode при этом закомментировать). Более подробное описание настройки свойств этого параметра и их порядок:
hdmi_cvt=<width> <height> <framerate> <aspect> <margins> <interlace> <rb>
- width — ширина дисплея в пикселях;
- height — высота дисплея в пикселях;
- framerate — частота обновления дисплея в Гц;
- aspect — соотношение сторон дисплея, может иметь значения 1=4:3, 2=14:9, 3=16:9, 4=5:4, 5=16:10, 6=15:9;
- margins — поля, может иметь значения 0=отключены, 1=включены;
- interlace — чередование, может иметь значения 0=построчное, 1=чересстрочное;
- rb — reduced blanking, может иметь значения 0=выключено, 1=включено.
Строка должна прописываться без переносов и между свойствами должны быть пробелы. В файле это выглядит так:
init_uart_clock=16000000 kernel_old=1 safe_mode_gpio=8 max_usb_current=1 gpu_mem=32 hdmi_force_hotplug=1 core_freq=250 framebuffer_ignore_alpha=1 framebuffer_swap=1 disable_overscan=1 hdmi_group=2 display_rotate=0 hdmi_cvt=1024 600 60 6 0 0 0 # hdmi_mode=16
Из минусов данного решения стоит отметить, что теперь НЕ показывается текущие параметры в Device Settings, и более того, становится нельзя выбрать другие разрешения для экрана оттуда. Если восстановить параметр hdmi_mode, то всё работает как ранее. Выглядит это так:
Открытый выпадающий список Display Resolution просто пустой. :)
На этом всё, удачи в освоении китайских дисплеев!