Перейти к содержанию
    

Dump при загрузке драйвера frame buffer для SoC

Добрый день.

Помогите понять почему не запускается модуль графического вывода.

Если коротко, то задача вывести gui на экран с помощью SoC от Altera. Дя этого в Quartus я собрал проект, который использует IP блок Frame Buffer для вывода на экран. Работу HDMI я проверил путем вывода тестовых цветных полос с помощью IP Test Pattern Generator.

Далее собрал ядро linux (пробовал 3 различные версии 5.4.124, 5.10.80 и 5.10.120) и uboot из официальных репозиториев altera. Отредактировал файл dts согласно документации.

https://github.com/altera-opensource/linux-socfpga/blob/socfpga-5.10.120-lts/Documentation/devicetree/bindings/video/altr%2Cvip-fb2.txt

Собрал Debian 11 с помощью debootstrap и добавил в него модули, которые получились при компиляции ядра.

В результате при запуске я получаю следующее

Спойлер

[   12.876800] altvipfb2 ff200000.vip: fb0: altvipfb2 frame buffer device at 0x2c00000+0x300000
[   12.885710] 8<--- cut here ---
[   12.888778] Unhandled fault: imprecise external abort (0x406) at 0x005df1ac
[   12.895731] pgd = 1d6acea4
[   12.898432] [005df1ac] *pgd=3fc9a831
         Starting Avahi mDNS/DNS-SD Stack...
[   12.942275] Console: switching to colour frame buffer device 128x48

при этом в директории /dev появляется устройство fb0, но на экране ни чего не происходит. Но при перезагрузке бывает и вот такое

Спойлер

