Автор Тема: Mainline Kernel и HDMI  (Прочитано 1819 раз)

Оффлайн alexlinuxoid

Mainline Kernel и HDMI
« : Март 09, 2016, 09:48:45 am »
Всем привет.
Экспериментирую со сборкой новых ядер. В git-е не так давно появилась поддержка "из коробки" orange pi plus  (dts) - он тоже на H3 проце.  Соответственно нужен новый u-boot - тут проблем нет, поддержка есть.
ОК. собираем, компиляем - u-boot работает, через ttl общается, идет загрузка ядра, ось загружает (arch). Одного только добиться не смог - вывод картинки через HDMI.
Может проблема в ядре, может нужно какие-то параметры ядру u-boot'ом передать.
Поддержку framebuffer'а при конфигурации включал. Опция конфигурации ядра sunxi_defconfig.
Прошу помощи знающих.
p.s. на legacy ядрах все работало аж бегом, даже разрешение фреймбуфера выставлялось 800x480 без проблем :)
p.s.s используется 7 дюймовый экран 800x480 (в принципе любой вход поддерживает, вплоть до full hd).

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 381
  • Лайков: 99
  • Карма: +13/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: Mainline Kernel и HDMI
« Ответ #1 : Март 09, 2016, 12:07:11 pm »
В git-е не так давно появилась поддержка "из коробки" orange pi plus  (dts) - он тоже на H3 проце.
Ссылочку бы на то что высобираете.

Оффлайн alexlinuxoid

Re: Mainline Kernel и HDMI
« Ответ #2 : Март 09, 2016, 01:11:43 pm »
Это официальный git  linux-next
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 381
  • Лайков: 99
  • Карма: +13/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: Mainline Kernel и HDMI
« Ответ #3 : Март 09, 2016, 01:40:44 pm »
Так это не на git ( под ним обычно подразумевают github )
Это kernel.org

Оффлайн alexlinuxoid

Re: Mainline Kernel и HDMI
« Ответ #4 : Март 09, 2016, 02:00:26 pm »
Так это не на git ( под ним обычно подразумевают github )
Это kernel.org
https://ru.wikipedia.org/wiki/Git
Но это отношения к делу не имеет.
Инструкция моя по сборке:

U-Boot
Выкачиваем нужную ветку:
git clone git://git.denx.de/u-boot-sunxi.git
Конфигурируем:
make CROSS_COMPILE=arm-linux-gnueabihf- orangepi_pc_defconfig
Компилируем:
make CROSS_COMPILE=arm-linux-gnueabihf- -j6

