Member 13376650 Ответов: 1

Как установить SPI LCD на дисплей по умолчанию в ubuntu?


У меня есть 2,2-дюймовый TFT-LCD и плата на базе ARM(nanopi-m1) с Ubuntu-server-16.04 на ней. У меня есть драйвер фреймбуфера по имени NOTRO(https://github.com/notro/fbtft) который использует поддержку fbtft в ядре и заставляет мой дисплей работать с помощью этих команд:

sudo modprobe fbtft_device custom name=fb_ili9341 gpios=reset:1,dc:201,led:6 speed=16000000 rotate=90 bgr=1


С помощью вышеприведенной команды мой ЖК-дисплей включается, и у меня есть пустой черный экран. Затем я должен выполнить эту команду, чтобы иметь свой экран x-manager:

FRAMEBUFFER=/dev/fb8 startx


Но теперь мне нравится менять настройки Linux, чтобы эти команды выполнялись автоматически при запуске. но я не знаю, как это сделать.

Должен сказать, что я тоже установил эти пакеты:

xorg, xserver-xorg-video-fbdev, openbox


Что я уже пробовал:

Я действительно преобразовал свой файл /boot.script.bin в пользовательский файл.fex с этим содержимым:
GNU nano 2.5.3              File: custom.fex                                  

[product]
version = "100"
machine = "FriendlyARM NanoPi M1"

[platform]
debug_mode = 1
eraseflag = 1
next_work = 2

[target]
boot_clock = 1008
storage_type = -1

[key_detect_en]
keyen_flag = 0

[fel_key]
fel_key_max = 7
fel_key_min = 2


Затем я должен изменить то, что я хочу загрузить здесь, и снова преобразовать его в файл .bin.
Кроме того, я нашел этот учебник для этого, но я боюсь изменить его неправильно!

 script.bin/fex file

The settings in the [disp_init] section of the script.bin/fex file define the display output enabled at boot.

An example configuration for HDMI:

[disp_init]
disp_init_enable = 1
disp_mode = 0
screen0_output_type = 3
screen0_output_mode = 4
fb0_framebuffer_num = 2
fb0_format = 10
fb0_pixel_sequence = 0
fb0_scaler_mode_enable = 0

    disp_mode selects single-screen output or different dual screen modes. Generally this is 0, which means use screen0 with fb0 (one screen).
    screen0_output_type = 3 means HDMI output.
    screen0_output_mode selects the video/monitor mode to use (resolution and refresh rate). See the table in the Fex guide.
    fb0_framebuffer_num selects the number of buffers for fb0, generally you need 2 or more for video acceleration or Mali (3D), 3 is better.
    fb0_format and fb0_pixel_sequence determine the pixel format in the framebuffer. The above example (values of 10 and 0) selects the most common variant of 32bpp truecolor (ARGB).
    fb0_scaler_mode_enable selects whether the scaler should be enabled. Enabling it does not really scale pixels, it configures the scaler to scale pixels 1-to-1 which can fix screen refresh-related problems at 1080p resolution. See the section below. 

Similar parameter are defined for screen1 (which is usually disabled in practice). 

1 Ответов

Рейтинг:
0

Jochen Arndt

В разделе Сделайте его постоянным около Главная страница · notro/fbtft Wiki · GitHub[^].

Вы должны загрузить модуль автоматически с помощью modprobe конфигурационный файл вместо того, чтобы вручную использовать modeprobe команда.

Чтобы сказать Xorg использовать устройство, поставьте FRAMEBUFFER= команда в некоторый скрипт, который выполняется при запуске. В качестве альтернативы создайте конфигурационный файл Xorg (см. Использование фреймбуфера · notro/fbtft Wiki · GitHub[^]).

Я не знаю, что это такое. нанопи и сборка Ubuntu для него. С помощью Raspberry Pi вы также можете использовать файл дерева устройств для вашего дисплея, делая его дисплеем по умолчанию при запуске (загрузочные сообщения отображаются на дисплее SPI). Вы можете проверить, если нанопи это тоже поддерживает. Тогда нет необходимости загружать модуль.


Member 13376650

Я использую армбиан 5.30

Jochen Arndt

Вы можете проверить, поддерживает ли он деревья устройств. В любом случае он должен работать, автоматически загружая модуль и сообщая серверу Xorg, какой фреймбуфер использовать, как описано выше.

Member 13376650

Я сделал это и сделал два файла "fbtft.conf", где в учебнике говорилось, но, к сожалению, после перезагрузки у меня есть только белый(серый) экран и я даже не могу подключиться к своей плате по SSH

Jochen Arndt

Вы должны установить те же параметры, что и в ручной команде modprobe.

Member 13376650

Я точно скопировал его!
Я не знаю, почему SSH-доступ теперь не работает! это так странно

Jochen Arndt

Все, что я могу предложить,-это проверить, имеет ли модуль SPI имя spi-bcm2835 в вашей системе или в другой (или даже необходимо ли его загружать; возможно, он уже загружен).
То, что SSH-сервер не запущен, указывает на то, что система блокируется. Вы можете подождать некоторое время.

Member 13376650

Спасибо, Йохен, но как мне узнать, как называется мой модуль? Насколько я помню, когда я писал "dmesg", в моем результате не было этой строки " fbtft_device: bcm2708_fb id=-1 pdata? нет" или какая-то альтернатива этому! что это значит?

Jochen Arndt

Имя-fb_ili9341.

Member 13376650

Я снова заставил себя переустановить свой Linux, а затем снова сделал то же самое, но у меня нет дисплея... Я думаю, что проблема заключается в запуске "FRAMEBUFFER=/dev/fb8 startx". когда я делаю это вручную мой дисплей работает но он не работает автоматически

Member 13376650

Учебник говорит, что создайте файл "/usr/share/X11/xorg.conf.d/99-fbdev.conf" с этим содержимым, но он не работает, я думаю

Раздел "Устройство"
Идентификатор "myfb"
Водитель "фреймбуферу"
Опцию "Использовать драйвер fbdev" "/Дев/fb8" ///моя ЖК работает по fb8 вручную
EndSection

Jochen Arndt

Учебник предназначен для Raspberry Pi с Raspbian Linux.
Возможно, потребуется проверить ваш дистрибутив, если настройки отличаются.

Загружается ли модуль автоматически (проверьте журнал загрузки)?
Тогда ему должно быть все равно, устанавливаете ли вы фреймбуфер Xorg вручную или из скрипта.

Member 13376650

Должен ли я скомпилировать свое ядро, чтобы иметь свой ЖК-дисплей при загрузке системы?

Jochen Arndt

Если версия Ubuntu поддерживает деревья устройств для вашей платы, я бы использовал это.

Если нет, то повторная настройка и сборка ядра и загрузочного образа для изменения отображения по умолчанию-это сложная задача, которую я бы не рекомендовал по разным причинам.

Member 13376650

Как я могу узнать, поддерживает ли моя версия Ubuntu деревья устройств или нет?

Jochen Arndt

Прочитав документацию и/или информацию на веб-странице, с которой Вы ее получили. Или путем поиска в интернете соответствующих ключевых слов, таких как "nanopi ubuntu device tree".

Member 13376650

Я отредактировал свой пост, можете ли вы покрасить часть "что я пробовал"?

Также у меня есть еще один вопрос, почему мой ЖК-дисплей работает с fb8? могу ли я изменить его на другой?

Jochen Arndt

Как уже отмечалось, у меня не было nanopi и я не использовал версию Ubuntu ARM. Так что я не могу быть вам очень полезен (кроме загрузки модулей, которые одинаковы или, по крайней мере, похожи на все системы Linux).

Я не знаю, почему используется fb8. На Raspberry Pi это fb1 для таких SPI-дисплеев (fb0-это выход HDMI). Но вы не должны заботиться об этом, когда это работает.

Member 13376650

Внутри /var/log у меня был файл bootstrap.log, в котором не было ничего о fbtft, но, когда я загружаю систему, ЖК-дисплей включается (пустой экран), и после загрузки я могу запустить "FRAMEBUFFER=/dev/fb8 startx", и он работает