The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Настройка фреймбуфера для видеокарты NVIDIA (linux framebuffer xfree86 video driver console)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, framebuffer, xfree86, video, driver, console,  (найти похожие документы)
From: alex k <kmxb@hotbox.ru> Newsgroups: forum.opennet.ru Date: Mon, 17 Jun 2003 13:01:37 +0000 (UTC) Subject: Настройка фреймбуфера для видеокарты NVIDIA Оригинал: http://kmxb.narod.ru/rivafb1.html Настройка фреймбуфера для видеокарты NVIDIA немного введения Сразу оговорюсь, что не буду писать о всех плюсах и минусах использования framebuffer. Только о нескольких. Просто при редактировании программ, конфигов, отладке и т.п. для меня самый главный плюс, который перевешивает все - это большой размер консоли (например: 100x37). Но, к сожалению, за удобство приходится платить. В принципе, минусов при использовании rivafb всего несколько. 1. Вывод на экран существенно замедляется, но нам ведь не в игрушки играть :), кроме того видео смотреть можно безо всяких тормозов. 2. Пока невозможно использовать совместно rivafb и nvidia drivers для X - либо наглухо виснет, либо пропадает изображение. Не знаю как сейчас обстоят дела, уже год как не проверял, но, судя по крикам из форумов - все без изменений. Так что приходится выбирать - либо rivafb в консоли, либо nvidia в иксах. 3. В ядрах 2.4 все работает на ок. В ветке 2.5 не так давно заработало тоже, однако есть небольшие проблемы с кириллицей. Вот, кажется, и все. теперь, собственно, настройка. Использовать framebuffer можно либо встроенным в ядро, либо подгружая как модуль. Если включаете в ядро, то для достижения необходимого разрешения и частоты экрана достаточно добавить в lilo.conf строчку типа append="video:rivafb:..." например вот так: # Linux bootable partition config begins image = /boot/vmlinuz append="video=rivafb:xres:800,yres:600,pixclock:17761, left_margin:152,right_margin:32,upper_margin:27,lower_margin:1, hsync_len:64,vsync_len:3,bits_per_pixel:32" root = /dev/hda2 label = Linux> read-only # Linux bootable partition config ends Сразу оговорюсь, что вышеописанные значения расчитаны для режима 800x600, 85Гц и 32bit, проверены на видеокартах GeForce256, TNT2, GeForce2 MX400 (GeForce4 - пока не поддерживается, во всяком случае - у меня глючит). Рассчитать режимы каждый сам сможет под свои разрешение и частоту, внимательно прочитав framebuffer.txt. Чтоб не томить - вот выдержка из данного документа: 6. Converting XFree86 timing values info frame buffer device timings -------------------------------------------------------------------- An XFree86 mode line consists of the following fields: "800x600" 50 800 856 976 1040 600 637 643 666 < name > DCF HR SH1 SH2 HFL VR SV1 SV2 VFL The frame buffer device uses the following fields: - pixclock: pixel clock in ps (pico seconds) - left_margin: time from sync to picture - right_margin: time from picture to sync - upper_margin: time from sync to picture - lower_margin: time from picture to sync - hsync_len: length of horizontal sync - vsync_len: length of vertical sync 1) Pixelclock: xfree: in MHz fb: in picoseconds (ps) pixclock = 1000000 / DCF 2) horizontal timings: left_margin = HFL - SH2 right_margin = SH1 - HR hsync_len = SH2 - SH1 3) vertical timings: upper_margin = VFL - SV2 lower_margin = SV1 - VR vsync_len = SV2 - SV1 Good examples for VESA timings can be found in the XFree86 source tree, under "xc/programs/Xserver/hw/xfree86/doc/modeDB.txt". Если файла modeDB.txt у вас под рукой не найдется, можно заглянуть в /etc/fb.modes, но если и там нет нужного вам режима, можно еще сделать так: временно подредактировать XF86Config, чтобы в X получить нужный вам режим; потом запускаете xvidinfo, и записываете текущие значения HFL, HR, SH1 и т.д.; потом вычисляете... потом подставляете. Еще есть специальные программы-калькуляторы, но я ими не пользовался. Выбор за вами. Наконец, специально для тех, кто будет использовать rivafb как модуль. Вышеуказанная строка append="..." в lilo.conf уже не работает, приходится действовать в лоб, а именно - перед сборкой ядра и после наложения необходимых патчей подредактировать один файл в исходниках ядра (в случае kernel-2.5.xx два файла): 1. kernel-2.4.xx /usr/src/linux-2.4.xx/drivers/video/riva/fbdev.c ищем такие строки: static struct fb_var_screeninfo rivafb_default_var = { xres: 640, yres: 480, xres_virtual: 640, yres_virtual: 480, xoffset: 0, yoffset: 0, bits_per_pixel: 8, grayscale: 0, red: {0, 6, 0}, green: {0, 6, 0}, blue: {0, 6, 0}, transp: {0, 0, 0}, nonstd: 0, activate: 0, height: -1, width: -1, accel_flags: 0, pixclock: 39721, left_margin: 40, right_margin: 24, upper_margin: 32, lower_margin: 11, hsync_len: 96, vsync_len: 2, sync: 0, vmode: FB_VMODE_NONINTERLACED }; и меняем значения переменных на нужные: static struct fb_var_screeninfo rivafb_default_var = { xres: 800, yres: 600, xres_virtual: 800, yres_virtual: 600, xoffset: 0, yoffset: 0, bits_per_pixel: 32, grayscale: 0, red: {0, 6, 0}, green: {0, 6, 0}, blue: {0, 6, 0}, transp: {0, 0, 0}, nonstd: 0, activate: 0, height: -1, width: -1, accel_flags: 0, pixclock: 17761, left_margin: 152, right_margin: 32, upper_margin: 27, lower_margin: 1, hsync_len: 64, vsync_len: 3, sync: 0, vmode: FB_VMODE_NONINTERLACED }; 2. в kernel 2.5.xx аналогично правим этот же и еще один файл: /usr/src/linux-2.5.xx/drivers/video/vfb.c static struct fb_var_screeninfo vfb_default __initdata = { .xres = 800, .yres = 600, .xres_virtual = 800, .yres_virtual = 600, .bits_per_pixel = 32, .red = { 0, 8, 0 }, .green = { 0, 8, 0 }, .blue = { 0, 8, 0 }, .activate = FB_ACTIVATE_TEST, .height = -1, .width = -1, .pixclock = 17761, .left_margin = 152, .right_margin = 32, .upper_margin = 27, .lower_margin = 1, .hsync_len = 64, .vsync_len = 3, .vmode = FB_VMODE_NONINTERLACED, }; Осталось только откомпилировать ядро, не забыть записать в /etc/rc.modules: modprobe rivafb modprobe fbcon и перезагрузиться. Успехов! Еще забыл сказать, что в случае ядра 2.5 русские шрифты приходится загружать на каждую консоль отдельно, т.е. говорить setfonts Cyr_a8x16, например. Еще не разобрался, почему так. Если кто знает, напишите пару строк, буду очень благодарен. last update 2003.06.17

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, NOP (?), 03:41, 03/11/2003 [ответить]  
  • +/
    setfont po moemu imeet opciu -a - wse konzoli, no eto q dawno upotreblql, mojet bit oshibaius
     
  • 2, sidor (?), 09:14, 23/04/2004 [ответить]  
  • +/
    >Обсуждение статьи тематического каталога: Настройка фреймбуфера для видеокарты NVIDIA (linux framebuffer xfree86
    >video driver console)
    >
    >Ссылка на текст статьи: http://www.opennet.ru/base/X/riva_fb.txt.html

    По поводу траблов со шрифтами: достаточно в /etc/bashrc прописать setfont xxxxxx

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру