LINUX.ORG.RU

Сообщения Rupricht

 

Порядок USB контроллеров может смениться при перезагрузке

 , , ,

На материнской плате есть два идентичных USB-контроллера (Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller). При перезагрузке, не известно какой из них будет первым, а какой вторым. Это важно, компьютер используется как хост для виртуалок, куда пробрасываются USB-ключи. Так как есть одинаковые ключи - проброс делается через номер порта. Проброс USB в proxmox - то еще приключение, но сейчас интересует, можно ли как-то зафиксировать порядок контроллеров. На сколько я знаю, PCI-устройства работают через plug-and-play, т.е. кто первый встал - того и тапки. Может кто сталкивался с такой проблемой?

Вот вывод lspci:

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:02.0 VGA compatible controller: Intel Corporation IvyBridge GT2 [HD Graphics 4000] (rev 09)
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
00:16.0 Communication controller: Intel Corporation 7 Series/C216 Chipset Family MEI Controller #1 (rev 04)
00:16.3 Serial controller: Intel Corporation 7 Series/C210 Series Chipset Family KT Controller (rev 04)
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (Lewisville) (rev 04)
00:1a.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller (rev 04)
00:1d.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a4)
00:1f.0 ISA bridge: Intel Corporation Q77 Express Chipset LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 7 Series/C216 Chipset Family SMBus Controller (rev 04)
Rupricht
()

YOSYS и ПЛИС от GOWIN

 ,

Здравствуйте. Приобрел недавно платку TangNano9k с ПЛИС от фирмы GOWIN. Захотелось что-нибудь на нее навериложить, тем более она поддерживается опенсорсным YOSYS. По традиции, начал с моргания светодиодом. Все получилось, и синтез и прошивка, все просто работает, однако, захотелось чего-то посложнее светодиода, например вывод изображения через HDMI, который уже распаян на плате. Собственно вопрос: как в YOSYS использовать специализированные блоки ПЛИС, например PLL, который необходим для HDMI?

Rupricht
()

Conky тормозит после обновления.

 , , ,

Здравствуйте. Хотелось бы услышать мнение арчеводов и арчелюбов по поводу моей проблемы. После очередного pacman -Suy, внезапно conky стал работать крайне медленно, порядка одного обновления за 10 секунд. Проведя некоторые эксперименты, было установлено, что замедления возникают при использовании lua-функций, чем больше в конфиге вызовов функций, не важно каких, тем медленнее работает conky. Версия conky роли не играет, пробовал более старую с тем же результатом, и вообще дело скорее всего в библиотеках. Багрепорт в conky написал, но не уверен что проблема в нем. Также пробовал запускать conky в контейнере systemd с установленной убунту, там все нормально.

Тестовый конфиг:

conky.config = {
	background = false,
	own_window = true,
	own_window_class = 'Conky',
    own_window_type = 'desktop',
	own_window_transparent = false,
	own_window_argb_visual = true,
    own_window_argb_value = 200,
	own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',
	default_color = 'white',
	default_shade_color = 'black',
	default_outline_color = 'blue',
	alignment = 'mm',
	gap_x = 10,
	gap_y = 10,
	no_buffers = false,
	xinerama_head = 1,
	double_buffer = true,
	use_xft=true,
	font='Ubuntu mono:size=16',
	update_interval=1.0,
	lua_load='~/.config/conky/scripts/conky_lua_scripts_test.lua',
	maximum_width=1200,
	minimum_width=1200,
};
conky.text = [[
CPU00: ${lua_parse format %3.0f ${cpu cpu1}}% ${cpubar cpu1 16,230} \
CPU08: ${lua_parse format %3.0f  ${cpu cpu9}}% ${cpubar cpu9 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 1} 1}${voffset -4} ${font Mono:size=8}${freq 1} МГц${font}${voffset -5}${color}
CPU01: ${lua_parse format %3.0f ${cpu cpu2}}% ${cpubar cpu2 16,230} \
CPU09: ${lua_parse format %3.0f ${cpu cpu10}}% ${cpubar cpu10 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 2} 2}${voffset -4} ${font Mono:size=8}${freq 2} МГц${font}${voffset -5}${color}
CPU02: ${lua_parse format %3.0f ${cpu cpu3}}% ${cpubar cpu3 16,230} \
CPU10: ${lua_parse format %3.0f ${cpu cpu11}}% ${cpubar cpu11 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 3} 3}${voffset -4} ${font Mono:size=8}${freq 3} МГц${font}${voffset -5} ${color}
CPU03: ${lua_parse format %3.0f ${cpu cpu4}}% ${cpubar cpu4 16,230} \
CPU11: ${lua_parse format %3.0f ${cpu cpu12}}% ${cpubar cpu12 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 4} 4}${voffset -4} ${font Mono:size=8}${freq 4} МГц${font}${voffset -5} ${color}
CPU04: ${lua_parse format %3.0f ${cpu cpu5}}% ${cpubar cpu5 16,230} \
CPU12: ${lua_parse format %3.0f ${cpu cpu13}}% ${cpubar cpu13 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 5} 5}${voffset -4} ${font Mono:size=8}${freq 5} МГц${font}${voffset -5} ${color}
CPU05: ${lua_parse format %3.0f ${cpu cpu6}}% ${cpubar cpu6 16,230} \
CPU13: ${lua_parse format %3.0f ${cpu cpu14}}% ${cpubar cpu14 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 6} 6}${voffset -4} ${font Mono:size=8}${freq 6} МГц${font}${voffset -5} ${color}
CPU06: ${lua_parse format %3.0f ${cpu cpu7}}% ${cpubar cpu7 16,230} \
CPU14: ${lua_parse format %3.0f ${cpu cpu15}}% ${cpubar cpu15 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 7} 7}${voffset -4} ${font Mono:size=8}${freq 7} МГц${font}${voffset -5} ${color}
CPU07: ${lua_parse format %3.0f ${cpu cpu8}}% ${cpubar cpu8 16,230} \
CPU15: ${lua_parse format %3.0f ${cpu cpu16}}% ${cpubar cpu16 16,230} ${color 777799}${lua_bar 16,128 fbar ${freq 8} 8}${voffset -4} ${font Mono:size=8}${freq 8} МГц${font}${voffset -5} ${color}
]];

conky_lua_scripts_test.lua:

function conky_format( format, number )
    return string.format( format, conky_parse( number ) )
end


function conky_fbar(value,n_str)
	if ks==nil then ks={ {10,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}} end
	local f0=2000
	local fmax=4300
	local fi=tonumber(conky_parse(value))
	if fi<f0 then fi=f0 end
	if fi>fmax then fi=fmax end
	local p=100*((fi-f0)/(fmax-f0))
	local n=tonumber(n_str)
	p=(p+ks[1][n])/2
	ks[1][n]=p
	return p
end

Rupricht
()

Нумерация гипертрэдинговых ядер.

 ,

Господа любители и пользователи процессоров intel c включенным hypertreading, скиньте сюда вывод lscpu -e. Просто возникла мысль, что нумерация «виртуальных» ядер может отличаться для процессоров intel и AMD.
Вот вывод для ryzen:

lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
0   0    0      0    0:0:0:0       yes
1   0    0      0    0:0:0:0       yes
2   0    0      1    1:1:1:0       yes
3   0    0      1    1:1:1:0       yes
4   0    0      2    2:2:2:0       yes
5   0    0      2    2:2:2:0       yes
6   0    0      3    3:3:3:0       yes
7   0    0      3    3:3:3:0       yes
8   0    0      4    4:4:4:1       yes
9   0    0      4    4:4:4:1       yes
10  0    0      5    5:5:5:1       yes
11  0    0      5    5:5:5:1       yes
12  0    0      6    6:6:6:1       yes
13  0    0      6    6:6:6:1       yes
14  0    0      7    7:7:7:1       yes
15  0    0      7    7:7:7:1       yes

Rupricht
()