[   13.716847] 8<--- cut here ---
[   13.719908] Unhandled fault: imprecise external abort (0x406) at 0xb6b3d91d
[   13.726846] pgd = 0e05ecb1
[   13.729550] [b6b3d91d] *pgd=3fcb2831
[   13.733126] Internal error: : 406 [#1] SMP ARM
[   13.737556] Modules linked in: altvipfb2_drv(+) cfbfillrect cfbimgblt cfbcopyarea
[   13.745042] CPU: 1 PID: 119 Comm: systemd-udevd Not tainted 5.10.80-g39a9875d97e8-dirty #12
[   13.753360] Hardware name: Altera SOCFPGA
[   13.757377] PC is at altvipfb2_probe+0x150/0x1d4 [altvipfb2_drv]
[   13.763371] LR is at altvipfb2_probe+0xa8/0x1d4 [altvipfb2_drv]
[   13.769271] pc : [<bf0123a4>]    lr : [<bf0122fc>]    psr: 60010013
[   13.775513] sp : c1e6bbc0  ip : c1d5b127  fp : c1e6bbf4
[   13.780718] r10: c1d5b250  r9 : c1d5b118  r8 : f0823000
[   13.785922] r7 : 00000000  r6 : c1221810  r5 : 00000000  r4 : c1d5b040
[   13.792424] r3 : 00000010  r2 : 00000008  r1 : c1d5b2ac  r0 : c1d5b118
[   13.798936] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
[   13.806057] Control: 10c5387d  Table: 028c004a  DAC: 00000051
[   13.811788] Process systemd-udevd (pid: 119, stack limit = 0xb40f4cdb)
[   13.818293] Stack: (0xc1e6bbc0 to 0xc1e6c000)
[   13.822635] bbc0: 00000000 c1221810 c1e6bbf4 c1d5b040 c1221800 c1e6a000 c1221810 00000000
[   13.830786] bbe0: ef7f7930 00000004 c1e6bc34 c1e6bbf8 bf012198 bf012260 00000000 c1e6bc08
[   13.838934] bc00: c034612c 00000040 00000008 aedf2e13 00000000 c1221810 bf014014 00000000
[   13.847083] bc20: c0dd8a8c bf014014 c1e6bc54 c1e6bc38 c0615e40 bf01202c c1221810 c0dd8a84
[   13.855231] bc40: 00000000 00000000 c1e6bc8c c1e6bc58 c0613620 c0615df4 00000000 bf014014
[   13.863381] bc60: c1e6bc8c c1221810 bf014014 c1221854 bf014014 00000000 c1e6bf30 00000124
[   13.871529] bc80: c1e6bca4 c1e6bc90 c0613d74 c0613538 c1221810 00000000 c1e6bcc4 c1e6bca8
[   13.879677] bca0: c06140a8 c0613d14 00000000 bf014014 c1221810 00000000 c1e6bce4 c1e6bcc8
[   13.887824] bcc0: c0614140 c0613ffc bf014014 c06140b0 c1e6a000 00000000 c1e6bd14 c1e6bce8
[   13.895972] bce0: c06112f8 c06140bc c1e6bd20 c10d0c58 c11ea4b4 aedf2e13 bf014014 c1f81c00
[   13.904119] bd00: 00000000 c0d7e548 c1e6bd24 c1e6bd18 c0612ebc c061127c c1e6bd4c c1e6bd28
[   13.912267] bd20: c061285c c0612e9c bf013388 c0558a50 bf014014 00000000 bf005000 ffffe000
[   13.920415] bd40: c1e6bd64 c1e6bd50 c0614cb0 c0612760 c0d7e548 c0dadc40 c1e6bd7c c1e6bd68
[   13.928563] bd60: c0615d94 c0614c20 c1e6a000 c0dadc40 c1e6bd8c c1e6bd80 bf005028 c0615d50
[   13.936711] bd80: c1e6be04 c1e6bd90 c01021c8 bf00500c c027eadc c0dcd9e8 c1e6bf30 00000124
[   13.944858] bda0: c1e6bddc c1e6bdb0 c0298a1c c02984e4 00000001 c027eadc c1fbedc0 c0297474
[   13.953007] bdc0: c1e6be04 c1e6bdd0 c0297474 c025d1a0 c1e6be14 c1e6bde0 c027eadc aedf2e13
[   13.961155] bde0: c2682900 bf014100 c2682680 00000002 00000010 c2682940 c1e6be2c c1e6be08
[   13.969303] be00: c01bd5f4 c0102174 c1e6be2c c1e6be18 c027ed5c 00000002 c2682900 00000002
[   13.977452] be20: c1e6bf14 c1e6be30 c01bfe30 c01bd590 bf01410c 00007fff bf014100 c01bb968
[   13.985599] be40: c0d02e00 c0b07fdc c0b07ff4 c0b07f84 bf006bfe c0a03758 bf01410c 00000000
[   13.993746] be60: b6f65504 bf0142f4 c1e6a000 bf014100 00000000 c24dd818 bf013429 c1fb0001
[   14.001893] be80: 7fffffff c1e6a000 c1e6bee4 c1e6be98 00000000 c02a1fc8 bf01303c 00000002
[   14.010055] bea0: 00000000 00000000 6e72656b 00006c65 00000000 00000000 00000000 00000000
[   14.010065] bec0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   14.010075] bee0: 00000000 aedf2e13 c1e6bf2c 00000000 c1e6a000 00000011 b6f65504 c0100264
[   14.010085] bf00: c1e6a000 0000017b c1e6bfa4 c1e6bf18 c01c0590 c01bd950 c1e6bf2c 7fffffff
[   14.010095] bf20: 00000000 00000002 b6f66708 f09b4000 f09b4a97 f09b4bc0 f09b4000 0003f510
[   14.010104] bf40: f09f2e30 f09f2c98 f09e4bd4 00003000 000030b0 00001ba4 0000313f 00000000
[   14.010114] bf60: 00000000 00000000 00001b94 00000029 0000002a 00000014 00000000 00000010
[   14.010123] bf80: 00000000 aedf2e13 b6f66708 00000000 36fc6400 0000017b 00000000 c1e6bfa8
[   14.010133] bfa0: c0100244 c01c04d0 b6f66708 00000000 00000011 b6f65504 00000000 b6f6627c
[   14.010143] bfc0: b6f66708 00000000 36fc6400 0000017b 00588920 004c94cf 00587d10 005033d0
[   14.010153] bfe0: befae6f8 befae6e8 b6f5fd49 b6e48932 400f0030 00000011 00000000 00000000
[   14.010156] Backtrace:
[   14.010188] [<bf012254>] (altvipfb2_probe [altvipfb2_drv]) from [<bf012198>] (altvipfb2_plat_probe+0x178/0x234 [altvipfb2_drv])
[   14.010200]  r10:00000004 r9:ef7f7930 r8:00000000 r7:c1221810 r6:c1e6a000 r5:c1221800
[   14.010205]  r4:c1d5b040
[   14.010227] [<bf012020>] (altvipfb2_plat_probe [altvipfb2_drv]) from [<c0615e40>] (platform_drv_probe+0x58/0xa8)
[   14.010238]  r9:bf014014 r8:c0dd8a8c r7:00000000 r6:bf014014 r5:c1221810 r4:00000000
[   14.010250] [<c0615de8>] (platform_drv_probe) from [<c0613620>] (really_probe+0xf4/0x4a4)
[   14.010258]  r7:00000000 r6:00000000 r5:c0dd8a84 r4:c1221810
[   14.010268] [<c061352c>] (really_probe) from [<c0613d74>] (driver_probe_device+0x6c/0xc4)
[   14.010279]  r10:00000124 r9:c1e6bf30 r8:00000000 r7:bf014014 r6:c1221854 r5:bf014014
[   14.010283]  r4:c1221810
[   14.010294] [<c0613d08>] (driver_probe_device) from [<c06140a8>] (device_driver_attach+0xb8/0xc0)
[   14.010300]  r5:00000000 r4:c1221810
[   14.010310] [<c0613ff0>] (device_driver_attach) from [<c0614140>] (__driver_attach+0x90/0x120)
[   14.010318]  r7:00000000 r6:c1221810 r5:bf014014 r4:00000000
[   14.010328] [<c06140b0>] (__driver_attach) from [<c06112f8>] (bus_for_each_dev+0x88/0xc8)
[   14.010336]  r7:00000000 r6:c1e6a000 r5:c06140b0 r4:bf014014
[   14.010345] [<c0611270>] (bus_for_each_dev) from [<c0612ebc>] (driver_attach+0x2c/0x30)
[   14.010353]  r7:c0d7e548 r6:00000000 r5:c1f81c00 r4:bf014014
[   14.010362] [<c0612e90>] (driver_attach) from [<c061285c>] (bus_add_driver+0x108/0x1f0)
[   14.010373] [<c0612754>] (bus_add_driver) from [<c0614cb0>] (driver_register+0x9c/0x134)
[   14.010380]  r7:ffffe000 r6:bf005000 r5:00000000 r4:bf014014
[   14.010391] [<c0614c14>] (driver_register) from [<c0615d94>] (__platform_driver_register+0x50/0x58)
[   14.010396]  r5:c0dadc40 r4:c0d7e548
[   14.010414] [<c0615d44>] (__platform_driver_register) from [<bf005028>] (altvipfb2_driver_init+0x28/0x1000 [altvipfb2_drv])
[   14.010420]  r5:c0dadc40 r4:c1e6a000
[   14.010438] [<bf005000>] (altvipfb2_driver_init [altvipfb2_drv]) from [<c01021c8>] (do_one_initcall+0x60/0x268)
[   14.010453] [<c0102168>] (do_one_initcall) from [<c01bd5f4>] (do_init_module+0x70/0x2a4)
[   14.010462]  r8:c2682940 r7:00000010 r6:00000002 r5:c2682680 r4:bf014100
[   14.010472] [<c01bd584>] (do_init_module) from [<c01bfe30>] (load_module+0x24ec/0x29fc)
[   14.010479]  r6:00000002 r5:c2682900 r4:00000002
[   14.010488] [<c01bd944>] (load_module) from [<c01c0590>] (sys_finit_module+0xcc/0x100)
[   14.010499]  r10:0000017b r9:c1e6a000 r8:c0100264 r7:b6f65504 r6:00000011 r5:c1e6a000
[   14.010503]  r4:00000000
[   14.010513] [<c01c04c4>] (sys_finit_module) from [<c0100244>] (__sys_trace_return+0x0/0x1c)
[   14.010518] Exception stack(0xc1e6bfa8 to 0xc1e6bff0)
[   14.010528] bfa0:                   b6f66708 00000000 00000011 b6f65504 00000000 b6f6627c
[   14.010538] bfc0: b6f66708 00000000 36fc6400 0000017b 00588920 004c94cf 00587d10 005033d0
[   14.010545] bfe0: befae6f8 befae6e8 b6f5fd49 b6e48932
[   14.010553]  r7:0000017b r6:36fc6400 r5:00000000 r4:b6f66708
[   14.010562] Code: e5842068 e5842074 e598501c f57ff04f (e3c554ff)
[   14.010573] ---[ end trace 05422dc535e9528a ]---

и тогда уже устройства в директории /dev нет. Исходные код драйвера вот

https://github.com/altera-opensource/linux-socfpga/blob/socfpga-5.10.120-lts/drivers/video/fbdev/altvipfb2.c

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

Еще есть одна странность, если я правильно понимаю для вывода консоли на экран нужен модуль fbcon. В конфигурации ядра стоит * напротив Framebuffer console support и Map the console to the primary display device, но  при этом если вызвать команду

cat /lib/modules/$(uname -r)/modules.builtin

в списках этого модуля нет.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отвечу сам себе, может кто еще столкнется с подобной проблемой.

Поскольку IP блок Frame Buffer обращается напрямую к ОЗУ по шине f2h_sram, необходимо включить тактирование этой шины в загрузчике u-boot после программирование FPGA и до начала загрузки Linux. В этом случает драйвер загружается и нормально работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...