Очистка от старого загрузчика:
sudo dd if=/dev/zero of=/dev/*карта_памяти* bs=512 seek=1 count=2047

Установка нового загрузчика:
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=512 seek=16

Ок. с загрузчиком готово, переходим к ядру.

Выкачиваем:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Конфигурим:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig
Собираем:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage dtbs modules -j7
Копируем собранные модули в одну папку:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=./output  modules_install

Снова к загрузчику.
На загрузочном разделе создаем файл boot.cmd, в него прописываем:
fatload mmc 0 0x46000000 zImage
fatload mmc 0 0x49000000 <board>.dtb
setenv bootargs console=ttyS0,115200 [earlyprintk] root=/dev/mmcblk0p<partition> rootwait panic=10 ${extra}
bootz 0x46000000 - 0x49000000
Сохраняем, преобразовываем в бинарник (нужен пакет uboot-utils):
mkimage -C none -A arm -T script -d boot.cmd boot.scr
Все готово к загрузке. Вывод с такими параметрами идет только через serial console (TTL).

Оффлайн alexlinuxoid

Re: Mainline Kernel и HDMI
« Ответ #5 : Март 09, 2016, 02:05:31 pm »
Еще забыл добавить zImage и нужный файл dts находятся в папке с собранным ядром в подкаталогах /arch/arm/boot/zImage и /arch/arm/boot/dts/sun8i-**.dts

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 381
  • Лайков: 99
  • Карма: +13/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: Mainline Kernel и HDMI
« Ответ #6 : Март 09, 2016, 02:34:02 pm »
При сборке ядра между пунктами конфигурация и сборка запускаем
make menuconfig
и идем смотреть какие выбраны видео драйвера для сборки и удивляемся - никаких.
Нет драйверов дисплея в этих исходниках. 

Оффлайн alexlinuxoid

Re: Mainline Kernel и HDMI
« Ответ #7 : Март 09, 2016, 02:46:19 pm »
При сборке ядра между пунктами конфигурация и сборка запускаем
make menuconfig
и идем смотреть какие выбраны видео драйвера для сборки и удивляемся - никаких.
Нет драйверов дисплея в этих исходниках.

Умышленно упустил ненужное на данный момент, в дефолтной конфигурации уже включены драйвера на фреймбуфер.
Как сказано в официальной инструкции (http://linux-sunxi.org/Mainline_Kernel_Howto):

simplefb

While a KMS driver still is being worked on, a quick and easy way to get a display up on a HDMI monitor is to build (upcoming) U-Boot with sunxi cfb console support.
The kernel side support can be enabled through:
simplefb

While a KMS driver still is being worked on, a quick and easy way to get a display up on a HDMI monitor is to build (upcoming) U-Boot with sunxi cfb console support.
The kernel side support can be enabled through:
 Device Drivers --->
And then:
 Graphics support --->
Followed by:
 Frame buffer Devices --->
Enabled frame buffer devices, and descend into that menu:
  • Support for frame buffer devices --->

Then enable simplefb:
  • Simple framebuffer support

Then return to Graphics support and select:
Console display driver support --->
And check:
  • Framebuffer Console support


И еще:
Don't forget to change your console in your boot.cmd/boot.scr to console=tty1 to enable the simple framebuffer driver.
Но вот это мне не помогает почему-то.

Оффлайн alexlinuxoid

Re: Mainline Kernel и HDMI
« Ответ #8 : Март 09, 2016, 02:50:16 pm »
While a KMS driver still is being worked on, a quick and easy way to get a display up on a HDMI monitor is to build (upcoming) U-Boot with sunxi cfb console support.
Может нужно копать в сторону u-boot'а?

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 381
  • Лайков: 99
  • Карма: +13/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: Mainline Kernel и HDMI
« Ответ #9 : Март 09, 2016, 02:52:18 pm »
А что может фреймбуфер без поддержки железа?
Разве что по VNC работать.

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 381
  • Лайков: 99
  • Карма: +13/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: Mainline Kernel и HDMI
« Ответ #10 : Март 09, 2016, 02:58:53 pm »
U-Boot у тебя выводит что ни будь на экран?

UPD: в u-boot тоже не нашел видео драйверов.
« Последнее редактирование: Март 09, 2016, 03:09:57 pm от AlDemin »

Оффлайн alexlinuxoid

Re: Mainline Kernel и HDMI
« Ответ #11 : Март 09, 2016, 03:09:12 pm »
U-Boot у тебя выводит что ни будь на экран?
Нет, только на то самое ttyS0, полный процесс загрузки. Сканирует USB, находит устройства, ядро грузит и дальше вся система без проблем загружается. Но только не на HDMI дисплей... При включении вывода на console=tty1 соответственно дальше чем kernel loading  ничего не видно.

Оффлайн onibi

Re: Mainline Kernel и HDMI
« Ответ #12 : Март 11, 2016, 09:36:57 pm »
А на других дистрибутивах hdmi работает? А то сдаётся мне что я нашёл брата по несчастью с неработающим hdmi.

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 381
  • Лайков: 99
  • Карма: +13/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: Mainline Kernel и HDMI
« Ответ #13 : Март 12, 2016, 08:40:26 am »
Другие дистрибутивы все на ядрах 3.4.хх там все работает.
Когда ещё видео драйвер sunxi-disp2 будет в свременном ядре.

Оффлайн alexlinuxoid

Re: Mainline Kernel и HDMI
« Ответ #14 : Март 12, 2016, 11:04:39 am »
А на других дистрибутивах hdmi работает? А то сдаётся мне что я нашёл брата по несчастью с неработающим hdmi.
Все прекрасно работает. И даже более того - на свежем u-boot'е legacy ядро загружается и картинку на hdmi идет. Так что проблема тут судя по всему со стороны ядра или же всетаки необходимо передать ему какие-то параметры при запуске (но какие?).
Кстати https://github.com/jwrdegoede/linux-sunxi/tree/sunxi-wip здесь есть поддержка в device tree уже orangepi pc, даже usb работают  ;D. На этом пока все успехи.