Вызов функций с различным числом аргументов по адресу.

 ,

Призываю любителей и пользователей языка Ц.
Допустим, есть функции:

int a(int arg1, int arg2)
{
    ...
}

int b(int arg1, int arg2,int arg3)
{
    ...
}
Как написать такую функцию, которая могла бы вызывать функции по указателю, но с разным числом аргументов? Типа такого:
call_function(a,2,arg1,arg2);
call_function(b,3,arg3,arg4,arg5);
Единственное, что мне приходит на ум - это сделать switch по кол-ву аргументов и для каждого количества использовать свой тип указателя. Может есть какие-нибудь директивы компилятора, прагмы, аналог arguments из javascript или еще чего?

Rupricht
()

Touchscreen и Linux

 , , ,

У меня есть cubieboard2 и cubiescreen к ней. Существуют очень кривые патчи к ядру 3.4 с проприетарным блобом и они кое-как работают. Решил написать свои драйверы к mainline-kernel и вот что получилось: https://github.com/y-salnikov/cubieboard2-cubiescreen . Все работает, естественно, без аппаратного ускорения и OpenGL ES.
Однако ситуация с тачскрином не такая простая - нужно фильтровать входные данные, определять двойной клик и прочие жесты. В самих драйверах, на примере которых я писал свой, этого не сделано. Логично предположить, что это должно выполняться в иксах, а точнее в evdev, но он передает все события как есть и эмулирует мышь. Конечно, все эти проблемы решены в драйверах для тачпадов, но я не нашел ни одного, который мог бы переключиться в режим абсолютного позиционирования.
Еще одной проблемой является отсутствие вменяемых WM/DE для работы с тачскринами небольшого размера, а такие монстры, как гном3, которые вроде как под них и заточены - требуют аппаратного ускорения. Enlightenment в режиме планшета подошел бы, будь он работоспособен. А нужно то совсем не много - примерно как в андройде, чтобы не закрывать окна пытаясь попасть на крестик в заголовке окна на тачскрине с низким разрешением сенсора.
Что сказать-то хотел: Как вообще обстоят дела с линуксом на подобных девайсах или убунтофонах? Может это только у меня такие проблемы?

Rupricht
()

Лаги USB.

 , , ,

Есть одно устройство: вот это, оно нормально работало в свое время, но после замены мат.платы на ASUS M5A97-R2.0, устройство стало работать не стабильно. Дело в том, что оно содержит небольшой FIFO и «стримит» данные со скоростью примерно 12МБайт/c, но как только FIFO переполняется — устройство останавливается (так и задумано). На старой материнке переполнения не возникали, а вот на новой иногда возникают.
Я подумал, что при использовании bulk endpoint'ов USB-протокол и не гарантирует отсутствие задержек, и написал тестовую программку для передачи через isochronous endpoint, вот тут.
Проверял на нескольких компьютерах и везде, даже на стареньком ноутбуке происходит устойчивая передача данных на скорости 24МБайта/с, кроме моего, где FIFO устройства переполняется сразу.
Тогда я подумал, что дело в кривом USB контроллере, причем их там 2(один для USB3.0), и поставил PCI плату с еще одним. Результат тот же. И скорее всего линукс тут даже не причем, так как в винде ситуация еще хуже.
Если кто захочет протестировать, то понадобиться какое-нибудь устройство на CY7C68013A, например китайский клон логического анализатора saleae logic.
Собственно вопрос, никто не сталкивался? Куда копать?

Rupricht
()

IronSeed

Недавно узнал, что код игры IronSeed выложили под GPL. wiki. Так как код был написан в далеком 1994 году, он содержит много низкоуровневых штук и ассемблерных вставок, да и на писан он на турбо паскале. Хотя игра прекрасно работает в dosbox'e, я решил сделать нативную версию. Написал костылей, поправил исходники, убрал ассемблерную магию и вот, что получилось: https://github.com/y-salnikov/ironseed_fpc . Для компиляции нужен fpc, SDL-1.2.xx и SDL-mixer. Конечно, появились новые баги, и внезапные вылеты. Хотелось бы найти людей, помнящих dos и паскаль, готовых прислать пару патчей. И да, оно скорее всего не нужно.

Rupricht
()

[gentoo][multilib-overlay] RIP?

 

Господа гентушники, есть ли какая альтернатива multilib? Держу его ради пары бинарников, но что-то он давно не обновлялся, последний комит был в мае. В текущей версии есть баг со сборкой libxml2, о чем я написал в багзиллу, но никто не подтвердил. Вот я и хочу спросить, может multilib давно уже RIP и «ненужен»?

Rupricht
()

[C] Asm 2 C

 

Здравствуйте. Допустим есть исходник на ассемблере либо на С с ассемблерными вставками (x86 разумеется). Есть ли какой-нибудь хитрый скрипт, который преобразовывал бы его в чистый С, ну там заменить регистры переменными, команды функциями и т.п? В гугле находил только коммерческие реализации.

Rupricht
()

[gentoo x86_64][crossdev][mingw32] Не собирается GCC.

 

Пытаюсь собрать mingw32 через crossdev crossdev -t i686-pc-mingw32. В логах получаю вот это:

/bin/sh ../../../libtool --tag=CC --mode=link /var/tmp/cross/i686-pc-mingw32/portage/cross-i686-pc-mingw32/gcc-4.4.4-r1/work/gcc-4.4.4/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/var/tmp/cross/i686-pc-mingw32/portage/cross-i686-pc-mingw32/gcc-4.4.4-r1/work/gcc-4.4.4/host-x86_64-unknown-linux-gnu/gcc/ -B/usr/x86_64-unknown-linux-gnu/bin/ -B/usr/x86_64-unknown-linux-gnu/lib/ -isystem /usr/x86_64-unknown-linux-gnu/include -isystem /usr/x86_64-unknown-linux-gnu/sys-include  -m32 -W -Wall -Wmissing-declarations -Wwrite-strings -Wmissing-prototypes -Wno-long-long  -fexceptions -fasynchronous-unwind-tables -g -O2    -m32 -module -version-info 0:0:0 -no-undefined -m32 -o libgjsmdssi.la -rpath /usr/lib/../lib32/gcj-4.4.4-10 -module -version-info 0:0:0 -no-undefined -avoid-version gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.lo gnu_javax_sound_midi_dssi_DSSISynthesizer.lo ../../../native/jni/classpath/jcl.lo -ljack 
libtool: link: /var/tmp/cross/i686-pc-mingw32/portage/cross-i686-pc-mingw32/gcc-4.4.4-r1/work/gcc-4.4.4/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/var/tmp/cross/i686-pc-mingw32/portage/cross-i686-pc-mingw32/gcc-4.4.4-r1/work/gcc-4.4.4/host-x86_64-unknown-linux-gnu/gcc/ -B/usr/x86_64-unknown-linux-gnu/bin/ -B/usr/x86_64-unknown-linux-gnu/lib/ -isystem /usr/x86_64-unknown-linux-gnu/include -isystem /usr/x86_64-unknown-linux-gnu/sys-include  -m32 -shared  .libs/gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.o .libs/gnu_javax_sound_midi_dssi_DSSISynthesizer.o ../../../native/jni/classpath/.libs/jcl.o   -ljack  -m32 -m32 -m32   -Wl,-soname -Wl,libgjsmdssi.so -o .libs/libgjsmdssi.so
/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.4/../../../../x86_64-pc-linux-gnu/bin/ld: skipping incompatible /usr/lib/libjack.so when searching for -ljack
/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.4/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -ljack
collect2: ld returned 1 exit status
make[8]: *** [libgjsmdssi.la] Ошибка 1
Внимание вопрос: Зачем gcc нужен jack?
Ставил jack, даже с флагом lib32 из оверлэя «multilib» - не помогает. Такое ощущение, что на переменную USE оно не реагирует, пробовал "-gcj -java -jack".
Никто не сталкивался?

Rupricht
()

RSS подписка на новые темы